GRUB (proces zavedení systému)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání


Při spuštění počítače hledá BIOS zařízení, ze kterého by mohl spustit nějaký OS. Zpravidla nejdřív zkusí načíst a prohledat zaváděcí sektory lokálních blokových zařízení a pokud nic nenajde, skončí chybovým hlášením. Podporuje-li však síťová karta PXE, může se pokusit zavést systém i bezdiskově ( diskless ) - po síti. BIOS však obvykle nespouští rovnou operační systém, ale tzv. zavaděč.

Zavaděč je aplikace, zcela nezávislá na spouštěném operačním systému, která umožňuje:

  • zavést operační systém
  • předat zaváděnému operačnímu systému další parametry a tím ovlivnit proces jeho spouštění
  • spustit jiný zavaděč

Zavádění z HDD

U blokových zařízení typu fd a cd je předem dané, kde má být jádro ( tj. kód, který je obsahem core.img ) uloženo, kdežto u hd zařízení to tak jednoznačné není. Liší se jak velikostí, tak umístěním sektoru, ze kterého se BIOS snaží zavaděč spustit.

U PC byl původně rozhodující první sektor, nazývaný MBR (Master Boot Record - hlavní zaváděcí záznam), ve kterém bylo pro kód zavaděče vyhrazeno prvních 440 bajtů.

Tento sektor rovněž obsahoval informaci o tom, zda-li je, či není diskový prostor rozdělen na více diskových oddílů - partitions. Součástí této tabulky diskových oddílů je také informace, od kterého sektoru začíná první diskový oddíl.

Poznámka 512 Bajtů pro MBR sektor je dědictvím DOSu. Na této hranici začínal u FAT12 datový prostor. U disků větších než 30MB se musel vyřešit problém s tím jak obejít omezení FAT systému, proto byl začátek datové oblasti posunut dále. BIOS však tento první sektor i nadále využívá při hledání zavaděče.

První stupeň zavádění

GRUB jako první se načítá tzv. "first stage" (první stupeň). Ten v případě GRUB legacy obsahoval pouze informaci o tom, na kterém offsetu blokového zařízení se nachází zbylá část kódu, nezbytná pro spuštění vlastního zavaděče, neboli "second stage" (druhý stupeň).

První stupeň se musel vejít vyhrazeného prostoru 512 bajtů jednoho sektoru, ale zbylá část, označovaná jako "1.5 stage" mohla zabrat až 30 kilobajtů - od následujícího sektoru po začátek prvního diskového oddílu či souborového systému.

Upozornění Právě tato část (která u GRUB2 odpovídá svou funkcionalitou kódu v core.img) musí u GRUB-legacy obsahovat ovladače, které zpřístupní souborový systém, na kterém je uložena vlastní "second stage". To však sebou nese jistá úskalí.

Např. při bezdiskovém zavádění ze sítě, musí tato část zavaděče obsahovat ovladač pro lokální síťovou kartu. Vzhledem k široké škále dostupných síťových karet, to však znamená nemalý problém, protože nebylo dost dobře možné vtěsnat ovladače pro všechny síťové karty do tak malého prostoru. Navíc pro spoustu z nich ani GRUB legacy ovladač nemá.

GRUB2 vyřešil síťové zavádění přes PXE. Při jeho použití se o stažení celého prvního stupně zavaděče, včetně přístupu k dalším modulům ( a při bezdiskovém zavádění i k souborům linuxového jádra ), stará firmware síťové karty přes TFTP protokol.

GRUB2 používá podobné rozdělení prvního stupně.

boot.img
odpovídá svým užitím first stage u GRUB-legacy
core.img
funkcionalitou odpovídá 1.5 stage, rozdíl je především v tom, že v případě core.img jde o modulární slepenec, který nevyžaduje rekompilaci celého zavaděče, ale moduly lze sestavit na míru - podle potřeby.

Blok core.img je sestaven ze tří částí:

  1. Kód, jehož úkolem je rozbalit zbytek obsahu core.img do paměti a spustit jádro zavaděče. Ten je různý, v závislosti na tom, odkud má být zavaděč spuštěn.
    • pro zavedení z CD cdboot.img
    • pro zavedení z lokálního disku je diskboot.img
    • pro zavádění GRUB2 prostřednictvím jiného zavaděče lnxboot.img
    • pro bezdiskové zavádění je určen pxeboot.img
  2. Jádro zavaděče - kernel.img - zajišťuje základní funkce zavaděče. V případě nějakého problému při zavádění běží v tzv. rescue mode
  3. Moduly - na tom, jaké moduly jsou součástí core.img závisí úspěch zaváděcího procesu.
