Wat is GRUB: een complete gids voor de GNU Boot Manager

Laatste update: 14 oktober 2025
  • GRUB is de GNU-bootmanager die het besturingssysteem selecteert en laadt, met ondersteuning voor BIOS/UEFI en Multiboot.
  • GRUB 2 voegt modules, verbeterde ondersteuning voor bestandssystemen, UUID-zoeken en een grafisch menu/terminal toe.
  • De configuratie wordt beheerd via /etc/default/grub en 40_custom, en wordt opnieuw gegenereerd met update-grub of grub2-mkconfig.
  • Beveiliging: Beveilig GRUB met een wachtwoord, gebruik LUKS-encryptie en hanteer een sterk wachtwoordbeleid.

Algemene illustratie over GRUB

Als je GNU/Linux op je computer hebt geïnstalleerd of meerdere besturingssystemen gebruikt, heb je waarschijnlijk wel eens van GRUB gehoord. Het is dat kleine maar krachtige programmaatje dat je ziet vlak voordat je systeem opstart, waarmee je kunt kiezen wat je wilt laden. Hoewel het vaak onopgemerkt blijft, is de rol ervan cruciaal voor het opstarten van het besturingssysteem en het soepel overdragen van de controle aan de kernel.

In de wereld van pc-opstartsystemen is GRUB, dankzij zijn kracht en flexibiliteit, de de facto standaard geworden. GRUB is ontstaan ​​binnen het GNU-project en is nu de meest gebruikte opstartmanager in GNU/Linux . Het is compatibel met een breed scala aan architecturen en bestandssystemen, gebruiksvriendelijk voor beginners en tegelijkertijd een alles-in-één tool voor diegenen die elk detail van het opstartproces tot in de puntjes willen afstemmen.

Wat is GNU GRUB en waar is het voor?

GNU GRUB (GNU GRand Unified Bootloader) is een multi-bootmanager: software die door de firmware (BIOS of UEFI) wordt uitgevoerd wanneer de computer wordt ingeschakeld om een ​​besturingssysteem te selecteren en te laden. Hiermee kunnen gebruikers menu-items selecteren, parameters aan de kernel doorgeven, opstarten vanaf het netwerk en zelfs via een console problemen oplossen.

Het wordt voornamelijk gebruikt in GNU/Linux-distributies, hoewel het ook door andere systemen zoals Solaris op x86 is gebruikt. Op moderne UEFI- systemen laadt de firmware direct het GRUB-uitvoerbare bestand dat zich in de EFI-systeempartitie (ESP) bevindt , mits dit in NVRAM is geregistreerd; in BIOS/MBR bezet GRUB de eerste sectoren van de schijf en gaat van daaruit verder.

Naast het gebruikelijke menu voldoet GRUB aan de Multiboot Specification, wat betekent dat het compatibele kernels naadloos kan opstarten . En zodra de kernel in het geheugen is geladen, geeft GRUB de controle over en is zijn taak volbracht, wat geen geringe prestatie is.

GRUB-opstartoptiesscherm

Technisch blad en projectgegevens

GRUB maakt deel uit van het GNU-ecosysteem en wordt gedistribueerd als vrije software onder de GNU GPL v3-licentie of een latere versie . De ontwikkeling ervan is open source, met een officiële repository, bugtracker en website, en een zeer actieve community.

Het is voornamelijk geschreven in C en Assembler en draait op verschillende platforms: IA-32, x86-64 en PowerPC, onder andere. De huidige versie is GRUB 2 (een herimplementatie van de historische "GRUB Legacy"). De nieuwste stabiele versie is 2.12 (20 december 2023). Als u uw lokale versie wilt controleren, kunt u het volgende doen: grub-install --version en je ziet de bijbehorende keten.

Een beetje geschiedenis en evolutie

GRUB is ontstaan ​​als een initiatief van Erich Stefan Boleyn binnen de context van GNU Hurd en de Mach-microkernel. Om de verschillen in opstartmethoden op te lossen, werd de Multiboot Specification ontwikkeld, die ervoor zorgde dat bootloaders en kernels "dezelfde taal spraken". In 1999 speelden Gordon Matzigkeit en Yoshinori Okuji een leidende rol bij de acceptatie ervan als officieel onderdeel van het GNU-project.

