Tartalomjegyzék
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 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.
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.
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ő
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.
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.
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
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.
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ó 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.
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.
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ő.
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.
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:
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.
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 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.
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.