GNU GRUB - GNU GRUB
Původní autoři | Erich Boleyn |
---|---|
Vývojáři | Projekt GNU |
První vydání | 1995 |
Stabilní uvolnění | 2,06 (GRUB 2) / 8. června 2021
|
Úložiště | |
Napsáno | Shromáždění , C. |
Operační systém | Linux , macOS , BSD , ( Solaris / illumos (x86 port)) a Windows (prostřednictvím řetězového načítání) |
Plošina | IA-32 , x86-64 , IA-64 , ARM , PowerPC , s390x , MIPS a SPARC |
K dispozici v | Angličtina a další |
Typ | Zavaděč |
Licence | GPLv3 |
webová stránka | www |
GNU GRUB (zkratka pro GNU GRand Unified Bootloader , běžně označovaný jako GRUB ) je balíček zavaděče z projektu GNU . GRUB je referenční implementace z Free Software Foundation ‚s MultiBoot specifikace , která poskytuje uživateli možnost, aby spouštěcí jedné z několika operačních systémů nainstalována v počítači, nebo vybrat konkrétní jádro konfigurace k dispozici na oddílech konkrétního operačního systému.
GNU GRUB byl vyvinut z balíčku s názvem Grand Unified Bootloader (hra na Grand Unified Theory ). Používá se převážně pro systémy podobné Unixu . Operační systém GNU používá grub jako svůj zavaděč, stejně jako většina linuxových distribucí a operační systém Solaris na x86 systémech, počínaje Solaris 10 1/06 vydání.
Úkon
Bootování
Když je počítač zapnutý, systém BIOS najde nakonfigurované primární spouštěcí zařízení (obvykle pevný disk počítače) a načte a spustí počáteční zaváděcí program z hlavního spouštěcího záznamu (MBR). MBR je první sektor na pevném disku, přičemž jeho offset je nula (počítání sektorů začíná na nule). Po dlouhou dobu byla velikost sektoru 512 bajtů, ale od roku 2009 jsou k dispozici pevné disky s velikostí sektoru 4096 bajtů, nazývané disky Advanced Format . V říjnu 2013 jsou tyto pevné disky stále přístupné v 512bajtových sektorech pomocí emulace 512e .
Starší tabulka oddílů MBR podporuje maximálně čtyři oddíly a zabírá 64 bajtů dohromady. Spolu s volitelným podpisem disku (čtyři bajty) a časovým razítkem disku (šest bajtů) tak pro strojový kód zavaděče zůstane k dispozici 434 až 446 bajtů . Ačkoli takový malý prostor může být dostačující pro velmi jednoduché zavaděče, není dostatečně velký, aby obsahoval zavaděč podporující složité a více souborových systémů , výběr spouštěcích voleb na základě nabídky atd. Zaváděcí zavaděče s většími stopami jsou tedy rozděleny na kousky, kde nejmenší kus zapadá do MBR a nachází se v něm, zatímco větší kusy jsou uloženy na jiných místech (například do prázdných sektorů mezi MBR a prvním oddílem) a vyvolány kódem MBR zavaděče.
Obrázky jádra operačního systému jsou ve většině případů soubory umístěné na příslušných souborových systémech, ale koncepce systému souborů je pro BIOS neznámá. V systémech založených na systému BIOS je tedy povinností zavaděče získat přístup k obsahu těchto souborů, takže jej lze načíst do paměti RAM a spustit .
Jedním z možných způsobů zavádění zaváděcích obrazů zavaděči je přímý přístup k sektorům pevného disku bez porozumění základnímu systému souborů. Obvykle je vyžadována další úroveň nepřímosti ve formě map nebo mapových souborů - pomocných souborů, které obsahují seznam fyzických sektorů obsazených obrazy jádra. Takové mapy je třeba aktualizovat pokaždé, když obraz jádra změní své fyzické umístění na disk, kvůli instalaci nových obrazů jádra, defragmentaci systému souborů atd. Také v případě, že mapy mění své fyzické umístění, je třeba jejich umístění aktualizovat v rámci zaváděcí kód MBR, takže mechanismus přesměrování sektorů nadále funguje. To je nejen těžkopádné, ale také to zanechává systém potřebný k ručním opravám v případě, že se během aktualizací systému něco pokazí.
Dalším přístupem je informovat zavaděč o základních souborových systémech, takže obrazy jádra jsou konfigurovány a přístupné pomocí jejich skutečných cest k souborům . To vyžaduje, aby zavaděč obsahoval ovladač pro každý z podporovaných souborových systémů, aby je pochopil a měl k nim přístup samotný zavaděč. Tento přístup eliminuje potřebu pevně zakódovaných umístění sektorů pevného disku a existenci mapových souborů a nevyžaduje aktualizace MBR po přidání nebo přesunu obrazů jádra. Konfigurace zaváděcího zavaděče je uložena v běžném souboru, ke kterému je také přistupováno způsobem vědomým systému souborů, aby bylo možné získat spouštěcí konfigurace před vlastním spuštěním jakýchkoli obrazů jádra. V důsledku toho se výrazně snižuje možnost, že se během různých aktualizací systému něco pokazí. Nevýhodou je, že takové zavaděče zvýšily vnitřní složitost a ještě větší stopy.
GNU GRUB používá druhý přístup tím, že rozumí základním souborovým systémům. Samotný zavaděč je rozdělen do několika fází , což mu umožňuje zapadnout do bootovacího schématu MBR.
Běžně se používají dvě hlavní verze GRUB: GRUB verze 1, nazývaný GRUB legacy, je převládající pouze ve starších vydáních distribucí Linuxu. GRUB 2 byl napsán od nuly a měl nahradit svého předchůdce a nyní jej používá většina distribucí Linuxu.
Verze 0 (GRUB Legacy)
GRUB 0.x používá dvoustupňový přístup. Hlavní spouštěcí záznam (MBR) obvykle obsahuje GRUB stupeň 1 nebo může obsahovat standardní implementaci MBR, která načte GRUB stupeň 1 ze spouštěcího sektoru aktivního oddílu . Vzhledem k malé velikosti zaváděcího sektoru (512 bajtů) může fáze 1 udělat o něco více než načíst další fázi GRUBu načtením několika sektorů disku z pevného místa poblíž začátku disku (v rámci prvních 1024 válců).
Fáze 1 může načíst stupeň 2 přímo, ale obvykle je nastavena tak, aby načítala stupeň 1,5. , který se nachází v prvních 30 KiB pevného disku bezprostředně po MBR a před prvním oddílem. V případě, že toto místo není k dispozici (neobvyklá tabulka oddílů, speciální ovladače disků, disk GPT nebo LVM ), instalace fáze 1.5 selže. Obrázek fáze 1.5 obsahuje ovladače systému souborů, což mu umožňuje přímo načíst stupeň 2 z jakéhokoli známého umístění v systému souborů, například z /boot/grub
. Fáze 2 poté načte výchozí konfigurační soubor a všechny další potřebné moduly.
Verze 2 (GRUB 2)
Spuštění v systémech využívajících firmware BIOSu
- Viz obrázek na posledním obrázku vpravo.
-
boot.img
( fáze 1 ) se zapisuje do prvních 440 bajtů hlavního spouštěcího záznamu (spouštěcí kód MBR v sektoru 0) nebo volitelně v zaváděcím sektoru oddílu (PBR). Adresujediskboot.img
pomocí 64bitové adresy LBA. Skutečné číslo sektoru je zapsánogrub-install
.diskboot.img
je první sektor,core.img
jehož jediným účelem je načíst zbytekcore.img
identifikovaný čísly sektorů LBA, které také napsalgrub-install
. - Na discích s oddíly MBR je
core.img
( stupeň 1.5 ) uložen do prázdných sektorů (je -li k dispozici) mezi MBR a prvním oddílem. Nedávné operační systémy navrhují pro zarovnání mezeru 1 MiB (2047*512 bajtů nebo 255*4KiB sektorů). Tato mezera bývala 62 sektorů (31 KiB) jako připomínka limitu počtu sektorů adresování Cylinder-Head-Sector (C/H/S) používaného systémem BIOS před rokem 1996, protocore.img
je navržen tak, aby byl menší než 32 KiB. - Na discích s oddíly GPT: primární oddíly nejsou omezeny na 4, takže
core.img
jsou zapsány do vlastního malého (1 MiB), spouštěcího oddílu systému BIOS bez souborového systému. -
fáze 2:
core.img
načte se/boot/grub/i386-pc/normal.mod
z oddílu nakonfigurovanéhogrub-install
. Pokud se index oddílu změní, GRUB nebude moci najít soubornormal.mod
a zobrazí uživateli výzvu GRUB Rescue. - V závislosti na tom, jak byl GRUB2 nainstalován,
/boot/grub/
je buď v kořenovém oddílu distribuce Linuxu, nebo v samostatném /zaváděcím oddílu. -
po normal.mod načten:
normal.mod
analyzuje/boot/grub/grub.cfg
, volitelně načte moduly (např. pro grafické uživatelské rozhraní a podporu systému souborů) a zobrazí nabídku.
Spuštění na systémech využívajících firmware UEFI
-
/efi/<distro>/grubx64.efi
(pro systémy x64 UEFI) je nainstalován jako soubor v oddíle systému EFI a je spuštěn přímo firmwarem bezboot.img
sektoru MBR 0. Tento soubor jako stage1 a stage1.5. -
/boot/grub/
lze nainstalovat na systémový oddíl EFI nebo na samostatný /zaváděcí oddíl. - U systémů x64 UEFI je
/boot/grub/x86_64-efi/normal.mod
souborem a dalšími/boot/grub/
soubory stupeň 2.
Po spuštění
GRUB představuje nabídku, kde si uživatel může vybrat z operačních systémů (OS) nalezených pomocí grub-install. GRUB lze nakonfigurovat tak, aby automaticky načítal určený OS po uživatelsky definovaném časovém limitu. Pokud je časový limit nastaven na nula sekund, stisknutím a podržením ⇧ Shiftběhem spouštění počítače získáte přístup ke spouštěcí nabídce.
V nabídce výběru operačního systému GRUB přijímá několik příkazů:
- Stisknutím eje možné upravit parametry jádra vybrané položky nabídky před spuštěním operačního systému . Důvodem, proč to udělat v GRUBu (tj. Nemodifikace parametrů v již spuštěném systému), může být nouzový případ: spuštění systému se nezdařilo. Pomocí řádku parametrů jádra je možné mimo jiné určit modul, který má být pro jádro zakázán (na černé listině). To může být vyžadováno, pokud je konkrétní modul jádra poškozený a brání tak spuštění. Chcete -li například
nvidia-current
přidat modul jádra na černou listinu , můžete jej přidatmodprobe.blacklist=nvidia-current
na konec parametrů jádra. - Stisknutím tlačítka cuživatel vstoupí do příkazového řádku GRUB. Příkazový řádek GRUB není běžný Linuxový shell, jako např. Bash , a přijímá pouze určité příkazy specifické pro GRUB, dokumentované různými distribucemi Linuxu.
Jakmile jsou vybrány možnosti spouštění, GRUB načte vybrané jádro do paměti a předá jádru řízení. Alternativně může GRUB předat řízení zaváděcího procesu jinému zavaděči pomocí řetězového načítání . Toto je metoda používaná k načítání operačních systémů, které nepodporují specifikaci Multiboot nebo nejsou podporovány přímo GRUBem.
Dějiny
GRUB byl původně vyvinut Erichem Boleynem jako součást práce na zavedení operačního systému GNU / Hurd , vyvinutého Free Software Foundation . V roce 1999 vytvořili Gordon Matzigkeit a Yoshinori K. Okuji z GRUB oficiální softwarový balíček projektu GNU a otevřeli vývojový proces veřejnosti. Od roku 2014 přijala většina distribucí Linuxu GNU GRUB 2 a další systémy, jako je Sony PlayStation 4 .
Rozvoj
GRUB verze 1 (také známý jako „GRUB Legacy“) již není ve vývoji a bude postupně vyřazován. Vývojáři GNU GRUB změnili své zaměření na GRUB 2, kompletní přepis s cíli, včetně toho, aby byl GNU GRUB čistší, robustnější, přenosnější a výkonnější. GRUB 2 začínal pod názvem PUPA . PUPA byla podporována Agenturou pro podporu informačních technologií (IPA) v Japonsku. PUPA byla integrována do vývoje GRUB 2 kolem roku 2002, kdy byla verze GRUB 0.9x přejmenována na GRUB Legacy.
Některé z cílů projektu GRUB 2 zahrnují podporu pro platformy jiné než x86 , internacionalizaci a lokalizaci , znaky jiné než ASCII, dynamické moduly, správu paměti , skriptovací minijazyk , migraci kódu specifického pro platformu (x86) na moduly specifické pro platformu, a objektově orientovaný framework. GNU GRUB verze 2.00 byla oficiálně vydána 26. června 2012.
Tři z nejpoužívanějších distribucí Linuxu používají jako hlavní zavaděč GRUB 2. Ubuntu jej přijalo jako výchozí zavaděč ve své verzi 9.10 z října 2009. Fedora následovala s Fedorou 16 vydanou v listopadu 2011. OpenSUSE přijal GRUB 2 jako výchozí zavaděč s vydáním 12.2 ze září 2012. Solaris také přijal GRUB 2 na platforma x86 ve verzi Solaris 11.1.
Na konci roku 2015 bylo nalezeno a rychle opraveno zneužití 28krát stisknutí backspace k obejití přihlašovacího hesla.
Varianty
GNU GRUB je bezplatný a open-source software , proto bylo vytvořeno několik variant. Některé pozoruhodné, které nebyly sloučeny do hlavní řady GRUB:
- OpenSolaris obsahuje upravený GRUB Legacy, který podporuje řezy Solaris VTOC, automatický výběr 64bitového jádra a zavádění ze ZFS (s prostředím komprese a více bootů ).
- Google Summer of Code 2008 měl projekt na podporu GRUB staršího spouštění z oddílů formátovaných ext4 .
- Projekt Syllable vytvořil upravenou verzi GRUBu pro načtení systému ze systému souborů AtheOS .
- TrustedGRUB rozšiřuje GRUB implementací ověření integrity systému a zabezpečení procesu spouštění pomocí modulu Trusted Platform Module (TPM).
- Intel BIOS Implementation Test Suite (BITS) poskytuje prostředí GRUB pro testování BIOSů a zejména jejich inicializaci procesorů, hardwaru a technologií Intel. BITS podporuje skriptování přes Python a obsahuje API Pythonu pro přístup k různým funkcím hardwaru na nízké úrovni, včetně ACPI, registrů CPU a čipové sady, PCI a PCI Express.
- GRUB4DOS je vidlice GRUB starší verze, která zlepšuje zážitek z instalace v systému DOS a Microsoft Windows vložením všeho kromě konfigurace GRLDR do jednoho souboru obrázku. Lze jej načíst přímo z DOSu, nebo pomocí NTLDR nebo Windows Boot Manager . GRUB4DOS je v aktivním vývoji a od roku 2021 podporuje UEFI.
Utility
Konfigurační nástroje GRUB
Nástroje pro nastavení používané různými distribucemi často obsahují moduly pro nastavení GRUB. Například YaST2 na distribucích SUSE Linux a openSUSE a Anaconda na distribucích Fedora / RHEL . StartUp-Manager a GRUB Customizer jsou grafické konfigurační editory pro distribuce založené na Debianu. Vývoj StartUp-Manager se zastavil 6. května 2011 poté, co hlavní vývojář uvedl osobní důvody, proč program aktivně nevyvíjí. GRUB Customizer je k dispozici také pro distribuce založené na Arch.
Pro GRUB 2 existují řídicí moduly KDE.
GRLDR ICE je malý nástroj pro úpravu výchozí konfigurace souboru grldr pro GRUB4DOS.
Spouštěcí nástroje pro opravy
Boot-Repair je jednoduchý grafický nástroj pro zotavení z častých problémů souvisejících se zaváděním pomocí GRUB a zavaděče systému Microsoft Windows . Tato aplikace je k dispozici pod licencí GNU GPL . Boot-Repair může opravit GRUB na více distribucích Linuxu, včetně, ale bez omezení na, Debian, Ubuntu, Mint , Fedora, openSUSE a Arch Linux .
Instalační program pro Windows
Grub2Win je open-source softwarový balíček Windows. Umožňuje GNU GRUBu spouštět z adresáře Windows. Instalační program nainstaluje GNU GRUB verze 2.06 do oddílu NTFS. Aplikace Windows GUI se poté používá k přizpůsobení zaváděcí nabídky GRUB, motivů, pořadí spouštění UEFI, skriptů atd. Všechny skripty a příkazy GNU GRUB jsou podporovány pro systémy UEFI i starší systémy. Grub2Win může konfigurovat GRUB pro multiboot Windows, Ubuntu, openSuse, Fedora a mnoha dalších distribucí Linuxu. Je volně dostupný pod licencí GNU GPL na SourceForge .
Alternativní boot-manažeři
Silou GRUBu je široká škála podporovaných platforem, souborových systémů a operačních systémů, což z něj činí výchozí volbu pro distribuce a vestavěné systémy.
Existují však správci spouštění, kteří jsou cíleni na koncového uživatele, což poskytuje příjemnější uživatelské prostředí, grafický výběr operačního systému a jednodušší konfiguraci:
- rEFInd -grafický bootovací manažer ve stylu Macintoshe, pouze pro počítače založené na UEFI (BIOS není podporován).
- CloverEFI -grafický boot-manager ve stylu Macintoshe pro počítače se systémem BIOS a UEFI. Emuluje UEFI s výrazně upraveným DUET z projektu TianoCore. Vyžaduje oddíl ve formátu FAT i v systémech BIOS. Výhodou je, že má základní ovladač souborového systému v zaváděcím sektoru oddílů, čímž se vyhne křehkosti GRUB 2., 3. stupně a nechvalně známé výzvě GRUB Rescue. Uživatelské rozhraní vypadá podobně jako rEFInd: obě dědí z opuštěného rEFIt zaváděcího správce .
Negrafické alternativy:
- systemd-boot -Lehký správce spouštění pouze s UEFI s textovou nabídkou voliče OS.
externí odkazy
How-Tos a řešení potíží
Distribuční wiki mají mnoho řešení běžných problémů a vlastních nastavení, která vám mohou pomoci:
- Arch Linux /GRUB
- Ubuntu /Grub2 (viz také Odkazy ve spodní části)
- Fedora /GRUB_2
- Gentoo /GRUB2
- Výukový program pro téma Grub2
Dokumentace
- GRUB manuál - nejpodrobnější dokumentace včetně všech příkazů
- Oficiální webové stránky
- GRUB wiki archivována v roce 2010
Úvodní články
- Boot with GRUB , April 2001 article in Linux Journal
Technická data
- Zavádění Linuxu na x86 pomocí Grub2 -podrobný článek
- Unified Extensible Firmware Interface (firmware UEFI, běžný od roku 2012)
- GUID Partition Table (GPT) - zpracovává pevné disky větší než 2 TiB a více než 4 oddíly
- Hlavní spouštěcí záznam používaný s firmwarem systému BIOS (základní desky zhruba před rokem 2012)
- BIOS Boot Specification verze 1.01 (11. ledna 1996) - těžko k nalezení
Viz také
- SysLinux (IsoLinux) - běžně používaný bootloader na CD, DVD
- BOOTMGR - aktuální bootloader Windows
- NTLDR - předchozí bootloader Windows, používaný před Windows Vista
- rEFInd - alternativní zavaděč pro počítače se systémem UEFI
- Porovnání zavaděčů