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 zbylá část musí u obsahovat ovladače, které zpřístupní souborový systém, na kterém je uložen druhý stupeň zavaděče. To však sebou u GRUB legacy neslo jistá úskalí.

Např. při bezdiskovém zavádění ze sítě, musela 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 znamenalo 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 toto vyřešil 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.

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.

MBR.svg

Jak je v schématu naznačeno, 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

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.

Upozornění Za určitých okolností to však nemusí stačit! Kupř. máte-li nad diskovým oddílem vytvořeno raid pole, nad ním LVM a logický disk se systémem naformátovaným na reiserfs. V takovém případě musíte buď vytvořit pro grub samostatný logický disk naformátovaný na některý ze souborových systémů ext (jejichž ovladač pro GRUB2 je mnohem menší). Nebo musíte použít tabulku rozdělení disku, u níž začíná první diskový oddíl až na sektoru 2048.

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.

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.