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ěč

U blokových zařízení typu fd a cd je předem dané, kde mohou být data zavaděče uloženy, i jaké moduly se musí během prvního stupně zavést, aby bylo ze zařízení a jeho souborového systému možné zavést operační systém. U pevných disků to tak jednoduché není, neboť se liší jak velikostí, tak způsobem rozmístění dat.

Zavádění z HDD

U PC byl historicky rozhodující sektor s MBR (Master Boot Record - hlavní zaváděcí záznam), ve kterém byl jednak vymezený prostor pro prvních 440 bajtů zavaděče, ale především informace o případném rozdělení disku.

MBR.svg

První stupeň zavádění

V případě GRUB legacy se načítá jako první tzv. "first stage" (první stupeň). Ten se musí vejít do prvních 512 bajtů pevného disku (tzv. MBR sektor), proto je v něm obsažena pouze informace o tom, na kterém offsetu pevného disku se nachází další část, která je nezbytná pro zavedení tzv. "second stage" (druhý stupeň).

Ten může zabrat až 30 kilobajtů a může být umístěn buď hned za "first stage", nebo na některý jiný diskový oddíl. Protože však ještě nejde o samotný "second stage", tak se hovoří jo stupni 1.5.

Tato část obsahuje ovladače, které zpřístupní souborový systém kde je uložena samotná "second stage". Např. aby bylo možné zavést systém ze sítě, musí tato část obsahovat příslušný ovladač síťové karty. Nebo pokud je systém na linuxovém SW raid zařízení, pak musí obsahovat modul pro raid.

Vzhledem k široké škále dostupných síťových karet, to představuje velký problém, protože se může stát, že zrovna pro vaši síťovou kartu stroje který chcete nabootovat GRUB legacyovladač nemá. GRUB2 proto se síťové zavádění řeší přes PXE, při kterém natažení prvního stupně (first stage) se základními moduly si přes tftp řeší sám firmware síťové karty.

GRUB2 také vyšel z předpokladu, že pokud zaváděný systém nepoužívá celý disk, ale je nainstalován na některém z diskových oddílů, pak lze obsadit celých 4096 bajtů a nikoliv jen prvních 512.

Poznámka 512 Bajtů pro MBR sektor je dědictvím DOSu. Od této hranice 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 byla datová oblast posunuta dále.

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.