Kapitola 8. Startování

Obsah

8.1. Startovací proces v Linuxu
8.2. Program init
8.3. Úrovně běhu
8.4. Změna úrovně běhu
8.5. Init skripty
8.6. Editor úrovní běhu
8.7. SuSEconfig a /etc/sysconfig
8.8. YaST sysconfig Editor

Abstrakt

Startování a inicializace unixového systému bývají oříškem i pro zkušeného administrátora. Tato kapitola přináší stručný úvod do velmi komplexní. Najdete zde také informace o úrovních běhu a systémové konfigurací v sysconfig.


8.1. Startovací proces v Linuxu

proces startování Linuxu se skládá z několika úrovní, ve kterých se spouští různé procesy. Následující část pojednává o startovacím procesu a nejdůležitějších komponentech.

  1. BIOS

    První věc, která se stane po zapnutí počítače je, že BIOS (Basic Input Output System) převezme řízení, nastaví obrazovku a klávesnici na počáteční hodnoty, a otestuje paměť. V této chvíli systém ještě neví o žádných ukládacích či externích zařízeních. Poté systém načte z paměti CMOS (kde je uloženo nastavení BIOSu) současný čas a datum, a informace o nejdůležitějších periferních zařízeních. Po načtení CMOS by měl BIOS rozeznat první pevný disk včetně informací o jeho geometrii. Poté může z tohoto disku začít zavádět operační systém (dále jen OS).

  2. Zavaděč

    Nejdříve se nahraje počátečních 512 bytů z prvního segmentu pevného disku do paměti a spustí se kód, který je uložen na začátku tohoto segmentu. Tento kód, zavaděč, začne nahrávat zbytek operačního systému. Proto se tomuto segmentu disku obvykle říká Master Boot Record (MBR). Více informaci o zavaděči najdete v kapitole 9 – „Starování systému a zavaděče.

  3. Jádro a initrd

    Po systémové kontrole zavaděč nahraje jádro a ramdisk (initrd) do paměti. Linuxové jádro umožňuje zavedení malého souborového systému do paměti, ve kterém se zajistí před připojením kořenového souboru spuštění několika programů. Pak dojde k rozbalení initrd a jeho připojení ve formě dočasného kořenové souborového systému. initrd obsahuje minimální linuxový systém s programem linuxrc, který je spuštěn ještě před připojením skutečného kořenového systému. Po úspěšném dokončení běhu linuxrc jádro, pokud je to možné, uvolní paměť zabranou initrd a spustí init. Více informací o initrd najdete v části 8.1.1 – „initrd“.

  4. linuxrc

    tento program provádí všechny akce potřebné ke správnému připojení kořenového souborového systému jako např. zavedení správného modulu souborového systému a ovladačů pro diskové zařízení. Po úspěšném připojení kořenového souborového systému se linuxrc ukončí a jádro spouští program init. Více informací o linuxrc najdete v části 8.1.2 – „linuxrc“.

  5. init

    init se stará o proces spouštění na několika úrovních. Popis init najdete v části 8.2 – „Program init“.

8.1.1. initrd

initrd je malý (obvykle komprimovaný) souborový systém, který se zavádí do ramdisku jako dočasný kořenový systém. Obsahuje minimální linuxové prostředí umožňují vykonání programů před připojením skutečného kořenového systému. Zavádí se přímo do paměti a nemá jiné hardwarové nároky než dostatečnou velikost paměti. initrd vždy spouští linuxrc, který by měl být ukončen bez chybového návratového kódu.

Ještě před připojením kořenového souborového systému a spuštěním operačního systému potřebuje jádro zavést moduly. Může jít o moduly ovladačů diskových zařízení nebo třeba o moduly s podporou síťových souborových systémů (viz Správa síťového nastavení). Moduly potřebné pro připojení kořenového souborového systému by také měl zavádět linuxrc. Aby vše proběhlo úspěšně, musí jádro obsahovat kód, který mu umožní číst souborový systém initrd.

Vytvořte initrd skriptem mkinitrd. V systému SUSE Linux se zaváděné initrd zadávají do proměnné INITRD_MODULES v souboru /etc/sysconfig/kernel. Po instalaci se proměnná automaticky nastaví na správnou hodnotu (linuxrc uloží instalační nastavení). Moduly se pak zavádějí v pořadí, v jakém jsou zadány v INITRD_MODULES. To je důležité především u systémů, kde je vyžadováno několik SCSI ovladačů současně. Změna pořadí modulů by vedla ke změně jmen disků. Nastaveny by tedy měly být pouze ovladače, které jsou potřebné pro připojení kořenového souborového systému. Při instalaci se však zapíšou všechny použití SCSI ovladače, protože jejich pozdější ruční zavádění by mohlo působit problémy.

[Important]Update initrd

Zavaděč zavádí initrd současně s jádrem. Po reinstalaci initrd není GRUB nutné neinstalovat, protože GRUB vyhledává soubory v adresářích při startu.

8.1.2. linuxrc

Hlavním účelem linuxrc je příprava pro připojení a přístupu ke kořenovému adresáři. V závislosti na nastavením vašeho systému je linuxrc také odpovědný za:

Zavádění modulů jádra

V závislosti na vaší konfiguraci může být potřeba před zavést pro některé zařízení ovladače (nejdůležitější je obvykle pevný disk). Aby bylo možné např. správně přistupovat k disku, musí jádro zavést správný modul pro souborový systém.

Správa nastavení RAID a LVM

Pokud konfigurujete kořenový souborový systém na RAID nebo LVM, linuxrc nastaví, aby bylo možné přistupovat k souborovému systému, LVM nebo RAID. Informace o RAIDu najdete v části 2.2 – „Konfigurace softwarového RAIDu“, informace o LVM v2.1 – „Konfigurace LVM“.

Správa síťového nastavení

Jestliže používáte síťový souborový systém, linuxrc zajišťuje zavedení správných síťových modulů.

Pokud je linuxrc volán při startu jako část instalace, úlohy se od uvedených výše liší:

Vyhledání instalačního média

Po startu systému se z instalačního média zavádí jádro a zvláštní initrd s instalátorem YaST. Instalátor YaST běžící v RAM souborovém systému potřebuje k instalaci informace o aktuálním umístění instalačního média.

Prvotní rozpoznání hardwaru a zavedení příslušných modulů

Jak bylo zmíněno v části 8.1.1 – „initrd“, spouštění systému je proces, kdy se zavádí minimum ovladačů, které mohou být použity s většinou hardwaru. linuxrc provádí první zjištění hardwaru, aby zjistil, jaké ovladače budou pro váš systém potřeba. Tyto moduly jsou pak zapsány do proměnné INITRD_MODULES v souboru /etc/sysconfig/kernel a používány při příštích startech systému. Tyto moduly také linuxrc zavede během instalačního procesu.

Zavedení instalačního nebo záchranného systému

Po rozpoznání hardwaru a zavedení správných modulů spouští linuxrc instalační proces a to buď systém s instalátorem YaST nebo záchranný systém.

Spuštění programu YaST

Na závěr linuxrc spustí samotná YaST, který začne s instalací balíčků a nastavením systému.

8.1.3. Informace i initrd

Další informace o initrd najdete v souborech /usr/src/linux/Documentation/ramdisk.txt a a v manuálových stránkách initrd(4) a mkinitrd(8).