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.
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/
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"
-~
lsb_release -i -s 2> /dev/null || echo Debian
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
sudo blkid
Ukázka výpisu.
/dev/sda1: UUID="666cd724-8d60-4a1d-b39d-71f195c821c3" TYPE="ext4"
sudo mount -t ext4 /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.
sudo update-grub
Ujistěte se, že je určení bez chyb - věnujte prosím pozornost výpisu FDISKu
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)
$ nano /etc/default/grub
$ update-grub
$ grub-install /dev/sda
$ grub-install --recheck /dev/sda
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.
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.
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 nových vlastností:
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.
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!!!
sudo update-grub
.~-
# # 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 ###
-~
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“
.
set menu_color_highlight=cyan/blue '
„lsb_release -i -s“
(distributorem přiřazený příznak („Ubuntu“)).„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 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
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.
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
$ sudo apt-get install grub2
Po restartu počítače uvidíte tyto možnosti ve startovní nabídce.
Upozornění: Toto je pouze dočasné, trvalé změny dosáhnete tímto: Po úspěšném rozběhu systému -
$ 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