- GRUB je správce spouštění GNU, který vybírá a načítá operační systém a podporuje BIOS/UEFI a Multiboot.
- GRUB 2 přidává moduly, vylepšenou podporu souborových systémů, vyhledávání UUID a grafické menu/terminál.
- Konfigurace se spravuje pomocí /etc/default/grub a 40_custom, regenerace se provádí pomocí update-grub nebo grub2-mkconfig.
- Zabezpečení: Chraňte GRUB heslem, používejte šifrování LUKS a mějte silné zásady pro hesla.

Pokud jste si nainstalovali GNU/Linux na svém počítači nebo používáte více operačních systémů, pravděpodobně jste slyšeli o GRUBu. Je to ten malý, ale výkonný program, který se zobrazí těsně před spuštěním systému a umožňuje vám vybrat si, co se má načíst. I když si ho často nikdo nevšimne, jeho role je klíčová pro spuštění operačního systému a plynulé předání kontroly jádru.
Ve světě bootování PC se GRUB stal de facto standardem díky svému výkonu a flexibilitě. Vznikl v rámci projektu GNU a nyní je nejrozšířenějším bootovacím správcem v GNU/Linuxu , kompatibilním s širokou škálou architektur a souborových systémů, uživatelsky přívětivým pro začátečníky a zároveň švýcarským nožíkem pro ty, kteří ladí každý detail bootovacího procesu.
Co je GNU GRUB a k čemu slouží?
GNU GRUB (GNU GRand Unified Bootloader) je správce vícenásobného spouštění: software, který firmware (BIOS nebo UEFI) spouští při zapnutí počítače, aby vybral a načetl operační systém. Umožňuje uživatelům vybírat položky nabídky, předávat parametry jádru, bootovat ze sítě a dokonce i interagovat s konzolí pro řešení konkrétních problémů.
Používá se hlavně v distribucích GNU/Linux, ačkoli jej používají i jiné systémy, jako například Solaris na x86. V moderních systémech UEFI firmware přímo načítá spustitelný soubor GRUB umístěný v systémovém oddílu EFI (ESP) , za předpokladu, že je registrován v NVRAM; v BIOSu/MBR GRUB obsazuje počáteční sektory disku a odtud pokračuje.
Kromě typické nabídky GRUB splňuje specifikaci Multiboot, což znamená, že dokáže bez problémů spustit kompatibilní jádra . Jakmile je jádro v paměti, GRUB předá kontrolu a jeho úkol je hotový, což není žádný malý výkon.

