Következő Előző Tartalom

3. Indítólemezek és az indítás folyamata.

Az indítólemez tulajdonképpen egy pici, saját magát egyetlen floppy lemezen tartalmazó Linux rendszer. Sok -a teljes méretű Linux rendszerben lévő funkcióhoz hasonló- funkciót kell ellátnia. Mielőtt nekikezdenél egy ilyen rendszer készítésének, meg kell értened az alap Linux rendszer betöltési folyamatát. Azokkal az alapokkal foglalkozunk itt, amikre a dokumentáció további részének megértéséhez szükséged lesz. Több esetben a részleteket és az alternatív lehetőségeket kihagytuk.

3.1 Az indítási folyamat.

Minden PC rendszer az indítási folyamatot a ROM-ban lévő kód végrehajtásával (pontosabban a BIOS-ban) kezdi, hogy betöltse az indító meghajtó 0. szektor, 0. cylinderén található szektort. Az indító meghajtó általában az első floppy lemez meghajtó (DOS alatt A:-val jelölik, Linuxban /dev/fd0). A BIOS ezután megpróbálja végrehajtani ezt a szektort. A legtöbb indítható lemez 0. szektora, 0. cylindere a következők valamelyikét tartalmazza:

  • indító betöltő, mint például a LILO kódja, ami majd megtalálja a kernelt, betölti, és végrehajtja, hogy elindítsa a teljes betöltőt.
  • egy olyan operációs rendszer magjának kezdete, mint például a Linux.

Ha a Linux kernel nyers-másolással kerül át egy lemezre, a lemez első szektora magának a kernelnek az első szektorát fogja tartalmazni. Az első szektor fogja folytatni a betöltési folyamatot a kernel többi részének indító eszközről való betöltésével.

Amint a kernel teljes egészében betöltődött, néhány alapvető eszköz-inicializálást hajt végre. Ezután megpróbálja betölteni és beilleszteni a gyökér állományrendszert néhány eszközről. A gyökér állományrendszer egyszerűen az az állományrendszer, amit ``/''-ként illesztünk be. A kernelnek meg kell mondani, hogy hol keresse a gyökér állományrendszert; ha nem talál betölthető állományrendszert itt, megáll.

Néhány esetben az induláskor -- gyakran, amikor lemezről indítunk -- a gyökér állományrendszert memórialemezre töltjük be, amit a rendszer a RAM-ból olvas úgy, mintha lemez lenne. Két indok lehet, ami miatt a rendszert memórialemezre töltjük. Az első, hogy a RAM lényegesen gyorsabb bármely floppy lemeznél, így a rendszer működése nagyon gyors, a második, hogy a kernelt tömörített állományrendszerről töltjük be a lemezről, majd memórialemezre kitömörítjük, ezzel lehetővé téve több állomány lemezre másolását.

Ha a gyökér állományrendszer betöltődött, és beillesztődött, a következőhöz hasonló üzenetet kapsz:

        VFS: Mounted root (ext2 filesystem) readonly.

Ennél a pontnál a renszer megkeresi az gyökér állományrendszeren az init programot (a /bin vagy az /sbin alkönyvtárban), és végrehajtja. Az init az /etc/inittab állományból olvassa a konfigurációt, megkeresi a megfelelő sysinit sort, és végrehajtja a named szkriptet. A sysinit szkript általában valami olyasmi, mint az /etc/rc vagy az /etc/init.d/boot. Ez a szkript parancsértelmező parancsok halmaza, amik az olyan alap rendszer szolgáltatásokat állítják be, mint:

  • fsck futtatása minden lemezen,
  • Megfelelő kernel modulok, betöltése
  • Swap indítása,
  • Hálózat inicializálása,
  • Az fstab-ban felsorolt lemezek beillesztése.

Ez a szkript gyakran meghív más szkripteket, hogy moduláris inicializálást tegyen lehetővé. Például a közös SysVinit szerkezet, az /etc/rc.d/ alkönyvtár olyan alkönyvtárak teljes rendszerét tartalmazza, amelyek állományai megadják, hogy hogy kell engedélyezni és leállítani a legtöbb rendszerszolgáltatást. Mindazonáltal az indítólemezek sysinit szkriptje gyakran nagyon egyszerű.

Amikor a sysinit szkript végez, visszaadja a vezérlést az init-nek, ami ezután az inittab initdefault kulcsszavával megadott alapértelmezett futásszintre lép. A futásszint sor általában meghatároz egy getty-hez hasonló programot, ami a konzolon és tty-ken keresztüli kommunikációért felelős. A getty az a program, ami a már ismerős ``login:'' promptot írja ki. A getty program hívja meg a login programot, hogy a bejelentkezéseket lekezelje, és beállítsa a felhasználói környezetet.

3.2 Lemez típusok.

Miután átnéztük az alap indulási folyamatot, definiálhatjuk a különböző lemeztípusokat. Négy típusba sorolhatjuk a lemezeket. A dokumentációban szereplő ``lemez'' szó alatt a továbbiakban a floppy lemezt értjük, ha másként nem rendelkezünk, bár a legtöbb dolog, amiről szó lesz, érvényes merevlemezre is.

betöltő(boot)

A lemez a betöltendő kernelt tartalmazza. A lemez a kernel betöltésére használható, ami utána másik lemezen levő gyökér állományrendszert töltene be. A betöltőlemezen levő kernelnek meg kell mondani, hogy hol találja a gyökér állományrendszert.

Gyakran a betöltőlemez másik lemezen levő gyökér állományrendszert tölt be, de az is megoldható, hogy merevlemez gyökér állományrendszerét töltse be inkább. Ezt általában új kernel tesztelésére használjuk. (tulajdonképpen a ``make zdisk'' parancs automatikusan készít ilyen betöltő lemezt a kernel forráskódjából).

gyökér(root)

A Linux rendszer működéséhez szükséges állományokat tartalmazó állományrendszer. Az ilyen lemez nem szükségszerűen tartalmaz kernelt, vagy indító betöltőt (boot loader).

Egy gyökér lemezt használhatunk más lemezen lévő rendszertől függetlenül, ha a kernel már betöltődött. A gyökérlemez gyakran automatikusan memórialemezre másolódik. Ez sokkal gyorsabbá teszi a gyökérlemez használatát, és felszabadítja a lemez meghajtót az eszközlemez számára.

betöltő/gyökér(boot/root)

Olyan lemez, ami a kernelt és a gyökér állományrendszert is tartalmazza. Más szavakkal, mindent tartalmaz, amire egy Linux rendszer merevlemez nélküli működéséhez szükség van. Ennek a lemeztípusnak a tömörsége az előnye -- minden szükséges dolgot egyetlen lemezen tartalmaz. Mindazonáltal mivel minden folyamatosan növekszik, egyre nehezebb mindent egy lemezre zsúfolni, még tömörítéssel is.

eszköz(utility)

Olyan lemez, ami nem gyökérként beillesztendő állományrendszert tartalmaz, hanem kiegészítő adatokat. Egyéb eszközök szállítására használhatsz ilyen lemezt a gyökér lemezed kiegészítéseként, ha arra már nem fér más.

Általában amikor ``betöltőlemez készítéséről'' beszélünk, ezalatt egyaránt értjük a betöltő (kernel) és a gyökér (állományok) részek elkészítését. Ezek lehetnek együtt (egylemezes betöltő/gyökér lemez), vagy külön (betöltő+gyökér lemezek). A legrugalmasabb megoldás helyreállító lemezek esetén valószínűleg a különválasztott betöltő és gyökér lemezek használata, és egy vagy több eszköz lemez a többlet kezelésére.


Következő Előző Tartalom