|
Grub2 je program odpovídající za načtení/zavedení systému. Je odkazován přímo z MBR (Master Boot Record - zaváděcí stopy) a zajišťuje předání kontroly mezi BIOSem (de facto firmware základní desky, úplně nejnižší softwarová vrstva) a operačním systémem (OS, jako je kupříkladu Linux, Unix či Windows). Název je akronymem GRand Unified Bootloader, version 2 (Grub 2), druhé verze GNU GRUB.
Nastavení Grub2
Základní nastavení Grubu je možno provést pomocí Správce spouštění - není potřeba ručně upravovat konfigurační soubory.
Hlavní konfigurační soubor GRUBu 2 je grub.cfg v adresáři /boot/grub. Tento soubor je nastaven pomocí mnoha skriptů spuštěných příkazem update-grub. Primárně za nastavení grub.cfg jsou zodpovědné soubory /etc/default/grub a jednotlivé skripty ve složce /etc/grub.d/
grub (/etc/default/grub)
Tento soubor obsahuje nastavení týkající se především toho, jak se zobrazí Grub2 nabídka (jako například čas nabídky, její barvy či pozadí). Tento soubor může být měněn jen s root právy (právy administrátora). Aby se změna zapsala do souboru grub.cfg a tak se stala aktivní, je po úpravě a uložení souboru /etc/default/grub třeba spustit příkaz update-grub.
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"
GRUB_DEFAULT=0
Nastavuje předem vybranou položku nabídky (pořadí shora dolů: 0 pro první, 1 pro druhou... Položku vybranou při posledním startu nastavíte pomocí hodnoty GRUB_DEFAULT=saved a ukládání povolíte pomocí GRUB_SAVEDEFAULT=true).
GRUB_TIMEOUT=5
Nastavuje čas v sekundách před tím, než se automaticky načte hodnota dle GRUB_DEFAULT
Nastavením hodnoty -1 dosáhnete trvalého čekání na výběr uživatele (bez timeoutu).
GRUB_HIDDEN_TIMEOUT=0
Nabídka při startu bude skryta. Zobrazí se nabídka OS, pokud tuto funkci vypnete: na začátek řádky vložte znak #. ( # GRUB_HIDDEN_TIMEOUT=0 )
- Výchozí hodnota závisí na přítomnosti dalších operačních systémů
- jiný OS nenalezen: Nabídka bude zobrazena. ( Řádka bude začínat symbolem #.)
- Jiný OS nalezen: Nabídka bude skryta.
- Pro čísla větší 0 bude systém čekat příslušný počet sekund, ale nezobrazí nabídku.
- 0 - nabídka nebude zobrazena (ani nebude žádné zdržení).
- Když je tento vstup nastaven na 0:
Uživatel může vynutit zobrazení menu držením klávesy SHIFT při startu počítače.
Během startu systém kontroluje stav klávesy SHIFT, pokud nemůže zjistit její stav, je uživateli dána chvilka pro zapnutí nabídky pomocí klávesy ESC.
Pokud je zapnuto, úvodní obrazovka (splash screen) určená pomocí 05_debian_theme bude zobrazena i v případě nastavení skrytí nabídky.
- Když je tento vstup nastaven na 0:
GRUB_HIDDEN_MENU_QUIET=true
- true - nebude zobrazeno odpočítávání. Obrazovka bude prázdná.
- false - počítadlo bude zobrazovat prázdnou obrazovku po dobu nastavenou v GRUB_HIDDEN_TIMEOUT.
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
- určuje označení pro jednotlivé vstupy. (Ubuntu, Xubuntu, Debian, atd.)
GRUB_CMDLINE_LINUX
Pokud existuje, pak tato řádka vkládá zápis na konec linux řádky(v Grub Legacy příkaz "kernel") jak pro normální, tak i pro "recovery" mód. Podobně jako "kopt" řádka v menu.lst.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Tato řádka importuje vstup na konec 'linux' řádky. Zde zapsané se přidává jen na konec normálního módu (nikoliv "recovery") podobně jako "defoptions" řádka v menu.lst. Pokud chcete černou obrazovku se skrolujícími se hláškami o průběhu bootování, odstraňte "quiet splash". Pokud chcete grub obrazovku s omezenými informacemi zobrazenými pod logem Ubuntu, použijte jen "splash".
#GRUB_TERMINAL=console
- Odkomentováním se vypne grafický terminál (grub-pc jen).
GRUB_GFXMODE=640x480
- Odkomentováním (uberte '#' z počátku řádky) se upraví rozlišení celého boot menu. Pro klasické obrazovky (4:3 poměr stran) použijte např.:
- GRUB_GFXMODE=640x480 (výchozí hodnota, pokud systém nenalezne odkomentovanou žádnou hodnotu zde, použije právě tuto )
- GRUB_GFXMODE=800x600
- GRUB_GFXMODE=1024x768
- GRUB_GFXMODE=1600×1200
hodnoty rozlišení najdete třebazde nebo nastavte vlastní méně běžné rozlišení (jako je například můj širokoúhlý notebook s poměrem stran 16:10)
- GRUB_GFXMODE=640x400
- GRUB_GFXMODE=800x500
- GRUB_GFXMODE=1024x640
- GRUB_GFXMODE=1280x800
- GRUB_GFXMODE=1680x1050
- Odkomentováním (uberte '#' z počátku řádky) se upraví rozlišení celého boot menu. Pro klasické obrazovky (4:3 poměr stran) použijte např.:
#GRUB_DISABLE_LINUX_UUID=true
- odkomentujte, pokud nechcete opominout "root=UUID=xxx" parametr Linuxu.
GRUB_DISABLE_LINUX_RECOVERY=true
- přidejte nebo odkomentuje tento řádek pro nezobrazení módu jádra "Recovery" v úvodním menu.
GRUB_DISABLE_OS_PROBER=true
- Zapíná/vypíná test/prohledávání ostatních diskových oddílů na přítomnost dalších operačních systémů (Windows, Linux, OSX, Hurd...).
Obnovení GRUB2 pomocí LiveCD
stáhněte a spusťte LiveCD Ubuntu
otevřete Terminál (např. Alt+F2, zadejte gnome-terminal)
- dále zjistěte výpis všech oddílů disku
sudo fdisk -l
výpis bude vypadat třeba takto
Device Boot Start End Blocks Id System /dev/sda1 * 1 3199 25695936 7 HPFS/NTFS /dev/sda3 3836 9729 47343524+ 5 Extended /dev/sda5 3836 5751 15390238+ 83 Linux /dev/sda6 9596 9729 1076323+ 82 Linux swap / Solaris
nyní potřebujete vědět, které zařízení (a který diskový oddíl) obsahuje váš nainstalovaný linuxový systém, v našem příkladě to je /dev/sda5.
Ujistěte se, že je určení bez chyb - věnujte prosím pozornost výpisu FDISKu připojte Ubuntu oddíl na /mnt
sudo mount /dev/sda5 /mnt
- nainstalujte Grub do MBR disku
sudo grub-install --root-directory=/mnt/ /dev/sda
Tímto se vám přemaže MBR disku /dev/sda!
Buďte velmi opatrní a radši si předtím udělejte zálohu MBR. Také dávejte pozor, aby bylo určení disku (není to oddíl!) bez označení číslem, tedy /dev/sda, NE třeba /dev/sda1.
- restartujte počítač. Po přihlášení do systému aktualizujte Grub pomocí
sudo update-grub
pokud došlo k problémům, zkuste obnovu znova, anebo dejte dotaz do fóra s informacemi z boot_info_script.
Zdroj: http://forum.ubuntu.cz/index.php/topic,42267.0.html
Alternativní postup
stáhněte a vypalte cd s tímto obsahem: Ubuntu LiveCD a nabootujte/načtete z něj systém.
Otevřete Terminál (Alt+F2, zadejte gnome-terminal)
a dále zadejte: $ sudo fdisk -l
nyní potřebujete vědět, které zařízení (a který diskový oddíl) obsahuje váš nainstalovaný linuxový systém, například bude použit /dev/sda1 . Nyní tedy potřebujete připojit (mount) souborový systém (pravděpodobně typu Ext4 či Ext3 v případě Ubuntu, NTFS či FAT v případě Windows) do složky /mnt: $ sudo mount /dev/sda1 /mnt
pokud máte náhodou složku /boot na zvláštním oddílu, musíte připojit i tento. Příklad: pro /dev/sda2 napište: $ sudo mount /dev/sda2 /mnt/boot
Ujistěte se, že je určení bez chyb - věnujte prosím pozornost výpisu FDISKu Vytvořte adresář pro následující příkaz: sudo mkdir /mnt/dev
Nyní připojte zbytek oddílů: sudo mount --bind /dev /mnt/dev
nyní proveďte chroot do vašeho (původního) systému: sudo chroot /mnt
Nyní byste měli být přihlášeni do vašeho trvalého linuxu pomocí příkazu chroot (administrátorská práva bez potřeby používat sudo)
nastavte soubor /etc/default/grub dle vašeho systému
$ nano /etc/default/grub
poté je třeba spustit update-grub pro vytvoření konfig. souboru.
$ update-grub
pro nainstalování GRUBu 2 do MBR (MasterBootRecord - hlavní/první spouštěcí stopa), zadejte grub-install /dev/sda (pokud máte bězné nastavení i hardware, grub se nahraje na první pevný disk
$ grub-install /dev/sda
pokud dojde k chybám, zkuste grub-install --recheck /dev/sda
$ grub-install --recheck /dev/sda
- nyní můžete restartovat počítač přímo do zavaděče GRUB 2 a dále k vaší normální instalaci.
Pokud máte netradiční operační systémy (alternate OS entries), příkaz update-grub vás může oblažit hláškou "Cannot find list of partitions!" (Nemohu nalézt seznam oddílů). Ignorujte ji a pokračujte - jak jednou nabootujete do vaší řádné linuxové instalaci, použijte pomocí Terminálu opět příkaz sudo update-grub a sudo grub-install /dev/sda.
GRUB 2 - snadná editace v grafickém režimu
Velmi pohodlně můžeme upravovat položky grafickým nástrojem nazvaným Grub Customizer. Umožňuje mimo jiné měnit pořadí položek v menu, přejmenovávat položky a samozřejmě také přidávat nebo odebírat položky. Grub Customizer se dá nainstalovat např. takto přes terminál:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer
Po instalaci najdeme Grub Customizer v menu aplikací (System Tools - Grub Customizer).
Po spuštění se objeví okno programu, ve kterém můžeme provádět změny. Poklepáním na položku změníme text. Např. text Ubuntu, with Linux 2.6.35-22-generic snadno změníme třeba na Ubuntu 10.10. Zrušením zaškrtnutí u některé položky tuto položku skryjeme.
Po provedení požadovaných změn jednoduše uložíme nové nastavení kliknutím na Save. Hotovo.
Technické detaily
Grub 2 je kompatibilní se standardem POSIX (Portable Operating System Interface for Unix) jako jsou GNU/Linux, *BSD, Mac OS aj., ale zvládá už i připojit systémy nekompatibilní s tímto standardem.
GRUB 2 je kompletně přepsanou verzí původního GRUBu. Založen na výzkumu projektu PUPA, GRUB2 je mnohem více modulární a přenosnější než jeho předchůdce. Některé z jeho navrhovaných vlastností:
- grafické rozhraní, zahrnutí témat/profilů (theming);
- načítání po částech;
- multiplatformní kompatibilita;
- podpora skriptování;
- uživatelské úpravy menu;
- opravené pojmenovávání oddílů.
Mnoho souborů v /boot/grub bude pro uživatele Grub Legacy nových. Zejména množství souborů "*.mod" v adresáři /boot/grub. Grub 2 je modulární a tak soubory "*.mod" jsou nezbytné. Bez ohledu na množství souborů celková velikost obsahu /boot/grub zůstává v porovnání s Grub Legacy zhruba zachována a tak není třeba zvětšovat /boot oddíl.
grub.cfg (/boot/grub/grub.cfg)
NEEDITUJTE TENTO SOUBOR Toto je hlavní konfigurační soubor Grub 2. Nahrazuje do jisté míry /boot/grub/menu.lst původního GRUBu. Tento soubor obsahuje jen přímé instrukce pro Grub2 a NENÍ URČEN K PŘÍMÉ EDITACI!!! Ještě jednou: na rozdíl od "původního" menu.lst, soubor grub.cfg NEEDITUJTE!!!
grub.cfg je samočinně vytvářen a obnovován při spustění příkazu sudo update-grub.
Skripty pro tvorbu grub.cfg zahrnují soubory obsažené v /etc/grub.d a informace získané ze souboru /etc/default/grub
Soubor je složen ze dvou částí. Obě jsou jasně odděleny hlavičkou ### BEGIN. Informace na této řádce odpovídají zápisům v souborech ze složky /etc/grub.d
implicitně je tento soubor "jen ke čtení (read-only). To by mělo zabránit jeho ruční editaci.
Příklad grub.cfg zahrnující dvě Ubuntu jádra, memtest86+, Windows a vlastní zadání (41_srcd) importované ze skriptů v /etc/grub.d/:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/update-grub using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,5)
search --fs-uuid --set b02e1934-12dd-418a
if font /usr/share/grub/ascii.pff ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
terminal gfxterm
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###
### BEGIN /etc/grub.d/10_linux ###
set root=(hd0,5)
search --fs-uuid --set b02e1934-12dd-418a-be3a-9ff7d3e7e7ea
menuentry "Ubuntu, linux 2.6.28-13-generic" {
linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800
initrd /boot/initrd.img-2.6.28-13-generic
}
menuentry "Ubuntu, linux 2.6.28-13-generic (single-user mode)" {
linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro single
initrd /boot/initrd.img-2.6.28-13-generic
}
menuentry "Ubuntu, linux 2.6.28-11-generic" {
linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800
initrd /boot/initrd.img-2.6.28-11-generic
}
menuentry "Ubuntu, linux 2.6.28-11-generic (single-user mode)" {
linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro single
initrd /boot/initrd.img-2.6.28-11-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
set root=(hd0,1)
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_srcd ###
menuentry "SystemRescue CD on hard drive" {
set root=(hd0,10)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
### END /etc/grub.d/41_srcd ###
/etc/grub.d/ (složka)
Tyto soubory jsou čteny při vykonávání příkazu '"update-grub"'. Tyto skripty udržují a přenášejí informace, které se spolupodílí na vytváření souboru /boot/grub/grub.cfg.
Soubory jsou pro vytváření grub.cfg používány za sebou - nejprve s číslem na počátku (vzestupně) a poté abecedně. V tomto pořádku jsou pak i zapsány příslušné informace do souboru grub.cfg.
Uživatelem zcela přidané hodnoty by měly být umístěny v 40_custom souboru.
Všechny vytvořené soubory musí být (pro jejich zahrnutí do generovaní grub.cfg pomocí příkazu "update-grub") spustitelné. Provede se příkazem "sudo chmod u+x /etc/grub.d/JmenoSouboru".
00_header
"Nasává informace ze souboru /etc/default/grub - např. grafiku, timeout atp a pokud soubor či jednotlivé údaje chybí či jsou nečitelné, nastaví se implicitní hodnoty. Doporučeno nezasahovat.
05_debian_theme
- Nastavuje pozadí, barvy textu, témata/profily.
- pokud si přejete změnit barvy, pak doporučuji vaší pozornosti 8.-9. řádek (první nastavuje normální text, druhý vybraný řádek):
set menu_color_normal=magenta/black
set menu_color_highlight=cyan/blue
- pro změnu pozadí (resp. přidání obrázku) upravte 16.řádek:
for i in {/boot/grub,/usr/share/images/desktop-base}/jméno_obrázku.{png,tga} ;
buď do složené závorky přidejte absolutní cestu k vašemu obrázku
nebo zkopírujte váš obrázek do jednoho z těchto adresářů (sudo cp /home/UzivatelskeJmeno/Obrázky/JmenoVasehoObrazku /usr/share/images/desktop-base
soubor musí mít příponu .png či .tga !! - pokud použijete menší obrázek, než je aktuální rozlišení, zůstane vpravo a dole černý pruh, pokud použijete větší obrázek , bude oříznut!
příklady {/boot/grub,/usr/share/images/desktop-base}/P1030084-macko_snecci-1024x768.png či {/boot/grub,/usr/share/images/desktop-base}/VytvořenáSložkaČiOdkaz/obrazek.{png,tga}
10_hurd
- určuje umístění jádra hurd.
10_linux
určuje jádra založená na"lsb_release -i -s" (distributorem přiřazený příznak ("Ubuntu")).
20_memtest86+
- pokud soubor /boot/memtest86+.bin existuje, je přidán do nabídky.
30_os-prober
- hledá ostatní operační systémy a zahrnuje je do nabídky.
40_custom
Příklad pro přidávání vlastních nabídek následně vkládaných do grub.cfg (po spuštení "sudo update-grub"). Tento (i ostatní soubory) musí být spustitelný, aby bylo možno importovat data do souboru grub.cfg.
... následují další popisy a návody - originály najdete na https://wiki.ubuntu.com/Grub2 ...
GRUB 2 testování a vývoj
Grub 2 je stále ještě ve vývojové verzi 1.98, takže uživatelé mají stále čas přispět k jeho rozvoji. Například zde testování GRUBu 2
Instalace / Upgrade
Instalace (Ubuntu 9.10)
GRUB 2 je instalován jako výchozí pro NOVÉ instalace 9.10 (Karmic). Pokud upgradujete z verze Jaunty 9.04 na Karmic 9.10, použijte prosím pro instalaci instrukce níže.
Upgrade (Ubuntu 9.04+)
Pokud máte jakékoliv problémy s upgrade Grub Legacy (původní verze "1") na Grub 2, prozkoumejte prosím toto vlákno (bug post)... https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/386789
- Otevřete Terminál
$ sudo apt-get install grub2
Po restartu počítače uvidíte tyto možnosti ve startovní nabídce.
vyberte OK z grub-pc konfigurace
vyberte Chainload from menu.lst YES
na příkazové řádce linuxu zmáčkněte ENTER
Upozornění: Toto je pouze dočasné, trvalé změny dosáhnete tímto: Po úspěšném rozběhu systému -
- napište (opět v terminálu)
$ sudo upgrade-from-grub-legacy
GRUB 2 vám ukáže, odkud bude načítat (bootovat). /!\
Nováčci! Použijte zde mezerník pro označení své volby. Systém se nenačte bez vašeho výběru. Nastala by chyba číslo 15 a bootovací menu by se neobjevilo. Pokud máte duální boot například Ubuntu a zároveň Windows (XP, Vista či "7"), možná zde budete muset dodělat další změny pro hladký chod.
Jestliže se vám toto skutečně stalo, podívejte se prosím do tohoto vlákna (možnost nápravy): http://kubuntuforums.net/forums/index.php?topic=3106892.0
Na mém testovacím systému je zobrazeno (hd0) /dev/sda, ale toto se může lišit stroj od stroje. Pokud je toto špatně, musíte vstup opravit v souboru /boot/grub/device.map tak, aby to odpovídalo vašemu systému (nejčastěji stačí zaměnit sda za sdb a poté spustit
$ sudo grub-install
GRUB 2 bude plně nainstalován a předchozí verze zavaděče odstraněna (stará konfigurace bude zálohována v adresáři /boot/grub pod názvem menu.lst*).
Můžete kdykoli potvrdit verzi, kterou instalujete, pomocí příkazu:
grub-install -v