next up previous index
Következő: 4.3 Partícionálási sémák Fel: 4.2.8 Egyéb információk Előző: 4.2.8.1 Újdonságok a BIOS   Index

4.2.8.2 Néhány szó a lilo-ról

A lilo a Linux Loader rövidítése, egy többféle operációs rendszert betölteni képes program. Fő célja persze az, hogy a Linuxot betöltse. (A Linuxról olvashatsz többek között a Magyar Linux Alapítvány honlapján.) Nem óhajtok a lilo-ról sem kimerítően beszélni (pl. a fontosabb dolgok közül nem beszélek az /etc/lilo.conf file tartalmáról, a -r opcióról, stb.), csak néhány érdekességet írok itt le.

A boot-olás szempontjából a legfontosabb információ az, hogy a Linux nem BIOS hívásokkal kezeli a hardware-t, így a merevlemezt sem. Boot-oláskor viszont a lilo-nak nincs más választása, hisz olyankor még nincs bent a memóriában a kernel. Továbbá a kernelt magát (általában) már a Linux fájlrendszeréről kell betöltenie, aminek felépítését, így a benne lévő fájlok helyét is maga a kernel tudja.

Ezt a dilemmát a lilo úgy oldja meg, hogy valójában két részre bomlik:

Az /sbin/lilo-t Linux alatt futtatva az lekérdezi a kerneltől, hogy a betöltendő file-ok (pl. maga a kernel (tipikusan /boot/vmlinuz)) blokkjai hol (vagyis milyen C/F/S címen) találhatók a lemezen, és ezeket az adatokat beírja a /boot/map file-ba. Persze ennek a file-nak a helyét is lekérdezi, ezt az adatot magába az MBR-ben lévő programocskába írja bele. Így aztán boot-oláskor BIOS hívásokkal tud hozzáférni mindenhez, ami számára fontos.

Ezek után nyilvánvaló, hogy minden kernelfordítás után újra kell futtatni az /sbin/lilo-t, hogy az új kernel elhelyezkedését a map file-ba írhassa. Ha ezt elmulasztjuk, könnyen lehet, hogy a régi kernel indul el, még ha le is töröltük a lemezről :-)

Minden file, amire a boot-olás során szükség van, és amiket BIOS hívásokkal kell elérni, a /boot/ könyvtárban található. Ezek tehát azok a file-ok, amiknek a lemez első 1024 cilinderén belül kell lenniük, hisz a BIOS (az előzőleg említett BIOS bővítés nélkül) csak ezeket képes kezelni. Nagy kapacitású lemez esetén elegendő egy kis méretű partíciót kreálni a lemez elején és a /boot/ könyvtárat ebbe helyezni, ezzel elérhetjük, hogy a kritikus file-ok BIOS-ból olvashatóak legyenek.

Gondot okoz viszont az, hogyha a kernel a BIOS-tól eltérő geometriát feltételezve adja meg a file-ok helyét, hiszen így boot-oláskor teljesen fals helyről beolvasott adatokat próbál a processzor utasításként végrehajtani. Ennek eredménye tipikusan az, hogy a kezdeti LILO feliratnak csak a fele (LI) jelenik meg a monitoron, aztán a gép lefagy.

Ilyen esetben általában elegendő megoldás az, hogyha bekapcsoljuk a lilo linear opcióját az /etc/lilo.conf-ba írt linear kulcsszóval, vagy az /sbin/lilo -l opcióval. Ennek hatására a map file-ba nem a C/F/S cím, hanem a lineáris szektorcím kerül bele, és ezek alapján a betöltő program a boot-olás során közvetlenül a BIOS-tól lekérdezett geometria szerint alakítja ki a C/F/S címeket.

Tulajdonképpen nem értem, hogy miért nem ezt a megoldást használja alapértelmezésben a lilo. Ha valaki tudja ezt, vagy van, akinél a linear opció ellenére sem működik a boot-olás, ossza meg velem a tapasztalatait.

Ha már korábban is olvastad ezeket a lapokat, érdekes lehet a változtatások listája:

Más témák miatt érdemes bekukkantani a homepage-emre is! http://www.sch.bme.hu/~marosi/

Ha megjegyzésed, vagy kérdésed van, írj nekem a recosoft@mail.matav.hu vagy marosi@sch.bme.hu címre. Módosítások dátuma:


next up previous index
Következő: 4.3 Partícionálási sémák Fel: 4.2.8 Egyéb információk Előző: 4.2.8.1 Újdonságok a BIOS   Index

1999-09-17