Technický list a projektové údaje
GRUB je součástí ekosystému GNU a je distribuován jako svobodný software pod licencí GNU GPL v3 nebo novější . Jeho vývoj je open source, s oficiálním repozitářem, systémem sledování chyb, webovými stránkami a velmi aktivní komunitou.
Je napsán primárně v jazyce C a assembleru a běží na několika platformách: IA-32, x86-64 a PowerPC, mimo jiné. Aktuální větev je GRUB 2 (reimplementace historického „GRUB Legacy“). Nejnovější vydaná stabilní verze je 2.12 (20. prosince 2023). Pokud chcete zkontrolovat svou lokální verzi, můžete spustit: grub-install --version a uvidíte odpovídající řetězec.
Trocha historie a evoluce
GRUB vznikl jako iniciativa Ericha Stefana Boleyna v kontextu GNU Hurd a mikrojádra Mach. Aby se vyřešily rozdíly v metodách zavádění, byla vytvořena specifikace Multiboot, která umožnila zavaděčům a jádrům „mluvit stejným jazykem“. V roce 1999 Gordon Matzigkeit a Yoshinori Okuji vedli její přijetí jako oficiálního balíčku projektu GNU.
Kolem roku 2002 skupina japonských výzkumníků zahájila projekt PUPA (Preliminary Universal Programming Architecture) s cílem přepsat GRUB tak, aby byl robustnější a modulárnější. Výsledkem této snahy byl GRUB 2 , zatímco předchozí verze se stala známou jako „GRUB Legacy“ (jejíž verze 0.97 byla naposledy aktualizována v roce 2005). Od roku 2007 několik distribucí migrovalo na GRUB 2 a do konce roku 2009 jej drtivá většina obsahovala ve výchozím nastavení.
Jak spustit počítač pomocí GRUBu (BIOS a UEFI)
Když zapnete počítač, firmware provede kontroly (RAM, hodiny, zařízení, pořadí bootování) a vyhledá bootloader. V systémech s BIOS/MBR je řízení předáno Hlavní spouštěcí záznam (MBR), počátečních 512 bajtů diskuGRUB byl rozdělen do fází: Fáze 1 (minimální kód v MBR), Fáze 1.5 (v pozdějších sektorech, přemostění pro pochopení souborových systémů) a Fáze 2 (menu a pokročilé funkce). V GRUBu 2 již tato „1.5“ neexistuje; nyní existují specifické obrazy, jako například boot.img, core.img a moduly (*.mod), které se kombinují podle instalace.
V UEFI je proces přímočařejší: firmware spustí binární soubor GRUB EFI z oddílu EFI , pokud je správně nainstalován a zaregistrován. V obou případech GRUB zobrazí menu nebo konzoli, načte vybrané jádro a poté na něj přenese spuštění.
Specifikace a kompatibilita s více systémy (multiboot)
GRUB implementuje Multiboot, což umožňuje bootování kompatibilních jader bez specifických „triků“. Pro systémy, které jej nepodporují (například Windows nebo DOS ), nabízí řetězové zavádění, zaměřené na první sektor oddílu, kde se nacházejí jeho bootloadery.
Jeho kompatibilita se souborovými systémy je rozsáhlá: mimo jiné Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS . Dokáže také číst ze svazků LVM a polí RAID, což je významná výhoda, když je úložná struktura složitá.
Vybrané vlastnosti a funkce
- Rozhraní nabídky Konfigurovatelný a vysoce flexibilní interaktivní terminál s automatickým doplňováním pomocí klávesy Tab a klávesovými zkratkami ve stylu Bash.
- Podpora LBA (Adresování logických bloků) překonat klasické limity BIOSu a číst více než 1024 válců.
- Kapacita pro síťové spuštění (PXE/TFTP) a vzdálené terminály, užitečné v centralizovaných scénářích správy.
- Automatická dekomprese a rozpoznávání více formátů spustitelných souborů.
- Trvalé ukládání proměnných s uložit_env/načíst_env y
grub-editenv(pokud to platforma umožňuje). - Veškerá detekce RAM, nezávislost na geometrii disku a vyhledávací mechanismy podle štítků a UUID.
- Grafická podpora pro menu a pozadí a modulární design, který udržuje core.img malý a načítá moduly podle potřeby.
Klíčová terminologie: zařízení, oddíly a cesty
GRUB pojmenovává disky a oddíly vlastním způsobem. První disk je obvykle (hd0), první oddíl (hd0,1) V GRUBu 2 (pamatujte: v GRUBu 2 začíná číslování od 1; v Legacy od 0). Pro odkazování na celý disk se oddíl vynechá: (hd0).
Pro označení souborů se zařízení kombinuje s cestou: (hd0,1)/ruta/al/archivo. Také podporuje blokované seznamy (seznamy bloků), když je nutné uvést přesné umístění souboru na disku, který není v souborovém systému viditelný, například (hd0,1)+1 pro první sektor oddílu, užitečný s chainloader +1.
„Kořenový souborový systém“ v GRUBu není totéž co „/“ v Linuxu. Je to jednoduše kořenový oddíl, ze kterého GRUB čte své soubory ; jakmile jádro Linuxu převezme kontrolu, definuje si svůj vlastní kořenový adresář a vše ostatní v GRUBu se stane irelevantním.
Rozhraní GRUBu
GRUB nabízí tři hlavní zobrazení. Nejznámější je menu s předkonfigurovanými položkami; můžete se v něm pohybovat pomocí kláves se šipkami, spustit systém stisknutím Enteru, upravit položku stisknutím „e“ nebo otevřít konzoli stisknutím „c“.
Vstupní editor umožňuje upravovat řádky za chodu (přidávat pomocí „o/O“, upravovat pomocí „e“, mazat pomocí „d“) a pokud vše vypadá správně, bootovat pomocí „b“. Je ideální pro testování parametrů jádra bez nutnosti dotýkat se souborů.
Konzole je nejvýkonnější režim: podporuje kontextové automatické doplňování, editační zkratky a všechny interní příkazy GRUBu pro vyhledávání disků, načítání kernelu/initrdu nebo řetězení. Pokud konfigurační soubor chybí nebo je poškozen, GRUB vás sem spustí, abyste mohli problém ručně vyřešit.
Časté chybové zprávy
Chyby se mohou objevit v počáteční fázi (omezenější) nebo při načítání nabídek a modulů (popisnější). Níže je uveden souhrn reprezentativních kódů, které může GRUB zobrazit, parafrázovaný pro přehlednost :
- 1: Neplatná nebo neabsolutní cesta; 2: Neplatný typ souboru (nejedná se o běžný soubor); 3–4: Poškozená data/záhlaví během dekomprese; 5: poškozená tabulka oddílů nebo neplatné.
- 6: Nekompatibilita Stage1/Stage2; 7: Načítání pod 1 MB není podporováno; 8: Pokus o spuštění bez načtení jádra; 9: Neznámá chyba spouštění.
- 10: Funkce multibootu nejsou podporovány; 11: Zařízení nebylo rozpoznáno; 12: Neplatné zařízení; 13: Nepodporovaný formát spustitelného souboru.
- 14: Souborový systém brání čtení celého souboru; 15: soubor nenalezen; 16: Nekonzistentní struktura souborového systému.
- 17: Nelze připojit vybraný oddíl; 18: Cylinder mimo rozsah podporovaný systémem BIOS (typické pro starší disky); 19: Initrd před spuštěním jádra.
- 20: Moduly před multibootovacím jádrem; 21: Vybraný disk neexistuje; 22: Neexistující oddíl; 23: Chyba při interpretaci čísla.
- 24: Přístup k bloku mimo oddíl; 25: Chyba čtení disku; 26: Příliš mnoho symbolických odkazů; 27: Neznámý příkaz.
- 28: Položka se nevejde do paměti; 29: Chyba zápisu na disk; 30: Neplatný argument; 31: Soubor není zarovnán sektorově (ReiserFS, použijte ocas).
- 32: Vyžadováno ověření; 33: Sériové zařízení není nakonfigurováno; 34: Žádné volné sektory pro fázi 1.5 po MBR (konflikt s EZ-BIOS nebo příliš brzké spuštění oddílu).
Základní příkazy GRUBu
V konzoli můžete spouštět velmi užitečné interaktivní příkazy. Například boot spustí naposledy načtený program (jádro nebo chainloader) a chainloader <archivo> načte sektor nebo soubor z řetězce; typická zkratka pro Windows je chainloader +1.
displaymem zobrazuje využití paměti podle BIOSu, což je užitečné, pokud si nejste jisti detekovanou pamětí RAM. S initrd <archivo> Zadáte počáteční obraz RAM disku, který jádro potřebuje.
Pro instalaci do MBR z konzole GRUB Legacy jste použili install s cestami k fáze 1, fáze 2 a volitelně do konfiguračního souboru. Dnes je v GRUBu 2 ze systému běžné používat grub-install a regenerujte menu pomocí update-grub/grub2-mkconfig.
Příkaz kernel určuje binární soubor jádra a jeho parametry, například: kernel /vmlinuz root=/dev/sda5Obvykle tomu předchází root (hdX,Y) o rootnoverify nastavit oddíl, ze kterého bude GRUB číst.
Konfigurační soubory a direktivy
V GRUB Legacy se menu nacházelo v /boot/grub/menu.lst o grub.confs direktivami, jako například color, default, fallback, hiddenmenu, password, timeout, splashimage a bloky title s objednávkami pro každý systém.
Klasický příklad (parafrázováno) by zahrnoval sekci o Linuxu s root (hd0,2), kernel s jeho kořenový parametr=/…A boota další pro Windows s rootnoverify (hd0,1) y chainloader +1.
V GRUBu 2 je automaticky generovaný soubor /boot/grub/grub.cfgNedoporučuje se jej upravovat ručně; místo toho se upravuje /etc/default/grub (hodnoty jako např. GRUB_TIMEOUT, GRUB_DEFAULTatd.) a vlastní položky jsou přidány do /etc/grub.d/40_customPak se provede update-grub o grub2-mkconfig pro regeneraci menu.
Klíčové rozdíly mezi GRUB Legacy a GRUB 2
- Konfigurační soubor pochází z
menu.lst/grub.confagrub.cfg, s obnovenou syntaxí a příkazy a automatickým generováním pomocígrub-mkconfig. - Číslování oddílů začíná v 1 v GRUBu 2 (v Legacy verzi to začínalo na 0).
- Perzistence proměnných s
save_env/load_envv některých konfiguracích. - Lepší detekce trasy a vyhledávání podle UUID/tagů; podporováno více souborových systémů.
- Přímé čtení z LVM a RAID.
- Grafika terminálu a menu a reorganizované obrázky: Fáze 1.5 je pryč;
boot.img,core.imga dynamické moduly (*.mod).
Zabezpečení a posílení zabezpečení pomocí GRUBu
Špatně zabezpečený bootovací manažer je jako síto. Pokud někdo s fyzickým přístupem může upravovat parametry jádra nebo spouštět jinou položku, efektivně tím deaktivuje vaše bezpečnostní opatření . Proto je vhodné chránit GRUB hesly a implementovat osvědčené postupy.
Nastavte jednu silné heslo omezit úpravy záznamů nebo přístup ke konzoli. V GRUBu 2 používejte uživatelská jména a hesla s grub-mkpasswd-pbkdf2 a nakonfigurujte odpovídající pravidla ve skriptech /etc/grub.d/.
Zahrnuje také šifrování disku pomocí LUKS , takže i když někdo počítač ukradne, nebude si moci přečíst data. Zajišťuje také přísné zásady systému pro hesla, aby se snížil počet útoků hrubou silou.
Spravujte historii protokolů moudře : ty, které poskytují vodítka k útočníkovi, by měly být minimalizovány nebo centralizovány pomocí řízení přístupu; ty, které pomáhají auditovat pokusy o škodlivý software, by měly být agregovány a analyzovány na bezpečném místě.
Chcete-li detekovat další nainstalované systémy a automaticky generovat položky, nainstalujte os-proberUšetří vám to čas a zabrání chybám při opětovném vytváření menu.
Instalace a údržba
Pokud jste GRUB nenainstalovali během instalace vaší distribuce, můžete tak učinit později. V GRUBu 2 spusťte ze systému sudo grub-install /dev/sdX (nahraďte diskem) a poté sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgMenu se vám zobrazí při dalším spuštění.
Z konzole GRUB Legacy je klasický postup označení root adresáře a spuštění instalace: root (hd1,0) následuje setup (hd1,0) pro první oddíl druhého disku, nebo setup (hd1) pokud ukážete na MBR druhého disku.
Upravit přímo /boot/grub/grub.cfg To není v GRUBu 2 dobrý nápad, i když je to technicky možné. Doporučená trasa je změnit /etc/default/grub, použijte /etc/grub.d/40_custom pro vlastní obsah a regeneraci.
Praktické otázky a užitečné zkratky
Jak zjistit, který oddíl je bootovací na /dev/sda? V systémech BIOS/MBR: sudo fdisk -l /dev/sda (viz hvězdička u „Boot“). V GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT a vyhledejte oddíl EFI (FAT32, typ EF00/flags esp). Také sudo efibootmgr -v zobrazuje zaznamenané položky spouštění.
Jak získám UUID oddílu? s blkid o lsblk -f. Například: sudo blkid /dev/sda2 vrací své UUID a další metadata.
Jak donutím GRUB 2 čekat 10 sekund před zadáním výchozí položky? Upravuje /etc/default/grub s GRUB_TIMEOUT=10 (a případně i GRUB_TIMEOUT_STYLE=menu) a provede sudo update-grub o grub2-mkconfig.
Příkazy GRUB Legacy pro instalaci na první oddíl druhého disku? Otevřete konzoli a spusťte: root (hd1,0) a pak setup (hd1,0)Pokud byste chtěli MBR, byl by to… setup (hd1).
Kroky ke změně konfigurace GRUB 2? 1) Upravit /etc/default/grub (např., GRUB_DEFAULT, GRUB_TIMEOUT), 2) přidat položky do /etc/grub.d/40_custom pokud je potřebujete, 3) regenerujte je pomocí update-grub/grub2-mkconfig, 4) restartujte a otestujte.
Kam umístit vlastní menu v GRUBu 2? En /etc/grub.d/40_custom (nebo vlastní soubory v /etc/grub.d/ s příslušnými oprávněními). Nikdy neupravujte ručně /boot/grub/grub.cfg s výjimkou nouzových situací.
Kde byly položky uloženy v GRUB Legacy? En /boot/grub/menu.lst o grub.conf, podle distribuce.
Jak se dostanu do konzole GRUB z nabídky? V GRUBu 2 nebo Legacy stiskněte klávesu „c“. Chcete-li upravit konkrétní položku, stiskněte klávesu „e“. Obě zkratky jsou velmi užitečné, když potřebujete diagnostikovat problémy za chodu.
Příklady běžných možností
Výchozí výběr spouštění: GRUB_DEFAULT=0 začíná první směna; s GRUB_DEFAULT=saved pamatuje si naposledy použitou konfiguraci. Po změně konfiguraci regenerujte.
Čekací doba: GRUB_TIMEOUT=4 upravuje zpoždění nabídky; pomocí 0 spustí se bez pauzy; v některých případech můžete nabídku skrýt pomocí GRUB_TIMEOUT_STYLE=hidden pro čistší začátek.
Aktualizace nabídky: na Debianu/Ubuntu a derivátech, sudo update-grubv jiných případech, sudo grub2-mkconfig -o /boot/grub/grub.cfg. ujistěte se, že máte os-prober nainstalován, pokud chcete automaticky detekovat ostatní systémy.
Ačkoli se GRUB objevuje i v kontextech mimo GNU/Linux, nezapomeňte, že se nejedná o službu podpory. Pokud se váš problém týká specificky Windows, nejpraktičtějším řešením je navštívit fóra věnovaná danému systému, kde vám poskytnou cílenou pomoc.
GRUB se vyvinul z jednoduchého bootovacího menu do skutečného předsystémového prostředí, které je schopné bootovat více operačních systémů, spravovat složité disky a pomoci vám obnovit systém pomocí několika příkazů. Se správnou konfigurací a určitým zabezpečením (hesla GRUBu, šifrování LUKS, dobře spravované zásady klíčů a protokoly) budete mít robustní, flexibilní a především kontrolovaný bootovací proces.
