GRUB (rescue mode)
Do rescue mode (záchranného režimu) se GRUB2 dostane tehdy, když z nějakého důvodu nemůže pokračovat v činnosti. To se může stát z následujících příčin:
- Při instalaci GRUB2 byl chybně nastaven prefix nebo kořen ( "root" )
- V datovém bloku pro "first stage" chybí modul, potřebný ke zpřístupnění adresáře s dalšími moduly, nutnými pro zavedení systému
- Chybí obsah souboru grub.cfg
Základní příkazy
GRUB2 v záchranném režimu ( mode rescue ) má dostupnou pouze základní sadu příkazů, přesto s jejich pomocí můžete nejenom nalézt odpověď na otázku proč se váš systém nespouští, ale i případnou chybu provizorně opravit a systém spustit.
- set
- je-li spuštěn bez parametrů, vypíše seznam aktuálně nastavených proměnných. Jeho prostřednictvím lze také hodnoty proměnných přenastavit
- ls
- Tento příkaz je zjednodušená varianta příkazu, který je jinak součástí modulu
ls
, provádí vylistování lokálních disků a jejich obsahu, za předpokladu, že jsou natažené moduly, které to umožňují - insmod
- umožňuje natáhnout další moduly. Příkaz rmmod který umožňuje naopak jejich odebírání je stejně jako příkaz lsmod součástí modulu
minicmd
. Tzn. že v rescue mode nemusí být dostupný!
Tuto základní paletu příkazů lze rozšířit pomocí dalších modulů přidaných do do prvního stupně zavaděče (first stage).
Krok první - kontrola proměnných
Chybné nastavení proměnných prefix a root při instalaci GRUB2 je nejčastějším zdrojem problémů při zavádění systému!
grub rescue> set
prefix=(hd96)/boot/grub/i386-pc
root=hd96
|
prefix
Pro GRUB2 je nejdůležitější nastavení proměnné prefix. Prefix obsahuje cestu do adresáře s dalšími moduly, bez kterých může být zavedení systému nemožné.
Není-li hodnota proměnné prefix nastavena správně, tak sice lze moduly zavést, ale při jejich natahování je nutné uvést plnou cestu - tj. včetně blokového zařízení a přípony.
Je-li prefix v pořádku, stačí příkazu insmod předat pouze název modulu bez přípony.
Nastavení prefixu pro first stage se provádí při sestavování core.img , který je její součástí. Viz kapitola o instalaci GRUB2 na fyzické zařízení.
|
root
Druhá proměnná root obsahuje adresu zařízení, které má GRUB2 považovat za výchozí. Není-li tato proměnná nastavena správně, lze sice systém zavést, ale při zavádění musí být před cestou k jádru a ramdisku uvedena i adresa zařízení, včetně příslušného diskového oddílu.
Krok druhý - kontrola dostupných zařízení
Když spustíte příkaz ls bez parametru, uvidíte obvykle podobný výpis, jako je ten na níže uvedeném příkladu...
grub rescue> ls
(hd0) (hd1)
|
error: unknown filesystem
GRUB2 v současné době (verze 1.99~rc3) má k dispozici jak moduly pro většinu běžně používaných souborových systémů, tak i moduly pro různé typy tabulek rozdělení diskových oddílů, i vyšší logické vrstvy (SW RAID, LVM). Jenže prostor pro first stage je většinou omezený a tím pádem tato část zavaděče obsahuje pouze nezbytně nutné moduly.
Tato chybová hláška signalizuje, že zařízení u kterého se pokoušíme o výpis..
- buď žádný souborový systém neobsahuje
- nebo pro jeho souborový systém chybí příslušný modul
- nebo je zařízení jenom nižší vrstvou pro RAID pole, či LVM skupinu
grub rescue> ls (hd2)
error: unknown filesystem
|
U blokových zařízení, které jsou součástí RAID pole, nebo LVM skupiny, záleží také na pořadí v jakém jsou zaváděny moduly pro jednotlivé abstraktní vrstvy.
V případě, že je operační systém nainstalován nad RAID polem, musí být nejdřív natažen modul pro příslušný typ RAID pole a teprve až GRUB2 pole rozpozná, může být zaveden modul pro další vrstvu.
error: bad filename
Je vcelku banální chybová hláška, která se objeví tehdy, pokud cílem příkazu ls není známé fyzické blokové zařízení, nebo adresář.
grub rescue> ls (system-boot)
error: bad filename
|
Obvykle stačí za identifikací zařízení uvést cestu..
grub rescue> ls (system-boot)/
./ ../ lost+found/ grub/
|
error: not a regular file
grub rescue> cat (hd0,msdos1)/grub
error: not a regular file
|
Krok třetí - nastavení prefixu a zavedení modulu
Při bootování z first stage která má sice k dispozici všechny potřebné moduly, ale špatně nastavený prefix (viz upozornění výše), je třeba..
- nejdříve opravit prefix
- pak přenastavit root
- překontrolovat nastavení
- a po natažením modulu
normal
zkusit spustit normální menu
Pokud se normální režim zavést nepodaří, je zřejmě nějaká chyba ve výchozím menu a nezbývá než se pokusit zavést systém ručně.
Krok čtvrtý - zavedení systému
grub rescue> insmod linux
grub rescue> linux /vmlinuz-xxxx root=/dev/sda1 ro single
grub rescue> initrd /initrd.img-xxxx
grub rescue> boot
|
Další proměnné
Při práci s GRUB2 se vám může hodit znalost dalších proměnných, které ovlivňují chování shellu:
- pager
- Nastavuje stránkování výpisu. Je-li nastaveno bez konkrétní hodnoty, posouvá se výpis vždy o celou obrazovku. Jinak v závislosti na nastavené hodnotě. Hodí se to obzvlášť při použití příkazů help, ls, lsmod, cat, aj.
- menu_color_normal
- nastavuje barvy pro menu. Týká se to například i příkazové řádky GRUB2 shellu
- menu_color_highlight
- nastavuje barvy pro vysvícené položky
- gfxmode
- nastavení rozlišení pro zavedení modulu
gfxterm
- default
- určuje pořadí výchozí bootovací položky v menu grub.cfg
- lang=cs_CZ
- nastavení pro locales
- locale_dir
- nastavení adresáře s lokalizačními soubory. Obvykle to je podadresář
locale
, umístěný v prefixu. Nastavení cesty musí být plné, tj. včetně identifikace blokového zařízení.