Proces spouštění linuxového OS

Z DCEwiki
Verze z 9. 3. 2011, 08:57, kterou vytvořil Keny (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání


Jak probíhá zavádění OS, o tom pojednává kapitola GRUB (proces zavedení systému). Tato část popisuje, co se začne dít v okamžiku, kdy zavaděči předhodíme jádro ev. i ramdisk

Jádro
je zapakovaný binárního blok dat, který bootloader rozbalí do paměti a pak zavolá jeho "entry point" (jehož adresa je uvedena v záhlaví), kde začínají instrukce vlastního spouštění. Formát tohoto binárního bloku se liší, podle architektury procesoru (na platformě x86 se používá formát ELF), ale princip spuštění je stejný.
Jaká je role ramdisku? Je nezbytný?
Tzv. "ramdisk" obsahuje zapakovanou základní adresářovou strukturu, s moduly (ovladači hardware), které nejsou součástí jádra. Použít "ramdisk" není nezbytně nutné, pokud jsou v jádře "natvrdo" zakompilované veškeré ovladače, potřebné pro připojení souborového systému. Jádro, které by obsahovalo všechny potřebné moduly by však bylo příliš velké. Navíc některé moduly vyžadují aby byly zavedeny v určitém pořadí, nebo být mezi sebou v konfliktu. Proto většina distribucí má jádro maximálně modulární a používá "ramdisk".

Je-li použitý ramdisk, spuštěné jádro jeho obsah rozbalí do paměti a pak provádí řadu různých testů, na jejichž základě si pak natahuje z ramdisku další potřebné moduly. V momentě kdy má zavedené všechny potřebné moduly pro práci se souborovým systémem, provede jádro remount kořenového systému z ramdisku na fyzické blokové zařízení a pokračuje dále ve spouštění.

Přerušení spuštění

Pokud při spouštění dochází k nějakému problému, který brání v zavedení systému, lze použít tzv. "break points", což jsou body pro přerušení, nakonfigurované v základním spouštěcím skriptu /init, umístěném v kořeni ramdisku.

Tento skript při zavádění postupně volá skripty, umístěné v ramdiskovém adresáři /scripts Při předání jména příslušného bodu přerušení prostřednicvím parametru break, se spouštění dalších skriptů přeskočí a objeví se textová konzole.

Tato textová konzole patří minimalistickému shellu s názvem busybox, který má staticky zakompilovanou sadu nástrojů, které pak umožní zkontrolovat stav zavádění systému v tomto momentu. Tj. zda-li jsou k dispozici v jádře či ramdisku všechny potřebné moduly, nebo zda není chyba v některém konfiguračním souboru, etc.

Předaná hodnota Procesu zavádění je přerušen..
top před spuštěním jakéhokoliv skriptu
modules před zavedením jakéhokoliv modulu
premount před spuštěním jakéhokoliv skriptu, který provede mount (např. udev)
mount před namountováním disku s kořenovým souborovým systémem
bottom po spuštění posledního skriptu
init před předáním řízení aplikaci /sbin/init