GNU GRUB - GNU GRUB

GNU GRUB
Logo GNU GRUB
Logo GNU GRUB
Debian Unstable GRUB2 (2015) .png
GRUB v2 běží v textovém režimu
Původní autoři Erich Boleyn
Vývojáři Projekt GNU
První vydání 1995 ; Před 26 lety ( 1995 )
Stabilní uvolnění
2,06 (GRUB 2) / 8. června 2021 ; Před 4 měsíci ( 2021-06-08 )
Ú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 .org /software /grub /

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

GRUB2 na pevném disku rozděleném na MBR ; Fáze 1 ( boot.img) může být alternativně zapsána do jednoho ze zaváděcích sektorů oddílu .
GRUB2 na pevném disku rozděleném na GPT , bootování na firmware BIOSu nebo režim kompatibility s UEFI (CSM)

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)

Nabídka GRUB v1 (běží jako součást instalace Ubuntu 8.04)

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)

GRUB 2 - Vizualizace oddílů MBT vs. GPT a bootovací sekvence (systémy využívající firmware BIOSu).

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). Adresuje diskboot.imgpomocí 64bitové adresy LBA. Skutečné číslo sektoru je zapsáno grub-install. diskboot.imgje první sektor, core.imgjehož jediným účelem je načíst zbytek core.imgidentifikovaný čísly sektorů LBA, které také napsal grub-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, proto core.imgje 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.imgjsou 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.modz oddílu nakonfigurovaného grub-install. Pokud se index oddílu změní, GRUB nebude moci najít soubor normal.moda 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 bez boot.imgsektoru 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.modsouborem 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-currentpřidat modul jádra na černou listinu , můžete jej přidat modprobe.blacklist=nvidia-currentna 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

StartUp-Manager , program používaný ke konfiguraci 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 .

GRUB Customizer

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:

Dokumentace

Úvodní články

Technická data

Viz také

Reference