Rond 2002 startte een groep Japanse onderzoekers PUPA (Preliminary Universal Programming Architecture) met als doel GRUB te herschrijven om het robuuster en modulairder te maken. Deze inspanning resulteerde in GRUB 2 , terwijl de vorige versie bekend werd als "GRUB Legacy" (waarvan versie 0.97 voor het laatst werd bijgewerkt in 2005). Vanaf 2007 migreerden verschillende distributies naar GRUB 2, en tegen het einde van 2009 was het in de overgrote meerderheid standaard opgenomen.

Diagram van het GRUB-opstartproces

Hoe u uw computer opstart met GRUB (BIOS en UEFI)

Wanneer u uw pc aanzet, voert de firmware controles uit (RAM, klok, apparaten, opstartvolgorde) en zoekt naar een bootloader. Op systemen met BIOS/MBR wordt de controle overgedragen aan de Master Boot Record (MBR), de eerste 512 bytes van de schijfGRUB werd verdeeld in fasen: Fase 1 (minimale code in MBR), Fase 1.5 (in latere sectoren, bridging om bestandssystemen te begrijpen) en Fase 2 (menu's en geavanceerde functies). In GRUB 2 bestaat die "1.5" niet meer; nu zijn er specifieke images zoals boot.img, core.img en modules (*.mod) die op basis van de installatie worden gecombineerd.

  Stapsgewijze handleiding voor het configureren van de BIOS of UEFI van uw pc

In UEFI is het proces directer: de firmware voert het GRUB EFI-binair bestand uit vanaf de EFI-partitie , mits dit correct is geïnstalleerd en geregistreerd. In beide gevallen toont GRUB een menu of console, laadt de gekozen kernel en draagt ​​vervolgens de uitvoering daaraan over.

Multiboot-specificatie en compatibiliteit

GRUB implementeert Multiboot, waardoor compatibele kernels kunnen worden opgestart zonder specifieke "trucs". Bovendien biedt het voor systemen die dit niet ondersteunen (zoals Windows of DOS ) chainloading, waarbij de eerste sector van de partitie waar de bootloaders zich bevinden, als doelwit wordt gekozen.

De compatibiliteit met bestandssystemen is zeer uitgebreid: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , en nog veel meer. Het kan ook lezen van LVM-volumes en RAID-arrays, een aanzienlijk voordeel bij complexe opslagstructuren.

Uitgelichte kenmerken en functies

  • Menu-interface Configureerbare en zeer flexibele interactieve terminal, met automatische tabbladaanvulling en Bash-achtige snelkoppelingen.
  • Ondersteuning van LBA (Logische blokadressering) om klassieke BIOS-limieten te overwinnen en verder te lezen dan 1024 cylinders.
  • Capaciteit voor netwerk opstarten (PXE/TFTP) en externe terminals, handig in scenario's met gecentraliseerd beheer.
  • Automatische decompressie en herkenning van meerdere uitvoerbare formaten.
  • Blijvende opslag van variabelen met save_env/load_env y grub-editenv (wanneer het platform dit toelaat).
  • Alle RAM-detectie, onafhankelijkheid van de schijfgeometrie en zoekmechanismen op labels en UUID.
  • Grafische ondersteuning voor menu's en achtergronden en een modulair ontwerp dat kern.img klein en laadt modules indien nodig.

Belangrijkste terminologie: apparaten, partities en paden

GRUB geeft schijven en partities een eigen naam. De eerste schijf is meestal (hd0), de eerste partitie (hd0,1) In GRUB 2 (onthoud: in GRUB 2 begint de nummering bij 1; in Legacy begon het bij 0). Om naar een hele schijf te verwijzen, wordt de partitie weggelaten: (hd0).

Om bestanden aan te duiden wordt het apparaat gecombineerd met het pad: (hd0,1)/ruta/al/archivo. Het ondersteunt ook blocklists (bloklijsten) wanneer het nodig is om de exacte locatie op de schijf aan te geven van een bestand dat niet als zodanig zichtbaar is in het bestandssysteem, bijvoorbeeld (hd0,1)+1 voor de eerste sector van een partitie, handig met chainloader +1.

Het "root-bestandssysteem" in GRUB is niet hetzelfde als de "/" in Linux. Het is simpelweg de rootpartitie van waaruit GRUB zijn bestanden leest ; zodra de Linux-kernel de controle overneemt, definieert deze zijn eigen daadwerkelijke root, en wordt al het andere in GRUB irrelevant.

GRUB-interfaces

GRUB biedt drie hoofdweergaven. De meest bekende is het menu , met vooraf geconfigureerde items; je kunt navigeren met de pijltjes toetsen, opstarten met Enter, een item bewerken met "e" of de console openen met "c".

Met de invoereditor kunt u regels direct aanpassen (toevoegen met "o/O", bewerken met "e", verwijderen met "d") en, als alles er goed uitziet, opstarten met "b". Het is ideaal voor het testen van kernelparameters zonder bestanden aan te raken.

De consolemodus is de krachtigste: deze ondersteunt contextuele automatische aanvulling, bewerkingssneltoetsen en alle interne GRUB-opdrachten voor het lokaliseren van schijven, het laden van de kernel/initrd of het uitvoeren van chainloading. Als het configuratiebestand ontbreekt of beschadigd is, start GRUB de consolemodus zodat u het probleem handmatig kunt oplossen.

Veelvoorkomende foutmeldingen

Fouten kunnen optreden in de beginfase (beperkter) of bij het laden van menu's en modules (meer gedetailleerd). Hieronder volgt een overzicht van representatieve codes die GRUB kan weergeven, geparafraseerd voor de duidelijkheid :

  • 1: Ongeldig of niet-absoluut pad; 2: Ongeldig bestandstype (geen normaal bestand); 3–4: Corrupte gegevens/header tijdens decompressie; 5: beschadigde partitietabel of ongeldig.
  • 6: Stage1/Stage2-incompatibiliteit; 7: Laden van bestanden kleiner dan 1 MB wordt niet ondersteund; 8: Poging tot opstarten zonder kernel te laden; 9: Onbekende opstartfout.
  • 10: Multiboot-functies worden niet ondersteund; 11: Apparaat niet herkend; 12: Ongeldig apparaat; 13: Uitvoerbaar formaat wordt niet ondersteund.
  • 14: Het bestandssysteem voorkomt dat het hele bestand kan worden gelezen; 15: bestand niet gevonden; 16: Inconsistente bestandssysteemstructuur.
  • 17: De geselecteerde partitie kan niet worden gekoppeld. 18: Cilinder buiten het bereik dat door het BIOS wordt ondersteund (meestal op oudere schijven). 19: Initrd vóór kernel.
  • 20: Modules vóór een multiboot-kernel; 21: Geselecteerde schijf bestaat niet; 22: Niet-bestaande partitie; 23: Fout bij het interpreteren van een getal.
  • 24: Toegang tot een blok buiten de partitie; 25: Fout bij het lezen van de schijf; 26: Te veel symbolische koppelingen; 27: Onbekende opdracht.
  • 28: Item past niet in het geheugen; 29: Fout bij schrijven op schijf; 30: Ongeldig argument; 31: Bestand niet sector-uitgelijnd (ReiserFS, gebruik notail).
  • 32: Authenticatie vereist; 33: Serieel apparaat niet geconfigureerd; 34: Geen vrije sectoren voor fase 1.5 na de MBR (conflict met EZ-BIOS of partitie start te vroeg).
  Hoe u verborgen Windows 11-instellingen kunt inschakelen en configureren

Basis GRUB-opdrachten

In de console kun je zeer nuttige interactieve opdrachten uitvoeren. Bijvoorbeeld: boot start de laatst geladen (kernel of chainloader), en chainloader <archivo> laadt een sector of bestand uit een keten; de typische snelkoppeling voor Windows is chainloader +1.

displaymem geeft het geheugengebruik weer volgens het BIOS, wat handig is als u niet zeker bent van het gedetecteerde RAM-geheugen. Met initrd <archivo> U geeft het initiële RAM-schijfimage op dat de kernel nodig heeft.

Om te installeren op MBR vanaf de GRUB Legacy-console, gebruikte u install met de routes naar stage1, stage2 en, optioneel, naar het configuratiebestand. Tegenwoordig is het in GRUB 2 gebruikelijk om vanuit het systeem grub-install en het menu opnieuw genereren met update-grub/grub2-mkconfig.

Het commando kernel specificeert het kernelbestand en de bijbehorende parameters, bijvoorbeeld: kernel /vmlinuz root=/dev/sda5Het wordt meestal voorafgegaan door root (hdX,Y) o rootnoverify om de partitie in te stellen waarvan GRUB zal lezen.

Configuratiebestanden en richtlijnen

In GRUB Legacy bevond het menu zich in /boot/grub/menu.lst o grub.conf, met richtlijnen zoals color, default, fallback, hiddenmenu, password, timeout, splashimage en blokken title met de orders voor elk systeem.

Een klassiek voorbeeld (geparafraseerd) zou een Linux-sectie zijn met root (hd0,2), kernel met rootparameter=/…En boot; en nog een voor Windows met rootnoverify (hd0,1) y chainloader +1.

In GRUB 2 is het automatisch gegenereerde bestand /boot/grub/grub.cfgHet is niet aan te raden om het handmatig te bewerken; in plaats daarvan wordt het aangepast /etc/default/grub (waarden zoals GRUB_TIMEOUT, GRUB_DEFAULT, enz.) en aangepaste vermeldingen worden toegevoegd in /etc/grub.d/40_custom. Dan wordt het uitgevoerd update-grub o grub2-mkconfig om het menu opnieuw te genereren.

Belangrijkste verschillen tussen GRUB Legacy en GRUB 2

  • Het configuratiebestand ging van menu.lst/grub.conf a grub.cfg, met vernieuwde syntaxis en opdrachten en automatische generatie door middel van grub-mkconfig.
  • Partitienummering begint in 1 in GRUB 2 (in Legacy begon het bij 0).
  • Persistentie van variabelen met save_env/load_env in sommige configuraties.
  • Betere routedetectie en zoeken op UUID/tags; meer bestandssystemen ondersteund.
  • Direct lezen van LVM en RAID.
  • Terminal- en menu-graphics en gereorganiseerde afbeeldingen: Fase 1.5 is verdwenen; boot.img, core.img en dynamische modules (*.mod).

Beveiliging en verharding met GRUB

Een slecht beveiligde bootmanager is als een zeef. Als iemand met fysieke toegang kernelparameters kan wijzigen of een andere opstartoptie kan starten, worden uw beveiligingsmaatregelen effectief uitgeschakeld . Daarom is het raadzaam om GRUB met wachtwoorden te beveiligen en best practices te implementeren.

Stel een sterk wachtwoord om wijzigingen in de invoer of consoletoegang te beperken. Gebruik in GRUB 2 gebruikersnamen en wachtwoorden met grub-mkpasswd-pbkdf2 en configureer de overeenkomstige regels in de scripts van /etc/grub.d/.

Het omvat ook schijfversleuteling met LUKS , zodat zelfs als iemand de computer steelt, diegene de gegevens niet kan lezen. Daarnaast zorgt het ervoor dat het wachtwoordbeleid van het systeem strikt is om brute-force-aanvallen te verminderen.

Beheer uw loggeschiedenis verstandig : logs die een aanvaller aanwijzingen kunnen geven, moeten worden geminimaliseerd of gecentraliseerd met toegangscontrole; logs die helpen bij het controleren van kwaadwillige pogingen moeten worden verzameld en geanalyseerd op een veilige locatie.

Om andere geïnstalleerde systemen te detecteren en automatisch vermeldingen te genereren, installeert u os-proberHiermee bespaart u tijd en voorkomt u fouten bij het opnieuw maken van het menu.

  De tar gz-opdracht onder de knie krijgen in Linux

Installatie en onderhoud

Als je GRUB niet hebt geïnstalleerd tijdens de installatie van je distributie, kun je dat later doen. In GRUB 2 voer je vanuit het systeem het volgende uit: sudo grub-install /dev/sdX (vervang door uw schijf) en dan sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgBij de volgende keer opstarten ziet u het menu.

Vanuit een GRUB Legacy-console is de klassieke procedure om de root aan te geven en de installatie uit te voeren: root (hd1,0) gevolgd door setup (hd1,0) voor de eerste partitie van de tweede schijf, of setup (hd1) als je naar de MBR van die tweede schijf verwijst.

Direct bewerken /boot/grub/grub.cfg Dit is geen goed idee in GRUB 2, ook al is het technisch mogelijk. De aanbevolen route is om te veranderen /etc/default/grub, gebruik /etc/grub.d/40_custom voor eigen inhoud en regeneratie.

Praktische vragen en handige snelkoppelingen

Hoe weet ik welke de opstartpartitie is op /dev/sda? Op BIOS/MBR-systemen: sudo fdisk -l /dev/sda (zie de asterisk voor "Boot"). In GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT en zoek naar de EFI-partitie (FAT32, type EF00/flags esp). Ook sudo efibootmgr -v geeft de opgenomen opstartgegevens weer.

Hoe kom ik aan de UUID van een partitie? met blkid o lsblk -f. Bijvoorbeeld: sudo blkid /dev/sda2 geeft zijn UUID en andere metadata.

Hoe kan ik ervoor zorgen dat GRUB 2 10 seconden wacht voordat het de standaardinvoer invoert? Past zich aan /etc/default/grub met GRUB_TIMEOUT=10 (en indien van toepassing, GRUB_TIMEOUT_STYLE=menu) en voert uit sudo update-grub o grub2-mkconfig.

Welke GRUB Legacy-opdrachten moeten op de eerste partitie van de tweede schijf worden geïnstalleerd? Open de console en voer het volgende uit: root (hd1,0) y luego setup (hd1,0)Als je de MBR wilde, zou het zijn setup (hd1).

Stappen om de GRUB 2-configuratie te wijzigen? 1) Bewerken /etc/default/grub (bijv. GRUB_DEFAULT, GRUB_TIMEOUT), 2) vermeldingen toevoegen in /etc/grub.d/40_custom als je ze nodig hebt, 3) regenereren met update-grub/grub2-mkconfig, 4) opnieuw opstarten en testen.

