GRUB (proces zavedení systému)
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.
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.
První stupeň u GRUB2 je sestavován s použitím kusů kódu, uložených v souborech s příponou .img, ke kterým mohou být přilepeny i některé vybrané moduly.
- boot.img
- odpovídá svým užitím původní first stage u GRUB legacy
- core.img
- funkcionalitou odpovídá 1.5 stage, rozdíl je však v tom, že GRUB legacy pro sestavení tohoto bloku vyžadoval rekompilaci, kdežto core.img je slepenec, který to nevyžaduje a může být podle potřeby při instalaci sestaven na míru.
Jak je v schématu naznačeno, blok core.img je sestaven ze tří částí:
- 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
- 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
- Moduly - na tom, jaké moduly jsou součástí core.img závisí úspěch zaváděcího procesu.
Kromě uvedených lze najít v instalačním adresáři GRUB2 ještě grldr.img a g2hdr.img |
Velikost core.img je tedy proměnlivá a záleží na ní i zda vůbec lze GRUB2 na lokální disk nainstalovat. Průměrná velikost first stage je cca kolem 32kB což odpovídá zhruba 62 sektorům, které předcházejí prvnímu diskovému oddílu u MS-DOS kompatibilního rozdělení disku.
Následující tabulka obsahuje přehled offsetů souborových systémů a logických vrstev. z tabulky je jasně patrné, že GRUB2 může být nainstalován na disk bez tabulky diskových oddílů pouze tehdy, je-li naformátován na souborový systém s offsetem větším než 62 sektorů. Jinak je nutno vždy použít tabulku diskových oddílů.
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ů) | Souborový systém Btrfs umožňuje vypustit logické vrstvy pro RAID a LVM, protože tyto funkcionality má v sobě |
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.
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.