Start Linuxu
Spouštěcí proces Linuxu je více fázový proces, který se provádí během bootování Linuxové instalace. V mnoha ohledech se tento proces neliší od bootovacích procesů dalších Unixových systémů.
Bootování Linuxého systému zahrnuje více fází a softwarových komponent, včetně inicializace firmwaru , spuštění zavaděče (boot loaderu), načtení a spuštění Linux kernel image, a spuštění různých spouštěcích skriptů a démonů. Pro jednotlivé fáze a komponenty, jsou zde různé varianty a přístupy.
Příklady: Jako boot loader může být použit např. GRUB, LILO, SYSLINUX nebo Loadlin
Konfiguraci systému lze provést přes tradiční Init spouštěcí skripty nebo lze využít modernější alternativy jako systemd nebo Upstart.
Přehled
Průběh jednotlivých fází spouštěcího procesu Linuxu závisí na architektuře daného počítače. IBM PC kompatibilní je jednou z architektur, které se pro Linuxu běžně používají. Velikou roli zde hraje BIOS, který nemusí mít přesné analogie pro různé systémy. V následujícím příkladu, který popisuje spouštěcí proces Linuxu nad architekturu IBM PC kompatibilní se předpokládá, že:
- BIOS po nastartování nejprve určí, které periferie jsou k PC připojené. Poté, co je hardware vyjmenovaný, BIOS zjistí zda jsou komponenty nutné pro boot aktivní, a pokud ano, načte a spustí zaváděcí kód z nakonfigurovaného bootovacího zařízení. Nejdůležitější je test operační paměti, grafické karty a procesoru. Pokud se v počítači nachází alespoň tento hardware (a je v pořádku), je počítač funkční a teoreticky je připraven k použití.
- Zavaděč (boot loader) ve většině případů uživateli nabídne menu s možnými variantami bootování. Toto menu má i svojí výchozí možnost. Pokud uživatel nevybere žádnou z dostupných možností, automaticky se po nějaké době vybere právě možnost výchozí. Jakmile je výběr učiněn, zavaděč načte jádro do paměti, předá mu potřebné parametry a poté veškerou kontrolu.
- Jádro dekomprimuje samo sebe, nastaví systémové funkce, dále nastaví nezbytný hardware a stránkování paměti, a zavolá funkci
start_kernel()
, která provede většinu systémového nastavení (přerušení, zbylá nastavení paměti, inicializaci komponent a ovladačů, atd.). Start_kernel se pustí samostatně, dále se spustí idle proces, scheduler (plánovač), a init proces, který je proveden v uživatelském prostoru. - Init se skládá buď ze skriptů, které jsou spouštěny shellem (sysv, bsd, runit), nebo z konfiguračních souborů, které jsou spouštěny pomocí binárních komponent (systemd, upstart). Init má specifické úrovně (sysv, bsd) nebo cíle (systemd), ty se skládají ze specifických služeb (démonů). Tyto úrovně či cíle poskytují struktury a různé neprovozní služby operačního systému a tvoří uživatelské prostředí. Typické prostředí serveru spustí webový server, databázové služby a vytváří síť.
- Typické desktopové prostředí začíná démonem (daemon), který se nazývá display manager. Ten spustí grafické prostředí, které se skládá z grafického serveru, který poskytuje základní základní grafický balík (stack), a z přihlašovacího managera, který nabízí možnost zadat přihlašovací údaje a vybrat si relaci. Poté, co uživatel zadá správné přihlašovací údaje, spustí tzv. session manager danou relaci. Relace je sada programů, jako jsou prvky uživatelského rozhraní (panely, applety, atd.), které společně mohou vytvořit kompletní desktopové prostředí.
Při vypnutí je volán init aby kontrolovaným způsobem zavřel všechny funkce uživatelského prostoru. Init se poté ukončí a jádro provede vlastní vypnutí.
Reference
V tomto článku byl použit překlad textu z článku Linux startup process na anglické Wikipedii.