Linux-rendszerek indítása és beállításaLinux-rendszerek indítása és beállítása

Tartalomjegyzék

17.1. A Linux rendszerindítási folyamata
17.2. Az init folyamat
17.3. Rendszerkonfiguráció az /etc/sysconfig fájl segítségével

Kivonat

A Linux-rendszerek indítása összetett folyamat. A hardvert magát a BIOS inicializálja, majd utána a rendszertöltő segítségével elindítja a kernelt. E pont után a rendszerindítási folyamatot teljes egészében az operációs rendszer veszi át, az init és a futási szintek használatával. A futási szintek segítségével be lehet állítani a mindennapos használathoz, illetve a rendszer karbantartására szolgáló konfigurációkat.

A Linux rendszerindítási folyamataA Linux rendszerindítási folyamata

A Linux rendszerindítási folyamata több szintből áll, amelyek mindegyikét más és más komponens végzi. Az alábbi lista röviden összefoglalja a rendszerindítási folyamatot és bemutatja az érintett fő komponensek jellemzőit.

  1. BIOS.  A számítógép bekapcsolása után a BIOS inicializálja a képernyőt és billentyűzetet, majd teszteli a fő memóriát. Eddig a pontig a gép még semmilyen tömegtároló eszközhöz nem fért hozzá. Ezután az aktuális dátum és idő, illetve a legfontosabb perifériákra vonatkozó adatok betöltődnek a CMOS-ból. Az első merevlemez és annak geometriájának felismerése után a BIOS átadja a rendszervezérlést a rendszertöltőnek.

  2. Rendszertöltő.  Az első merevlemez első 512 bájtos fizikai adatszektora betöltésre kerül a fő memóriába és a szektor elején található rendszertöltő átveszi az irányítást. A rendszertöltő által végrehajtott parancsok határozzák meg az indítási folyamat további részét. Az első merevlemez első 512  bájtját éppen ezért Master Boot Record-nak (fő rendszertöltő rekord, MBR) hívjuk. A rendszertöltő ezután átadja az irányítást az aktuális operációs rendszernek, ebben az esetben a Linux-kernelnek. A GRUB-bal, a Linux rendszertöltőjével kapcsolatos további információ: 18. fejezet - A rendszertöltő

  3. Kernel és initrd.  A rendszervezérlés átadásához a rendszertöltő betölti a memóriába a kernelt és egy kezdeti, RAM alapú fájlrendszert (initramfs). Az initramfs tartalmát a kernel közvetlenül képes használni. Az initramfs része egy kisméretű, init nevű végrehajtható fájlt, amelyik a valódi root fájlrendszer felcsatolását végzi. Ha speciális hardverillesztő programokra van szükség még a fő tárolóeszköz elérése előtt, akkor annak szerepelnie kell az initramfs-ben. Az initramfs-sel kapcsolatos további információ: 17.1.1. szakasz - initramfs.

  4. init az initramfs-ben.  Ez a program végzi el a megfelelő root fájlrendszer felcsatolásához szükséges összes műveletet: pl. megfelelő kernelfunkciók biztosítása a használni kívánt fájlrendszerhez, illetve eszközillesztőprogramok biztosítása a tárolóvezérlőkhöz az udev segítségével. Ha sikerült megtalálni, a root fájlrendszeren hibaellenőrzés történik, majd felcsatolja a rendszer. Ha ez is sikerült, akkor az initramfs törlődik és elindul a root fájlrendszeren lévő init program. További információ az init-ről: 17.1.2. szakasz - az initramfs-en található init További információ az udev-ről: 21. fejezet - Dinamikus kerneleszköz-felügyelet az udev segítségével.

  5. init.  Az init kezeli a rendszer tényleges indítását és lehetővé teszi különböző funkcionalitást biztosító szintek használatát. Az init részletes leírása: 17.2. szakasz - Az init folyamat

initramfsinitramfs

Az initramfs egy kisméretű cpio archívum, amelyet a kernel RAM-lemezre tud tölteni. Egy minimális Linux-rendszer található benne, amelyik lehetővé teszi programok végrehajtását még a tényleges root fájlrendszer felcsatolása előtt. Ezt a minimális Linux-rendszert BIOS-rutinok töltik be a memóriába. Az elegendő memórián kívül nincs egyéb hardverkövetelménye. Az initramfs-ben kell, hogy szerepeljen egy init nevű végrehajtható fájl, amely a root fájlrendszeren található tényleges init programot hajtja végre, hogy a rendszerindítási folyamat folytatódhasson.

A root fájlrendszer felcsatolása és az operációs rendszer elindítása előtt a kernelnek a root fájlrendszert tartalmazó eszköz eléréséhez szüksége van a megfelelő illesztőprogramokra. Lehet, hogy speciális illesztőprogramokra van szükség bizonyos típusú merevlemez-meghajtók vagy éppen a hálózati fájlrendszer eléréséhez. Az initramfs-ben található init be is töltheti a root fájlrendszerhez szükséges modulokat. A modulok betöltése után az udev biztosítja az initramfs-nek a szükséges eszközöket. A rendszerindítási folyamat későbbi részében, a root fájlrendszerre átváltás után újra kell generálni az eszközöket. Ezt a boot.udev végzi az udevtrigger parancs kiadásával.

