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
Zavedení linuxového 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
|
Zavedení MS Windows
U MS Windows je součástí diskového oddílu také informace o tom, kde začíná jeho první sektor. U starších MS-DOS tabulek začínal první oddíl obvykle na 63 sektoru. Novější tabulky však začínají na sektoru 2048, což po případném přestěhování diskového oddílu vyžaduje manuální editaci. Stejně tak, jako kdybychom chtěli diskový oddíl z MS Windows umístit na jiný než první diskový oddíl.
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í.