Poznámka Kromě uvedených lze najít v instalačním adresáři GRUB2 ještě grldr.img a g2hdr.img

MBR.svg

0 + sektorů Souborový systém, Logická vrstva,... Poznámka
0 XFS, BFS, NTFS, FAT, OCFS2
1 LVM2
2 HFS, HFS+, Ext2, Ext3, Ext4, Minix
8 linuxový SW RAID
16 UFS1 + 8 bajtů
64 JFS
128 Reiserfs, Reiser4, Brtfs UFS2 + 8 bajtů

Druhý stupeň zavádění

Když převezme otěže zavádění druhý stupeň zavaděče, načte konfigurační soubor s vlastním výběrem možností spuštění operačního systému.

Původní GRUB legacy používá jako výchozí soubor s názvem menu.lst. GRUB2 používá soubor grub.cfg. Změna však není pouze kosmetická. Tyto soubory se mj. liší také syntaxí. GRUB2 navíc umožňuje vytvářet skripty, které mohou menu dynamicky měnit podle toho co je k dispozici.

Asi největší výhodou, kterou má GRUB je integrovaný příkazový řádek, do kterého se dá z grafického menu kdykoliv přepnout a operativně podle potřeby volby pro zavedení systému pozměnit. Díky tomu lze řešit běžné problémy se zavedením systému, aniž by bylo nutné používat při chybném nastavení zavaděče pro zavedení nainstalovaného systému nějaké další záchranné médium.

Bezdiskové zavádění

DHCP a TFTP server
Z DHCP serveru si klientské stanice natahují informace o nastavení sítě. TFTP server nabízí ke stažení soubory nezbytné pro bezdiskové zavedení systému. Může jít o stejný stroj, ale nemusí.
Klientská stanice
Stroj na kterém fyzicky zavádíme operační systém.

Pro bezdiskové zavádění se používá PXELINUX , ale také GRUB lze používat bezdiskově. Jak už bylo zmíněno u prvního stupně zavádění, původní GRUB-legacy vyžaduje pro bezdiskové zavedení ze sítě zakompilovaný ovladač pro síťovou kartu klientské stanice. Přidání nového ovladače proto znamená pokaždé rekompilaci a reinstalaci celého GRUBu - tedy přinejmenším náhradu stávajícího souboru pro bezdiskové spuštění - pxegrub aktualizovanou verzí. Soubor pxegrub ve své podstatě tvoří zabalené oba stupně zavaděče, rozšířené o možnosti práce se sítí.

Bios klientské stanice si z TFTP serveru přes PXE síťové karty tento soubor stáhne a zavede stejným způsobem, jako by jej našel někde na disku. Pokud je k dispozici ovladač síťové karty, lze pak zavádět i distribuce bezdiskové rovnou ze sítě. Pokud ne, můžeme zavést pouze lokální systémy.

Upozornění GRUB2 rovněž umožňuje tak, jako GRUB legacy bezdiskové zavedení systému. Také si umí přes PXE z TFTP serveru dotahovat další moduly, ale pozor! Přes TFTP nelze provést vylistování vzdáleného adresáře. Starší verze (1.97) měla ještě ke všemu problém se zavedením samotného OS.

Kdy nám ani editace nepomůže..

Řešit problémy se zavedením OS lze pouze do té chvíle než dojde k poškození primary stage (oblasti kde je první stupeň), která zajišťuje natažení zbytku zavaděče, nebo diskového oddílu na kterém je secondary stage (druhý stupeň).

V případě poškození primary stage lze provést reinstalaci GRUBu kupř. z nějakého LiveCD, které obsahuje GRUB. S oblibou přepisují MBR sektor při instalaci zvláště systémy MS Windows.

Ve druhém případě není jiná možnost, než GRUB nainstalovat kompletně znovu. Výhodou je, že GRUB nevyžaduje nějaké speciální závislosti, takže to nemusí být nutně ten distribuční, ale klidně i ten z liveCD.