Linux Indítólemez HOGYAN: Rakjuk össze őket: lemez(ek) elkészítése.

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