Obsah

Hlavní stránka

GRUB

GRUB (Grand Unified Bootloader) je zavaděč operačního systému (OS). Zavaděč se aktivuje ihned po ukončení POST testu BIOSu a jeho úkolem je nakopírovat jádro Linuxu do paměti a spustit ho (předat mu řízení počítače). GRUB na rozdíl od standardního zavaděče umožňuje předat jádru parametry, umožňuje uživateli vybrat z více variant pomocí menu a umožňuje též položky menu upravovat, k čemuž používá vlastní interní shell. GRUB je v současné době nejrozšířenějším linuxovým zavaděčem, který vytlačil dříve populární a o něco jednodušší zavaděč LILO. Od Fedory 16 se používá GRUB verze 2, který přináší několik větších změn.

Kromě Linuxu umožňuje spustit i jiné operační systémy, kde je nejčastější doplňující možností MS Windows.

Za běžných okolností není potřeba do činnosti GRUBu zasahovat, protože je automaticky spuštěn preferovaný systém (viz kapitola Změna výchozího OS v menu GRUB). Avšak v případě potřeby (havárie systému, zapomenuté administrátorské heslo, …) je to velmi silný nástroj, pomocí kterého můžete ovlivnit start počítače, resp. vybraného operačního systému.

Ovládání zavaděče GRUB

GRUB je zaveden do paměti při startu počítače jako první, hned po POST1) testech BIOSu2). Zobrazí se odpočet (obvykle nastavený na 3 vteřiny, viz kapitola Nastavení časového limitu pro automatické spuštění). Tento odpočet je možné přerušit stiskem libovolné klávesy, po kterém se zobrazí menu.

V menu lze pomocí kláves se šipkami vybrat libovolnou položku a stiskem klávesy Enter ji aktivovat, případně ji ještě před aktivací upravit pomocí interního shellu.

Poznámka: Na obrazovce zavaděče je vždy uvedena nápověda.

Přidání parametru

Mezi hlavní úkoly GRUBu patří předávání parametrů jádru. Jednotlivé parametry jsou odděleny mezerami. Jádro tak při startu může změnit své chování (používá se při aktivaci experimentálních funkcí, při řešení problémů a podobně). Pokud jádro předanému parametru nerozumí, je ignorován, protože se může jednat o parametr, který bude zpracován až startovacími skripty.

Editace položky menu

Přerušte GRUB a stiskněte klávesu e (edit). Následuje menu s výpisem, který je podobný následujícímu

set Fedora (3.1.5-2.fc16.x86_64)
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root a5af04f3-89b1-471c-a883-9e481614f986
echo 'Loading Fedora (3.1.5-2.fc16.x86_64)'
linux   /vmlinuz-3.1.5-2.fc16.x86_64 root=UUID=4389faaa-68e7-40cf-8d19-fa55c1b49531 ro 
echo 'Loading initial ramdisk ...'
initrd /initramfs-3.1.5-2.fc16.x86_64.img

Nyní můžete konfiguraci editovat. Po ukončení editace stiskněte Ctrl+x. Tím systém nastartuje s pozměněnými parametry.

Trvalá změna v nastavení

Pokud si přejete některou volbu předávat jádru trvale, můžete editujtovat soubor /boot/grub2/grub.cfg, který jednotlivé položky menu obsahuje.

:!: Soubor grub.cfg je automaticky generován a jeho přímá editace se nedoporučuje, neboť může být při některých událostech automaticky přegenerován a o změny přijdte.

Kde se GRUB2 nastavuje

GRUB2 používá strukturu sktriptů v adresáři /etc/grub.d/ k automatickému vygenerování všech položek startovacího menu a to včetně položek jiných operačních systému - tzn. autodetekce jiných OS.

Pokud byste přesto chtěli přidat nějakou vlastní položku menu, je potřeba ji umístit do souboru /etc/grub.d/40_custom. Je ovšem potřeba dodržet správnou syntaxi položek menu.

Pokud chcete pouze změnit parametry, nebo upravit chování zavaděče GRUB2 editujte soubor /etc/default/grub.

Přesný popis všech paramterů získáte příkazem:

info -f grub2 -n 'Simple configuration'

Zkrácený seznam nejčastěji používaných parametrů:

GRUB_DEFAULT=0                              # výchozí položka menu při startu systému
#GRUB_HIDDEN_TIMEOUT=0                      # čeká sekund na stisk klávesy při skrytém menu
GRUB_HIDDEN_TIMEOUT_QUIET=true              # skryje odpočet sekund
GRUB_TIMEOUT=10                             # nastartuje výchozí položku sekund po zobrazení menu
GRUB_CMDLINE_LINUX=""                       # parametry pro všechna jádra typu linux
GRUB_CMDLINE_LINUX_DEFAULT="quiet rhgb"     # parametry pro všechna jádra typu linux mimo položek pro záchranný mód
GRUB_DISABLE_RECOVERY=true                  # nezobrazuj v menu položky se záchraným módem
GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
                                            # seriová konzole GRUBu a startu systému

Pokud provádíte změny v parametrech zavaděče, musíte jeho konfigurační soubor přegenerovat příkazem