Ha meg kell változtatni egy telepített rendszerben a hardvert (például a merevlemezeket), és az új hardver használatához más illesztőprogramokra van szükség, mint ami a kernel számára rendszerindításkor rendelkezésre áll, akkor frissíteni kell az initramfs fájlt. Ez ugyanúgy történik, mint az elődje, az initrd esetén: meg kell hívni az mkinitrd parancsot. Az mkinitrd paraméterek nélküli kiadása esetén egy initramfs jön létre. Az mkinitrd -R parancs pedig initrd-t hoz létre. SUSE Linux Enterprise® alatt a betöltendő modulokat az /etc/sysconfig/kernel fájlban található INITRD_MODULES változó adja meg. Telepítés után ez a változó automatikusan beállításra kerül a megfelelő értékre. A modulok pontosan abban a sorrendben töltődnek be, ahogy az INITRD_MODULES részben fel vannak sorolva. Ez csak akkor fontos, ha a /dev/sd eszközfájlok megfelelő beállítására támaszkodik. Modern rendszerekben azonban használhatók a /dev/disk/ alatti eszközfájlok is. Ezek több, by-id, by-path és by-uuid nevű könyvtárra vannak szétosztva, de mindig ugyanazt a lemezt ábrázolják. Ez telepítéskor is lehetséges a megfelelő mount paraméter megadásával.

[Important]Az initramfs vagy initrd frissítése

A rendszertöltő ugyanúgy tölti be az initramfs-t és initrd-t, mint a kernel. Az initramfs és initrd frissítése után a GRUB-ot nem kell újratelepíteni, mivel a GRUB indításkor a könyvtárban megkeresi a megfelelő fájlt.

az initramfs-en található initaz initramfs-en található init

Az initramfs-en található init fő célja a valódi root fájlrendszer felcsatolásának és elérésének előkészítése. Az aktuális rendszerkonfigurációtól függően az init az alábbi feladatokért felelős.

Kernelmodulok betöltése

A hardverkonfigurációtól függően a számítógép hardverkomponenseinek (különösen a merevlemeznek) az eléréséhez speciális illesztőprogramokra lehet szükség. A root fájlrendszer eléréséhez a kernelnek be kell töltenie a megfelelő fájlrendszer-illesztőprogramokat.

Blokk-speciális fájlok biztosítása

Minden egyes betöltött modulhoz a kernel eszközeseményeket generál. Ezeket az eseményeket az udev kezeli és hozza létre a blokk-speciális fájlokat a RAM-fájlrendszerben a /dev alatt. E speciális fájlok nélkül a fájlrendszer és a többi eszköz nem lenne elérhető.

RAID- és LVM-beállítások kezelése

Ha a rendszer úgy lett beállítva, hogy a root fájlrendszert RAID- vagy LVM-köteteken tárolja, akkor az init beállítja az LVM-et vagy a RAID-et, hogy a root fájlrendszer később elérhető legyen. A RAID-del kapcsolatos további információ: 7.2. szakasz - Szoftveres RAID beállítása. Az LVM-mel kapcsolatos további információ: 7.1. szakasz - LVM-konfiguráció. Az EVMS-ről és a speciális tárolási beállításokról a Tárolóadminsiztrátori kézikönyv tartalmaz további információkat.

Hálózati beállítások

Ha a rendszer egy hálózaton (NFS-en) keresztül felcsatolt root fájlrendszer használatára lett beállítva, akkor ahhoz, hogy a root fájlrendszer később biztosan elérhető legyen, az init-nek ellenőriznie kell, hogy be vannak-e töltve és be vannak-e állítva a megfelelő hálózati illesztőprogramok.

Amikor az init a kezdeti rendszerindítás során, a telepítési folyamat részeként kerül meghívásra, akkor a feladatai különböznek a korábban említettektől:

Telepítési adathordozó megkeresése

A telepítési folyamat elindításakor a gép a telepítési adathordozóról a YaST telepítő segítségével betölt egy telepítési kernelt és egy speciális initrd-t. A RAM-fájlrendszerben futó YaST telepítőnek ismernie kell a telepítési adathordozó tényleges helyét, hogy elérhesse és telepíthesse az operációs rendszert.

Hardverfelismerés kezdeményezése és a megfelelő kernelmodulok betöltése

A rendszerindítási folyamat minimális illesztőprogram-készlettel indul (lásd 17.1.1. szakasz - initramfs), amely a legtöbb hardverkonfigurációval használható. Az init elindít egy kezdeti hardverkeresési folyamatot, amely meghatározza a hardverkonfigurációhoz megfelelő illesztőprogramokat. A rendszerindítási folyamathoz szükséges modulok nevei az /etc/sysconfig/kernel fájl INITRD_MODULES változójába íródnak. Ezekből a nevekből generálódik a rendszer indításához szükséges egyéni initramfs. Ha a modulok rendszerindításhoz nem, de a coldplughoz szükségesek, akkor a modulok a /etc/sysconfig/hardware/hwconfig-* fájlokba íródnak. Az ebben a könyvtárban található összes eszközt a rendszerindítási folyamat inicializálja.

A telepítési vagy mentőrendszer betöltése

A hardver megfelelő felismerése és a megfelelő illesztőprogramok betöltése után, illetve miután az udev létrehozta az eszközök speciális fájljait, az init elindítja az aktuális YaST telepítőt, tartalmazó telepítőrendszert, illetve a mentőrendszert.

A YaST indítása

Az init végül elindítja a YaST-ot, amely elkezdi a csomagok telepítését és a rendszer beállítását.