GNU GRUB (zkráceně „GRUB“) je zavaděč z projektu GNU. GRUB je hlavním příkladem specifikace Multiboot, která umožňuje uživateli mít v počítači více operačních systémů najednou a vybrat si, který z nich se spustí při startu počítače. GRUB lze použít k výběru z různých obrazů jádra dostupných na oddílech určitého operačního systému a také k předávání parametrů při zavádění těmto jádrům.

Co je Multiboot a jak s ním GRUB pracuje

Multiboot je specifikace, která definuje, jak zavaděč předá řízení jádru operačního systému. GRUB implementuje tuto specifikaci (Multiboot a Multiboot2) a umí tak přímo zavádět jádra, která jsou s těmito specifikacemi kompatibilní, nebo použít tzv. chainloading k předání řízení jinému zavaděči (např. Windows bootloaderu). Díky tomu je GRUB oblíbený při provozu více operačních systémů na jednom stroji.

Kde a jak se GRUB instaluje

  • V klasickém BIOS/MBR režimu se GRUB obvykle instaluje do MBR nebo do oblasti po MBR (post-MBR gap) a nahrává tzv. stage komponenty na disk.
  • V UEFI režimu se GRUB instaluje jako spustitelný soubor (např. /boot/efi/EFI//grubx64.efi) v EFI System Partition (ESP).
  • Instalace se provádí nástroji grub-install (pro instalaci) a grub-mkconfig nebo distribučně specifickými skripty (např. update-grub v Debian/Ubuntu) pro vytvoření konfiguračního souboru.

Konfigurace GRUBu

Konfigurační soubor GRUBu bývá obvykle generovaný a jeho hlavní výstupní soubor je /boot/grub/grub.cfg. Tento soubor se často nevytváří přímo ručně, ale pomocí skriptů v adresáři /etc/grub.d/ a nastavení v /etc/default/grub. Základní workflow:

  • Upravíte /etc/default/grub (časový limit, výchozí položka, možnosti jádra apod.).
  • Přidáte vlastní položky do /etc/grub.d/40_custom nebo vytvoříte vlastní skript.
  • Spustíte grub-mkconfig -o /boot/grub/grub.cfg nebo distribučně: update-grub.

Položky menu (menuentry) odkazují na jádro a initramfs, případně používají chainloading pro jiné bootloadery. GRUB podporuje proměnné, podmínky a vlastní příkazy v cfg souboru.

Hlavní funkce a možnosti

  • Multiboot: zavádění různých jáder a OS.
  • Chainloading: předání spouštění jinému zavaděči (užitečné pro Windows).
  • Podpora souborových systémů: ext2/3/4, Btrfs, XFS, FAT, NTFS (omezeně), a další — GRUB dokáže načíst jádra přímo z oddílu.
  • Moduly: GRUB má modulární architekturu (např. cryptodisk, lvm, raid), které se načítají podle potřeby.
  • Grafické menu a témata: podpora témat, obrázkového pozadí a rozvržení menu.
  • Zabezpečení: možnost nastavit hesla pro editaci nebo zavádění položek (pomocí grub-mkpasswd-pbkdf2 a direktiv set superusers).
  • Podpora šifrovaných disků: pomocí modulu cryptodisk může GRUB načíst jádro z LUKS-zašifrovaného oddílu (omezeně, závisí na verzi).

Záchranný režim a řešení problémů

Pokud GRUB selže nebo se zobrazí prompt (grub rescue nebo grub>), lze často obnovit boot takto:

  • Spustit počítač z live média (Live CD/USB), připojit root oddíl a znovu spustit grub-install a grub-mkconfig / update-grub.
  • V režimu grub> lze přímo zadat příkazy pro nastavení root, načtení modulu a spuštění kernelu (set root=(hd0,1); linux /vmlinuz root=/dev/sda1; initrd /initrd.img; boot).
  • V případě chybově generovaného grub.cfg je vhodné zkontrolovat skripty v /etc/grub.d a /etc/default/grub.

Nejčastěji používané příkazy

  • grub-install <device> — nainstaluje GRUB na specifikované zařízení (např. /dev/sda nebo EFI partition).
  • grub-mkconfig -o /boot/grub/grub.cfg — vygeneruje konfigurační soubor.
  • update-grub — zástupný skript na Debian/Ubuntu, volá grub-mkconfig.
  • V interaktivním režimu: ls, set, insmod, linux, initrd, boot.

UEFI, Secure Boot a kompatibilita

V UEFI režimu se GRUB spouští jako EFI aplikace. Na systémech s Secure Boot může být potřeba podpis GRUBu a modulů — distribuce obvykle dodávají podepsané verze (grubx64.efi) nebo používají shim. Uživatelé, kteří instalují vlastní GRUB, mohou Secure Boot vypnout nebo nahradit podpis podle potřeby.

Tipy pro více operačních systémů (Multiboot)

  • Při instalaci Windows i Linuxu instalujte Windows nejprve, poté Linux; GRUB obvykle správně detekuje Windows a přidá položku do menu.
  • Pokud používáte LVM nebo RAID, ujistěte se, že GRUB podporuje danou konfiguraci (nainstalujte modul lvm/raid před generováním konfigurace).
  • Pro speciální položky (starší jádra, recovery) přidejte vlastní menuentry do /etc/grub.d/40_custom.

GRUB je mocný a flexibilní nástroj pro správu spuštění systému. Pro běžné použití vystačí s automaticky generovanými konfiguracemi distribuce, ale má i bohaté možnosti pro pokročilé scenáře — od zavádění více jáder až po šifrované nebo LVM/RAID konfigurace.