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.
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.
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.
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.
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á.
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.
A legutolsó lépés a gyökér állományrendszer átvitele.
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
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.