[[obsah|Hlavní stránka]] ===== GRUB ===== {{:navody:48x48:devices:drive-harddisk.png }} //GRUB// (**Gr**and **U**nified **B**ootloader) 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 [[grub#Změna výchozího OS v menu GRUB|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 POST(([[http://en.wikipedia.org/wiki/Power-on_self-test]])) testech BIOSu((http://cs.wikipedia.org/wiki/BIOS)). Zobrazí se odpočet (obvykle nastavený na 3 vteřiny, viz kapitola [[grub#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'' (**e**dit). 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ů - 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) - Změnil se zápis řádku pro Linuxové jádro, který nezačíná na "kernel" ale na "linux" - Konfigurační souboru //grub.cfg// je potřeba po změnách regenerovat (grub2-mkconfig) - 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 ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. 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 ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. //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 ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[hardware#Vypsání tabulky rozdělení disku]]. * Přečtěte si kapitolu [[grub#Číslování dísků zavaděčem GRUB]]. 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í ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[grub#Konverze obrázku pro pozadí menu GRUB]]. * Přečtěte si kapitolu [[grub#Číslování dísků zavaděčem GRUB]]. 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 ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. FIXME ==== Změna hesla zavaděče GRUB v případě, že jste zapomněli původní heslo ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. FIXME ==== Obnovení zavaděče GRUB po instalaci Windows ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[oprava#Použití instalačního DVD k záchranným pracem na systému]]. * Přečtěte si kapitolu [[hardware#Vypsání tabulky rozdělení disku]]. Předpokládejme, že bootovací oddíl se nachází na disku ''/dev/sda''((Pokud máte v systému pouze jeden disk, je tento disk zcela jistě označen jako ''sda''.)). Nejprve je třeba s použitím instalačního //DVD// nabootovat do [[oprava#Použití instalačního DVD k záchranným pracem na systému|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 ==== * Přečtěte si kapitolu [[hardware#Disky a mechaniky CD/DVD]]. //GRUB// používá označení disků odlišné od značení popisovaného v kapitole [[hardware#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 ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[grub#Číslování disků zavaděčem 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í((Jestliže se např. nachází na prvním diskovém oddílu prvního disku, bude na výpisu figurovat ''(hd0,msdos1)''.)). === 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 ==== * Přečtěte si kapitolu [[obecne_poznamky|Obecné poznámky]]. * Přečtěte si kapitolu [[hardware#Vypsání tabulky rozdělení disku]]. 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 //GRUB//u používat //LILO// (**LI**nux **LO**ader), 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 7// (platí i pro novější verze), pak nastartujte z instalačního //CD Windows 7// do záchraného módu, spusťe příkazový řádek a zadejte sekvenci příkazů bootrec /fixmbr bootrec /fixboot bootrec /rebuildbcd 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 //Linux//ový diskový oddíl. ---- [[obsah|Hlavní stránka]]