13. Haladóknak szóló témák - A Linux rendszerindítási folyamata

Ez a rész nem igazán érdekes az átlagos "Józsi, otthoni PC-felhasználó" számára, inkább irányul azok felé, akik számítógép-tudományos háttérrel rendelkeznek.

A betöltési folyamat a következő: CPU-> VGA-> Power-On-Self-Test-> SCSI-> Boot Manager-> Lilo boot loader-> kernel-> init-> bash. A firmware és szoftver programok különböző üzeneteket adnak, amikor a számítógép és a Linux életre kel.

A Linux betöltési folyamatának részletes bemutatása:

  1. Az alaplapon lévő BIOS előidézi a videokártya BIOS inicializálását

  2. Az alaplapon lévő BIOS inicializálja önmagát

  3. Az SCSI vezérlőn lévő BIOS inicializálja önmagát

  4. Hardveres összegzés: az alaplapi BIOS ezután kiírja a következő összegzést a hardver tartalmáról. Majd futtatja a vírusellenőrző kódját, ami megváltozott indítószektorokat (boot sector) keres (ha engedélyezve van - a lektor).

  5. BootManager menü : a Master Boot Record (MBR) kiolvasásra kerül az első merevlemezen, a DOS hagyományaihoz híven, a 0x00007c00 címre, és a processzor elkezdi végrehajtani az ott leírt utasításokat. Ez az MBR betöltőkód beolvassa az aktív DOS partíció első szektorában lévő kódot.

  6. A Lilo elindul: ha a Linuxot választottad és ha azt a LILO-val telepítetted, akkor betöltődik a 0x00007c00 címre. A Lilo kiírja a LILO üzenetet az előrehaladásáról, egyenként írva ki a betűket. Az első "L" betűt akkor írja ki, miután a Lilo átmozgatta magát egy jobb helyre, mint például a 0x0009A000 címre. Az "I" jelenik meg, mielőtt elkezdené a másodszintű betöltőkódját. A másodszintű betöltő írja ki a következő "L"-t, betölti a rendszermag részeire mutató leírókat, és végül kiírja a végső "O" betűt. A leírók a 0x0009d200 címen helyeződnek el. A rendszerindítási üzenet és a parancssor, ha úgy adták meg, kiíródik. A "tab" megnyomása a promptnál teszi lehetővé, hogy a felhasználó rendszert válasszon, és parancssori opciókat adjon át a rendszermagnak, a meghajtóinak és az "init" programnak. Ezen kívül környezeti változók is megadhatók ennél a pontnál.
    
A következő sor a /boot/message fájlból származik:
    >
    >
    >
     Press  to list available boot image labels. 
     (Nyomj Tab-ot a kiválasztható rendszerindító fájlok (boot image) címkéinek megtekintéséhez)
    A következő sor az /sbin/lilo promptjából származik:
    boot:
    Figyelem: ha a Lilo-t nem használjuk, akkor a rendszermag elejébe, 
    a linux/arch/i386/boot/bootsect.S-be épített kód kiírja a "Loading" 
    üzenetet és folytatja.
    A Lilo kiírja a következőt, amint tölti be a rendszermag kódját. 
    A "Linux-2.2.12" szöveget a "label=..." megadásából veszi a lilo.conf-ból.
    Loading linux-2.2.12..........
    		

  7. A /linux/arch/i386/boot/setup.S fájlban található rendszermag-kód végzi el az átkapcsolást a processzor valós (DOS) módjából a védett (teljes 32 bites) üzemmódba. A Trampoline.S és Trampoline32.S nevű kódrészek segítik az átkapcsolást. A kisebb rendszermag fájlok (zImage) kitömörítődnek, és betöltődnek a 0x00010000 címre. A nagyobb fájlok (bzImage) ehelyett a 0x00100000 címre töltődnek. Ez a kód állítja be a regisztereket, kicsomagolja a tömörített rendszermagot (aminek az elején a linux/arch/i386/head.S található), kiírja a következő két sort a linux/arch/i386/boot/compressed/misc.c fájlból:
    
Uncompressing Linux... Ok. 
    Booting the kernel. 
    	    
    Az i386-specifikus setup.S most már bevégezte dolgát, és elugrik a 0x00010000 (vagy 0x00100000) címre, hogy elindítsa az általános Linux kódot.

  8. Init Program (Process 1) Startup : The program /sbin/init is started by the "idle" process (Process 0) code in linux/init/main.c and becomes process 1. /sbin/init then completes the initialization by running scripts and forking additional processes as specified in /etc/inittab. It starts by printing: INIT: version 2.76 booting and reads /etc/inittab.

  9. A Bash parancsértelmező indulása: a bash shell, a /bin/bash indul el ezek után. A feléledése az /etc/profile szkript végrehajtásával kezdődik, ami beállítja a rendszerszintű környezeti változókat:

13.1. Hivatkozások a betöltési folyamat témájában

Nézd meg a következő forrásokat: