Ubuntu Česko GRUB2

  • Edit
  • Diskuze
  • Info
  • Attachments

IconsPage/iconCircle.png Tento návod je určen pro vydání Ubuntu Ubuntu 9.10 Karmic Koala, Ubuntu 10.04 LTS Lucid Lynx a novější. Pro starší vydání čtěte GRUB.

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

IconsPage/tip.png 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.

  • 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
  • #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.

    Warning /!\ 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 Warning /!\ 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)

Warning /!\

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!!! Warning /!\

  • 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

      • Warning /!\ 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/Grub2IconsPage/en.png

...

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 IconsPage/en.png

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 IconsPage/en.png

  • 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

Odkazy

ubuntu-cz: GRUB2 (last edited 2011-10-20 08:08:54 by arrange)