Amikor a Lilo betölti a rendszert, BIOS hívásokat használ a Linux rendszermag betöltéséhez a merevlemezről (IDE lemez, hajlékonylemez vagy bármi más). Emiatt a rendszermagnak olyan helyen kell elhelyezkednie, melyhez a BIOS hozzá tud férni.
A betöltés során a Lilo nem képes a fájlrendszer adatainak olvasására, az /etc/lilo.conf
fájlban beállított bármilyen útvonal a telepítés során kerül feloldásra
(mikor kiadjuk az /sbin/lilo parancsot). A program a telepítés során
építi fel azokat a táblázatokat, melyek felsorolják, hogy mely szektorokat használják az
operációs rendszer betöltéséhez szükséges fájlok. Ennek következményeként,
ezen fájlok mindegyikének olyan lemezrészen kell elhelyezkednie, melyhez a
BIOS is hozzáfér (a fájlok általában a /boot
könyvtárban helyezkednek el, ez azt jelenti, hogy a Linux rendszernek csak a root lemezrészét
kell elérnie a BIOS-on keresztül).
A Bios-alapúságnak a másik következménye, hogy a betöltőt újra kell telepíteni (azaz ki kell adni újra az /sbin/lilo parancsot) a Lilo setup bármilyen módosításakor. Ha újrafordítod a rendszermagot és felülírod a régi lemezképet újra kell telepíteni a Lilo-t.
Az /etc/lilo.conf
-ban található boot=
utasítás jelzi a Lilo-nak hova kell
tennie az elsődleges betöltőt. Ez általában a
a master boot record (/dev/hda
), Linux telepítésednek a root partíciója
(általában /dev/hda1
,
vagy /dev/hda2
).
Ha merevlemezen egy másik operációs rendszer is telepítve van, jobban teszed ha a Lilo-t a root partícióra telepíted az MBR helyett. Ebben az esetben a parítciót "bootolhatóként" kell megjelölni az fdisk "a" parancsával vagy az fdisk "b" parancsával. Ha nem írod felül a master boot szektort, szükség esetén könnyebb lesz a Linux vagy a Lilo eltávolítása.
Természetesen van lehetőség a fentihez hasonló "szabályok" megkerülésére.
Nos, a Lilo-t akkor is telepítheted az MBR-be, ha oda már telepítettél egy másik
operációs rendszert. Például, ha gépedre először egy Windows NT 4.0-t telepítettél
az NT betöltője került az MBR-be, így probléma nélkül indíthatod az NT-t. Miután
telepítetted a Linuxot és azt választottad, hogy a Lilo az MBR -be kerüljön,
a Lilo átírta az NT betöltőjét.
Mikor következő alkalommal indítod a gépedet, nem tudod betölteni az NT-t.
Ez azonban nem gond. Szerkeszteni kell az /etc/lilo.conf
fájlt és az NT-nek
új bejegyzést kell készíteni. Következő újraindításkor, a Lilo menüben ott lesz az
új NT bejegyzés. Ugyanez történik, ha a Windows NT helyett Windows 2000-t telepítesz.
Személy szerint én nem használom sem az LBA sem a LARGE beállításokat a BIOS-ban (bár én kizárólag Linuxot futtatok); ezek a PC-s világ tervezésbeli hiányosságaiból adódó szörnyű tákolmányok. Ennek következményeként a rendszermagnak az első 1024 cilinderben kell elhelyezkednie. Ez mindaddig nem gond, amíg a merevlemez particionálásakor a root partíció kis méretű (amit ettől függetlenül is így kell csinálni).
Ha merevlemezen már van egy másik operációs rendszer nem módosíthatod a BIOS beállításokat, különben a régi rendszered nem fog többé működni. Az összes újabb Lilo terjesztés képes kezelni az LBA és LARGE lemezbeállításokat.
Ne feledd, hogy az /etc/lilo.conf
fájlban található "linear"
kulcsszó segíthet a geometriai problémák megoldásában. Ez a kulcsszó
arra utasítja a Lilo-t, hogy lineáris szektorcímzést használjon a
szektor/fej/cilinder hármas helyett. A 3D címzésre való átalakítás
a futási időre lesz halasztva, ezáltal téve a beállításokat sokkal inkább immunissá
a geometriából adódó problémák irányába.
Ha több mint egy merevlemezed van, és néhányukat csak a Linux használja, valamint ha nincsenek benne a betöltési folyamatban, azt beállíthatod a BIOS számára, hogy nincsenek is telepítve. Rendszered sokkal gyorsabban fog betöltődni a Linux pedig pillanatok alatt automatikusan felismeri a meghajtókat. Én gyakran cserélgetem a meghajtókat a számítógépemben, de soha nem bántom a BIOS beállításait.
A Lilo készenléti jelénél a <Tab> billentyű lenyomása megmutatja a választási lehetőségeket. Ha a Lilo-t nem interaktív módba állították be tartsd lenyomva az <Alt> vagy <Shift> billentyűket mielőtt megjelenik a "LILO" üzenet.
Ha Linux rendszermagot töltesz be, a kiválasztott rendszer neve után parancssori kapcsolót is megadhatsz. A rendszermag nagyon sok parancssori kapcsolót fogad el. Az összes parancssori kapcsoló Paul Gortmaker által írt "BootPrompt-HOWTO"-ban található meg. Ezeket nem kívánom itt megismételni. Néhány parancssori kapcsoló azonban különösen fontos, és érdemes őket itt megemlíteni:
root=
: a Linux rendszermagnak jelezni lehet, hogy egy másik
partíciót csatoljon fel root partíciónak, mint ami a /lilo.conf
fájlban meg van adva.
Például, rendszeremben van egy apró lemezrész, melyen egy minimális Linux telepítés foglal helyet.
Erről képes voltam betölteni a rendszert, miután tévedésből tönkretettem a root partíciót.
init=
: az 1.3.43 valamint újabb változatú Linux rendszermagok képesek arra, hogy az
/sbin/init helyett más parancsot hajtsanak végre, mint ahogy az a parancssorban van.
Ha súlyos hibákat tapasztalsz a betöltési folyamat közben, az
init=/bin/sh
meghatározásával elérheted az alaprendszert (mikor a parancssorban vagy,
nagy valószínűséggel fel kell csatolni a partíciókat: próbáld meg a
"mount -w -n -o remount /; mount -a" parancsokat,
és ne felejtsd lecsatolni őket ("umount -a"), mielőtt kikapcsolod a géped).
/etc/inittab
és /etc/rc*.d
helyeken.
Mikor a Lilo felülírja a betöltő szektort, lement egy biztonsági másolatot
a /boot/boot.
xxyy alá, ahol az xxyy az eszköz felső és
alsó számai hexadecimálisan kifejezve. A merevlemez, vagy lemezrész
felső és alsó számait a "ls -l
/dev//device" parancs futtatásával veheted szemügyre.
Például a /dev/hda
első szektora (felső 3, alsó 0) a
/boot/boot.0300
könyvtárba lesz lementve,
ha a Lilo-t a /dev/fd0
eszközre telepítjük az egy
/boot/boot.0200
könyvtárat fog létrehozni, ha pedig /dev/sdb3
(felső
8, alsó 19) akkor /boot/boot.0813
-ba lesz lementve. Figyeld meg, hogy a Lilo
nem fog még egy fájlt létrehozni, ha már létezik egy, így nem kell törődnöd a
a biztonsági másolattal, ha újratelepíted a Lilo-t (például a rendszermagod
újrafordítása után). A /boot/
alatt található biztonsági másolatok
mindig pillanatfelvételei annak a helyzetnek, mielőtt bármilyen Lilo-t telepítettél volna.
Ha valaha is el kell távolítanod a Lilo-t (például, abban a szerencsétlen esetben,
hogy eltávolítsd a Linuxot), egyszerűen csak vissza kell állítanod az eredeti
betöltő szektort. Ha a Lilo a /dev/hda
-ra települt, egyszerűen írd be a
"dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1" parancsot
(Személy szerint én a "cat /boot/boot.0300 > /dev/hda" parancsot használom,
de ez nem biztonságos, mivel ez helyre fogja állítani az eredeti partíciós táblát is,
melyet közben módosíthattál is). Ezt a parancsot sokkal egyszerűbb futtatni, mint
megpróbálkozni DOS parancssorból a "fdisk /mbr" paranccsal, ez lehetővé teszi, hogy tisztán eltávolítsd a lemezről a Linuxot, még akkor is, ha
eddig csak mindig Linuxot töltöttél is be. A Lilo eltávolítása után ne feledd el futtani a Linux
"fdisk" parancsát a Linux lemezrészek eltávolítsa céljából (A DOS "fdisk" nem képes nem-DOS lemezrészek eltávolítására).
Ha a Lilo-t a root partícióra telepítetted(pl.: /dev/hda2
),
semmi különöset nem kell tenned a Lilo eltávolításához. Egyszerűen csak futtasd a Linux
"fdisk" parancsát a Linux lemezrészek partíciós táblából való eltüntetéséhez.
Ne feledd el megjelölni a DOS lemezrészt betölthetőként.
Figyelem: Ha ezt a bekezdést nehéznek találod, nézz körül a How to make a ram disk honlapon, itt megtalálhatod ennek a kiegészítésnek az "eredetijét"...
Írta: Tony Harris
2000. október 16.
ram lemez ici-pici HOGYAN
Ha a root partíció olyan eszközön van, melynek nincs a rendszermagba befordított eszközmeghajtója
a lilo
-t kell használnod ennek az eszközmeghajtónak modulként való betöltéséhez
a betöltési folyamat korai szakaszában.
Két egyszerű lépésből áll:
lilo.conf
fájlt, hogy az a lemezképre mutasson
Először is, a cd-vel átváltok a /boot
könyvtárba:
System.map chain.b module-info-2.2.16-3ext3 System.map-2.2.16-3 initrd-2.2.16-3.img vmlinux-2.2.16-3 System.map-2.2.16-3ext3 vmlinux-2.2.16-3ext3 vmlinuz kernel.h boot.b map vmlinuz-2.2.16-3 bz.2.2.15.juke.Image module-info vmlinuz-2.2.16-3ext3 bzImage-2.2.14 module-info-2.2.16-3
Itt láthatod, hogy van egy 2.2.16-3 rendszermagom és hozzáadtam egy második
rendszermagot, mely támogatja az ext3-at (vmlinuz-2.2.16-3ext3
). Az első
rendszermagom számára már létezik egy lemezkép (initrd-2.2.16-3.img
).
A második rendszermag számára létrehozandó lemezképhez, a következőket kell beírnom (a begépelendő kiemelve van szedve):
boot# mkinitrd initrd-2.2-16-3ext3.img 2.2.16-3ext3
Az mkinitrd
egy shell szkript, mely megvizsgálja a rendszermagom számára szükséges modulokat,
majd létrehoz egy ext2 fájlrendszert, mely tartalmazza azokat a modulokat.
Ha belepillantunk a lemezképbe látjuk, hogy ez igaz:
boot# cat initrd-2.2.16-3ext3.img | gunzip > /tmp/myimage
boot# file /tmp/myimage
/tmp/myimage: Linux/i386 ext2 filesystem/
Nem szükséges belenézned a lemezképbe. A lemezkép létrehozása és a
lilo.conf
módosítása a két kötelező lépés. A ram lemezkép
leírása kizárólag pedagógiai célokat szolgál.
A lemezkép megtekintéséhez azt fájlrendszerként kell felcsatolni:
boot# mount /tmp/myimage /mnt/tmp -t ext2 -o loop=/dev/loop3
boot# ls /mnt/tmp
bin dev etc lib linuxrc
boot# find /mnt/tmp
mnt/tmp/
mnt/tmp/lib/
mnt/tmp/lib/aic7xxx.o/
mnt/tmp/bin/
mnt/tmp/bin/sh/
mnt/tmp/bin/insmod/
mnt/tmp/etc/
mnt/tmp/dev/
mnt/tmp/dev/console/
mnt/tmp/dev/null/
mnt/tmp/dev/ram/
mnt/tmp/dev/systty/
mnt/tmp/dev/tty1/
mnt/tmp/dev/tty2/
mnt/tmp/dev/tty3/
mnt/tmp/dev/tty4/
mnt/tmp/linuxrc/
Ennek a ram lemezképnek a legfontosabb része az aic7xxx.o
,
mely az én scsi modulom.
Végül elérkeztünk az utolsó lépéshez, az /etc/lilo.conf
módosításához:
Itt láthatod az én bejegyzésemet a lilo.conf
fájlban, mely összhangban van az imént
létrehozott rendszermaggal és a lemezképpel:
image=
boot/vmlinuz-2.2.16-3ext3/
label=linux.ext3
initrd=
boot/initrd-2.2.16-3ext3.img/
read-only
root=
dev/hdb3/
Ennyi az egész. Root felhasználóként futtasd a /lilo-t, majd indítsd újra a géped.
Ha gondjaid vannak, nézd meg
Linux kernel HOWTO (
Linux rendszermag HOGYAN) dokumentumot. Van néhány dolog benne
amikkel találkoznod kellett: az /etc/conf.modules
fájlban található rendszermag-modulokat le kell fordítani.