grub2-mkconfig -o /boot/grub2/grub.cfg

Odlišnosti GRUBu v1 a v2

Mezi GRUBem verze 1 a 2 je několik důležitých rozdílů

  1. Zatímco disky jsou ve verzi 1 i 2 číslovány od nuly (tzn. sda je hd0), oddíly disků jsou ve verzi 2 číslovány od jedničky navíc se používá alias dle typu použité tabulky dělení disku. Tedy první oddíl na prvním disku je (hd0,msdos1)
  2. Změnil se zápis řádku pro Linuxové jádro, který nezačíná na „kernel“ ale na „linux“
  3. Konfigurační souboru grub.cfg je potřeba po změnách regenerovat (grub2-mkconfig)
  4. Ve verzi 2 neexistuje jediný příkaz na skrytí startovací nabídky „hiddenmenu“, ale je možné skrýt i odpočet, k nastavení je tak potřeba více parametrů

Start do textového režimu

Při startu přidejte jako doplňující parametr číslo 3 (oddělené od předchozích parametrů mezerou), postup viz výše.

Pokud je při instalaci systému vybráno nějaké grafické prostředí, start systému automaticky předvolen na runlevel číslo 5, kdy je kromě klasických textových konzolí spuštěno i grafické prostředí X Window System, resp. jeho X Display Manager, který v grafické obrazovce žádá vstup přihlašovacího jména a hesla.

Máte-li s grafickým prostředím problémy nebo jen chcete ušetřit paměť svého serveru, nechte aktivovat runlevel 3, kde je spuštěn jen textový režim, ve kterém se mezi jednotlivými textovými konzolemi můžete přepínat pomocí kláves ALT+F1 až ALT+F6. Pro aktivaci grafického rozhraní můžete na příkazový řádek zadat:

init 5

Případně můžete systém restartovat příkazem reboot nebo stiskem kombinace kláves CTRL+ALT+DEL.

Start do jednouživatelského režimu

Při startu přidejte jako doplňující parametr číslo 1 (oddělené od předchozích parametrů mezerou), postup viz výše.

V jednouživatelském režimu systém nastartuje do runlevelu 1, kde spustí pouze základní služby a neumožní přihlásit se více než jednomu uživateli (je aktivní jen jedna textová konzole). Není nutné se přihlašovat a automaticky je spuštěn shell superuživatele root. Jednouživatelský režim slouží jako nouzový pro opravu případných problémů (úprava konfiguračních souborů, změna administrátorského hesla apod.).

Jednouživatelský režim můžete opustit jedním z níže uvedených příkazů (přechod do jiného runlevelu nebo restart):

init 3
init 5
reboot

Změna předvolené položky v menu

V konfiguračním souboru /etc/default/grub lze nastavit implicitní (výchozí) položku, která je automaticky aktivována po uplynutí nastaveného času bez zásahu uživatele. Uživatel může odpočet přerušit a vybrat jinou položku. Zazálohujeme původní konfiguraci a změníme řídící soubor:

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup
gedit /etc/default/grub

V souboru nalezněte nebo přidejte řádek

...
GRUB_DEFAULT=0
...

Číslo přepište na požadovanou hodnotu a soubor uložte. Toto číslo vyjadřuje pořadové číslo položky menu OS uvedeného v konfiguračním souboru grub.cfg (číslování systémů opět začíná nulou).

Regenerujte konfiguraci

grub2-mkconfig -o /boot/grub2/grub.cfg

Alternativne jde udelat zapis i jmenem polozky

