Přeskočit na obsah

Start Linuxu

Z Wikipedie, otevřené encyklopedie

Start Linuxu je v informatice vícefázový proces, který je prováděn během bootování nainstalovaného Linuxu. V mnoha ohledech se tento proces neliší od bootování BSD a jiných unixových systémů, ze kterých je odvozen. Fáze startu Linuxu zahrnují inicializaci firmwaru, spuštění zavaděče (boot loader), načtení a spuštění jádra Linuxu, a spuštění různých spouštěcích skriptů a démonů. Jednotlivé fáze se mnou v různých distribucích Linux lišit, například zavaděčem může být GRUB, LILO, SYSLINUX nebo Loadlin; systém může být dále spuštěn pomocí tradičních skriptů a nástroje init nebo pomocí modernějšího systemd, případně Upstart.

Přehled

Průběh jednotlivých fází spouštěcího procesu Linuxu závisí na architektuře (počítačové platformě) daného počítače. Počítače IBM PC kompatibilní jsou jednou z architektur, které se pro Linux běžně používají. Velikou roli zde hraje BIOS, který nemusí mít přesnou analogii v jiných systémech. V následujícím příkladu, který popisuje spouštěcí proces Linuxu na architektuře IBM PC kompatibilní se předpokládá, že:

  1. BIOS po nastartování nejprve určí, které periferie jsou k PC připojené. Poté, co je získán seznam hardware (enumerace), zjistí BIOS zda jsou komponenty nutné pro boot aktivní a pokud ano, načte a spustí zaváděcí kód z nastavené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í.
  2. 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.
  3. 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 je spuštěn idle_task, scheduler (plánovač) a proces init, který běží v uživatelském prostoru.
  4. 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íť.
  5. 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.