Következő Előző Tartalom

6. Rakjuk össze őket: lemez(ek) elkészítése.

Most már van kerneled és tömörített gyökér állományrendszered. Ha indító/gyökér lemezt készítesz, nézd meg a méretüket, és bizonyosodj meg arról, hogy rá fognak-e együtt férni egy lemezre. Ha két lemezes indító+gyökér készletet készítesz, nézd meg a gyökér állományrendszert, hogy ráfér-e egyetlen lemezre.

El kell döntened, hogy LILO-t használsz-e a kernel indítólemez betöltéséhez. Másik megoldás lehet a kernel közvetlenül egy lemezre másolása, és LILO nélküli indítása. A LILO használatának előnye a kernel számára átadható paraméterekben rejlik, amik esetleges hardver inicializálásokhoz szükségesek lehetnek (nézd meg az /etc/lilo.conf állományt a rendszereden. Ha tartalmaz olyan sorokat, amikben szerepel az ``append=...'', akkor valószínűleg szükséged lesz erre a lehetőségre.). A LILO használatának hátránya, hogy megbonyolítja az indítólemez készítését, és egy kicsit több helyet foglal. Egy kis elkülönített állományrendszert kell összeállítanod, amit kernel állományrendszernek hívunk, és ide kell a kernelt, és néhány a LILO számára szükséged állományt másolnod.

Ha LILO-t fogsz használni, olvasd tovább, ha a kernelt közvetlenül a lemezre fogod másolni, akkor ugorj tovább a Without using LILO fejezetre.

6.1 A kernel másolása LILO-val. .

Az első teendő, hogy létre kell hozni egy kis konfigurációs állományt a LILO számára. Így kell kinéznie:


        boot      =/dev/fd0
        install   =/boot/boot.b
        map       =/boot/map
        read-write
        backup    =/dev/null
        compact
        image     = KERNEL
        label     = Bootdisk
        root      =/dev/fd0

A paraméterek magyarázatához nézd meg a LILO felhasználói dokumentációját. Valószínűleg szeretnéd a merevlemezed /etc/lilo.conf állományából hozzáadni az append=...-t tartalmazó sorokat ehhez az állományhoz.

Mentsd el ezt az állományt bdlilo.conf néven.

Most létre kell hoznod egy kis állományrendszert, amit kernel állományrendszernek hívunk, hogy megkülönböztethessük a gyökér állományrendszertől.

Először meg kel nézni, hogy milyen nagynak kell lennie ennek az állományrendszernek. Vedd a kerneled blokkokban vett méretét (ezt a méretet mutatja a ``ls -l KERNEL'', amit 1024-el kell elosztani, majd felfele kerekíteni), és adj hozzá 50-et. Ötven blokk körülbelül elég lesz az indode-k és néhány egyéb állomány számára. Pontosan is kiszámíthatod ezt a számot, ha szeretnéd, vagy egyszerűen használj csak 50-et. Ha két lemezes készletet készítesz, felül is becsülheted a szükséges helyet, mivel az első lemezen csak a kernelt fogod úgyis tárolni. Ezt a számot KERNEL_BLOKK-nak hívjuk.

Helyezz egy lemezt a meghajtóba (az egyszerűség kedvéért feltételezzük, hogy ez az eszköz a /dev/fd0), és készíts rajta ext2 kernel állományrendszert:

        mke2fs -i 8192 -m 0 /dev/fd0 KERNEL_BLOKK

Az ``-i 8192'' mondja meg, hogy egy inode legyen minden 8192 byte-on. Ezután beillesztheted az állományrendszert, távolítsd el a lost+found alkönyvtárat és hozz létre a dev és a boot alkönyvtárakat a LILO számára:

        mount /dev/fd0 /mnt
        rm -rf /mnt/lost+found
        mkdir /mnt/{boot,dev}

Ezután hozd létre a /dev/null és a /dev/fd0 eszközöket. Ahelyett, hogy nekiállnál eszközszámokat keresni, egyszerűen másold át őket a merevlemezedről -R:

        cp -R /dev/{null,fd0} /mnt/dev

A LILO-nak szüksége van egy másolatra az indító betöltőjéhez, a boot.b-re, amit lemásolhatsz a merevlemezedről, amit általában a /boot könyvtárban találsz.

        cp /boot/boot.b /mnt/boot

Végül másold át az előző fejezetben elészített LILO konfigurációs állományt a kerneleddel együtt. Mindkettőt a gyökér alkönyvtárba teheted:

        cp bdlilo.conf KERNEL /mnt

A LILO-hoz szükséges összes állomány most már a kernel állományrendszeren van, tehát készen állsz rá, hogy lefuttasd. A LILO-nak az -r paraméterrel mondhatjuk meg, hogy más gyökérrel telepítse az indító betöltőt:

        lilo -v -C bdlilo.conf -r /mnt

