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.
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.
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.
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.
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.
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
Mezi GRUBem verze 1 a 2 je několik důležitých rozdílů
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.
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
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)" ...
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
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.
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
Předpokládejme, že bootovací oddíl se nachází na disku /dev/sda
3). 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.
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..)
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).
Řekněte GRUBu ať načte konfiguraci
configfile (hd0,msdos1)/grub2/grub.cfg
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
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.