Proces spouštění linuxového OS
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
|