A LILO-nak hiba nélkül le kell futnia, miután a kernel állományrendszernek valahogy így kell kinéznie:


total 361
  1 -rw-r--r--   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:22 dev/
358 -rw-r--r--   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 -rw-r--r--   1 root     root         3708 Jan 10 07:22 boot.b
  4 -rw-------   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw-r-----   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw-r--r--   1 root     root       1,   3 Jan 10 07:22 null

Ne aggódj, ha az állományok méretei egy kicsit eltérnek nálad.

Most hagyd a lemezt a meghajtóban, és folytasd a Setting the ramdisk word fejezettel.

6.2 A Kernel másolása LILO nélkül.

Ha nem LILO-t használsz, a dd utasítással másold át a kernelt az indítólemezre:

        % dd if=KERNEL of=/dev/fd0 bs=1k
        353+1 records in
        353+1 records out

Ebben a példában a dd 353 teljes rekordot + 1 részleges rekordot írt, így a kernel a lemez első 354 blokkját foglalja el. Ezt a számot KERNEL_BLOKK-nak hívjuk, és a következő fejezetben használni fogjuk.

Végül állítsd be a gyökér eszköznek magát a lemezt, majd állítsd be a gyökeret írható/olvasható betölthetőre:

        rdev /dev/fd0 /dev/fd0
        rdev -R /dev/fd0 0

Légy óvatos, a második rdev utasításnál nagybetűt használj az -R kapcsoló esetén.

6.3 Memórialemez szó beállítása.

A kernel image belsejében van a memórialemez szó, ami megadja, hogy hol található a gyökér állományrendszer, több más paraméterrel együtt. A szó az rdev utasítással érhető el, és a következőképpen kell értelmezni:

        bits  0-10:     Offset to start of ramdisk, in 1024 byte blocks
        bits 11-13:     unused
        bit     14:     Flag indicating that ramdisk is to be loaded
        bit     15:     Flag indicating to prompt before loading rootfs

Ha a 15. bit be van állítva, induláskor új lemez meghajtóba tételére szólít fel a rendszer. Erre a kétlemezes indító készlet esetén van szükség.

Két eset lehetséges, attól függően, hogy egy indító/gyökér lemezt készítesz, vagy kétlemezes ``indító+root'' lemezkészletet.

  1. Ha egyetlen lemezt készítesz, a tömörített gyökér állományrendszer közvetlenül a kernel után kerül, tehát az eltolás az első szabad blokkra (aminek meg kell egyeznie a KERNEL_BLOKK-al) fog mutatni. A 14. bit 1, a 15. nulla. Például, tegyük fel, hogy egy lemezt készítesz, és a gyökér állományrendszer a 253. (decimális) blokknál kezdődik. A memórialemez szó értékének 253-nak (decimális) kell lennie, a 14. bitet 1-re, a 15. bitet 0-ra kell állítani. Ahhoz, hogy kiszámítsd az értéket, egyszerűen csak össze kell adnod a decimális számokat. 253 + 2^14 = 253 + 16384 = 16637. Ha nem érted, hogy honnan jönnek ezek a számok, üsd be őket egy tudományos számológépbe, és alakítsd át binárissá.
  2. Ha két lemezes készletet készítesz, a gyökér állományrendszer a második lemez 0. blokkjánál kezdődik, tehát az eltolást nullára kell állítani. A 14. bitet 1-re kell állítani, és a 15. bitet is 1-re kell állítani. Ebben az esetben a decimális érték 2^14 + 2^15 = 49152.

Miután gondosan kiszámítottad a memórialemez szó értékét, állítsd be az rdev -r paranccsal. Figyelj rá, hogy a decimális értéket használd. Ha LILO-t használtál, az rdev paraméterének a beillesztett kernel útvonalat kell használnod, pl. /mnt/vmlinuz, ha dd-vel másoltad a kernelt, használd inkább a lemez eszköz nevét (pl., /dev/fd0).

        rdev -r KERNEL_VAGY_FLOPPY_MEGHAJTÓ  ÉRTÉK

Ha LILO-t használtál, most lecsatolhatod a lemezt.

6.4 A gyökér állományrendszer átvitele.

A legutolsó lépés a gyökér állományrendszer átvitele.

  • Ha a gyökér állományrendszer ugyanarra a lemezre kerül, mint a kernel, a dd paranccsal vidd át, és használd a seek kapcsolót, ami megadja, hogy hány blokkot kell kihagynia:
            dd if=rootfs.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOKK
    
  • Ha a gyökér állományrendszer a második lemezre kerül, távolítsd el a lemezt, tedd be a második lemezt a meghajtóba, majd vidd át a gyökér állományrendszert rá:
            dd if=rootfs.gz of=/dev/fd0 bs=1k
    

Gratulálok, készen vagy! Mindig célszerű letesztelned az indítólemezed, mielőtt félreteszed vészhelyzet esetére! Ha hibás a betöltés, olvass tovább.


Következő Előző Tartalom