Waar plaats ik aangepaste menu's in GRUB 2? En /etc/grub.d/40_custom (of eigen bestanden in /etc/grub.d/ met de juiste rechten). Bewerk nooit met de hand /boot/grub/grub.cfg behalve in noodgevallen.

Waar werden de items opgeslagen in GRUB Legacy? En /boot/grub/menu.lst o grub.conf, volgens de verdeling.

Hoe krijg ik toegang tot de GRUB-console vanuit het menu? Druk op de "c"-toets in GRUB 2 of Legacy. Om een ​​specifieke regel te bewerken, drukt u op "e". Beide sneltoetsen zijn erg handig wanneer u snel problemen wilt diagnosticeren.

Voorbeelden van veelvoorkomende opties

Standaard opstartselectie: GRUB_DEFAULT=0 de eerste inning begint; met GRUB_DEFAULT=saved Onthoudt de laatst gebruikte configuratie. Genereer de configuratie opnieuw na de wijziging.

Wacht tijd: GRUB_TIMEOUT=4 past de menuvertraging aan; met 0 start zonder te pauzeren; in sommige scenario's kunt u het menu verbergen met GRUB_TIMEOUT_STYLE=hidden voor een schonere start.

Menu-update: over Debian/Ubuntu en derivaten, sudo update-grub; in andere gevallen, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Zorg dat je hebt os-prober geïnstalleerd als u andere systemen automatisch wilt detecteren.

Hoewel GRUB ook buiten GNU/Linux-omgevingen voorkomt, is het belangrijk te onthouden dat het geen ondersteuningsservice is. Als uw probleem specifiek is voor Windows, kunt u het beste terecht op forums die aan dat besturingssysteem zijn gewijd voor gerichte hulp.

GRUB is geëvolueerd van een eenvoudig opstartmenu naar een volwaardige pre-systeemomgeving, die in staat is om meerdere besturingssystemen op te starten, complexe schijven te beheren en u te helpen een systeem te herstellen met slechts een paar commando's. Met de juiste configuratie en enkele beveiligingsmaatregelen (GRUB-wachtwoorden, LUKS-encryptie, goed beheerd sleutelbeleid en logboeken) beschikt u over een robuust, flexibel en vooral gecontroleerd opstartproces.

UEFI Bootkit
Gerelateerd artikel:
UEFI Bootkit: Bootkitty op Linux en de erfenis van BlackLotus