grep menuentry /boot/grub2/grub.cfg
menuentry 'Fedora (3.1.9-1.fc16.x86_64)' --class gnu-linux --class gnu --class os {
menuentry 'Fedora (3.1.8-2.fc16.x86_64)' --class gnu-linux --class gnu --class os {
menuentry 'Fedora (3.1.7-1.fc16.x86_64)' --class gnu-linux --class gnu --class os {
menuentry "Windows Vista (loader) (on /dev/sda1)" {
...
GRUB_DEFAULT="Windows Vista (loader) (on /dev/sda1)"
...

Nastavení časového limitu

GRUB čeká stanovený časový limit na zásah uživatele a poté automaticky aktivuje předvolenou položku v menu. Následující postup popisuje nastavení tohoto časového limitu.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup
gedit /etc/default/grub

V souboru nalezněte nebo přidejte následující řádek (číslo se může lišit).

...
GRUB_TIMEOUT=10
...

Číslo přepište na požadovanou hodnotu v sekundách a soubor uložte.

Regenerujte konfiguraci

grub2-mkconfig -o /boot/grub2/grub.cfg

Přidání položky pro MS Windows

Konfigurační soubor grub.cfg by měl být již v rámci instalace Fedory generován tak, aby umožňoval spuštění OS Windows. Následující postup popisuje ruční přidání položky OS Windows do konfiguračního souboru.

Předpokládejme, že /dev/sda1 je oddíl s nainstalovaným operačním systémem Windows. Nejprve zjistěte UUID (identifikační řetězec) oddílu

blkid /dev/sda1
/dev/sda1: UUID="01CA670375A83080" TYPE="ntfs" 

Vytvořte zálohu původního konfiguračního souboru

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_backup

a následně tento soubor otevřete pro editaci.

gedit /boot/grub2/grub.cfg

Na konec souboru přidejte řádky

menuentry "Microsoft Windows (on /dev/sda1)" --class windows --class os {
      insmod part_msdos
      insmod ntfs
      set root='(hd0,msdos1)'
      search --no-floppy --fs-uuid --set=root 01CA670375A83080
      drivemap -s (hd0) ${root}
      chainloader +1
}

a soubor uložte.

Nezapomeňte změnit UUID oddílu na to, které jste zjistili příkazem blkid.

Pokud chcete, aby tento záznam přetrval regenerování konfigurace, přidejte jej do souboru /etc/grub.d/40_custom.

Změna grafického pozadí

Nejprve zazálohujte původní soubor grub.cfg

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_backup

a následně tento soubor otevřete pro editaci.

gedit /etc/default/grub

Do konfiguračního souboru přidejte

GRUB_GFXMODE=1280x1024x16
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_BACKGROUND=/usr/share/backgrounds/verne/default/normalish/verne.png 

a soubor uložte.

Regenerujte konfiguraci

grub2-mkconfig -o /boot/grub2/grub.cfg

Zákaz změny nastavení menu

FIXME

Změna hesla zavaděče GRUB v případě, že jste zapomněli původní heslo

FIXME

Obnovení zavaděče GRUB po instalaci Windows

Předpokládejme, že bootovací oddíl se nachází na disku /dev/sda3). Nejprve je třeba s použitím instalačního DVD nabootovat do záchranného režimu. Zavaděč obnovíte pomocí příkazu

grub2-install /dev/sda

Následně stačí pouze dvakrát po sobě stisknout klávesy Ctrl + D, což má za následek restart počítače.

Číslování disků zavaděčem GRUB

GRUB používá označení disků odlišné od značení popisovaného v kapitole Disky a mechaniky CD/DVD. Např. disk sda1 je pro účely zavaděče GRUB označován jako (hd0,msdos1), disk sdb2 pak jako (hd1,msdos2). Logika označování je tedy ta, že první parametr je pořadovým číslem disku, druhý je pořadovým číslem diskového oddílu podle typu tabulky disku (MS DOS, GPT..)

Reinstalace zavaděče GRUB

Poznámka: Tento postup je také možné použít k správnému nastavení zavaděče GRUB při instalaci. Klasickým případem je situace, kdy se na prvním disku nachází Windows a na druhý jste nainstalovali Fedoru. V tomto případě Vám po instalaci zavaděč nastartuje pouze do shellu grub>.

Příkaz ls vypíše všechny dostupné oddíly

Pokud je adresář /boot součástí kořenového adresáře (tj. není umístěn na samostatném diskovém oddílu), pokračujte

search.file /grub2/grub.cfg

GRUB vám „odpoví“ označením diskového oddílu, na kterém se nachází4).

Jednodušší cesta

Řekněte GRUBu ať načte konfiguraci

configfile (hd0,msdos1)/grub2/grub.cfg

Složitější cesta

Vypište si obsah oddílu

ls -lh (hd0,msdos1)/

A nastavte cesty a parametry jádra a initramfs podle vypisu prikazu ls nebo si příkazem cat vypište obsah konfiguračního souboru grub.cfg

cat (hd0,msdos1)/grub2/grub.cfg 
linux /vmlinuz-3.2.5-16.fc16.x86_64 ro root=UUID=4389ffaa-68e7-40cf-3d19-fa55c1b49532
initrd /initramfs-3.2.5-16.fc16.x86_64.img
boot

UUID upravte podle svého disku.

Tím nastartujete do existující instalace. Zde spustťe

grub2-install /dev/sda

Odstranění zavaděče GRUB

Zavaděč systému (v tomto případě GRUB) není možné zcela odstranit - vždy musí být nahrazen jiným. Pokud chcete místo GRUBu používat LILO (LInux LOader), který ve Fedoře již není defaultně obsažen, nadefinujte jeho parametry v /etc/lilo.conf a spusťte příkaz

lilo

z příkazové řádky.

Pokud chcete nahradit GRUB zavaděčem systému MS-DOS, pak nastartujte z diskety MS-DOS a do příkazové řádky zadejte

A:> fdisk /mbr

Pokud chcete nahradit GRUB zavaděčem systému NTLDR Windows XP, pak nastartujte z instalačního CD Windows XP do záchraného módu a zadejte

fixmbr

Tím se zavaděč GRUB přepíše zavaděčem NTLDR a GRUB nebude nadále používán.

Poznámka: Pokud odstraňujete z disku s více operačními systémy linuxovou instalaci, nejdříve nahraďte GRUB a pak teprve odstraňujte Linuxový diskový oddíl.


Hlavní stránka

3)
Pokud máte v systému pouze jeden disk, je tento disk zcela jistě označen jako sda.
4)
Jestliže se např. nachází na prvním diskovém oddílu prvního disku, bude na výpisu figurovat (hd0,msdos1).