GRUB: De Bootloader van GNU/Linux — Een Praktische Gids
In 1999 maakten Gordon Matzigkeit en Yoshinori K. Okuji GRUB onderdeel van het officiële GNU Project. Vanaf dat moment werd de ontwikkeling opengesteld voor bijdragen van programmeurs wereldwijd.
De oorspronkelijke versie, nu GRUB Legacy genoemd, had een complexe en moeilijk onderhoudbare codebase. Daarom werd GRUB 2 volledig herschreven met een modulaire architectuur. De laatste versie van GRUB Legacy was 0.97, uitgegeven in 2005. Rond 2009 begonnen Ubuntu en Fedora GRUB 2 standaard te installeren. Volgens de Nederlandstalige Wikipedia is GRUB 2 sinds 2014 de standaardbootloader van de meeste Linuxdistributies. De huidige versie is 2.06, uitgegeven in 2021.
Configuratiebestand: grub.cfg
Het configuratiebestand grub.cfg bevat de lijst met beschikbare besturingssystemen, kernelopties en opstartmenu's. Systeembeheerders bewerken dit bestand zelden rechtstreeks. Ze gebruiken `update-grub`, een stub voor `grub-mkconfig`, die het configuratiebestand automatisch genereert op basis van gedetecteerde kernels en instellingen.Stappen: GRUB Configureren en Bijwerken
Stap 1: Controleer de GRUB-versie
grub-install --versionDit bevestigt dat GRUB 2 is geïnstalleerd en toont het versienummer.
Stap 2: Werk het GRUB-configuratiebestand bij
sudo update-grubDit commando genereert `grub.cfg` opnieuw op basis van de huidige systeemconfiguratie. Voer dit uit na het installeren van een nieuwe kernel of het wijzigen van opstartinstellingen.
Stap 3: Bekijk het gegenereerde configuratiebestand
cat /boot/grub/grub.cfg | lessControleer of de juiste kernels en besturingssystemen in het menu staan.
Stap 4: Kies tijdelijk een ander opstartmenu-item
sudo grub-reboot 2Dit selecteert het tweede menu-item voor de volgende keer opstarten, zonder de standaardinstelling permanent te wijzigen. Handig bij het testen van nieuwe kernels.
Stap 5: Haal informatie over apparaten op
grub-probe --target=device /bootDit toont welk apparaat de `/boot`-partitie bevat. Essentieel bij het configureren van de bootloader.
Stap 6: Zet SYSLINUX-configuratie om naar GRUB-formaat
grub-syslinux2cfg /path/to/syslinux.cfgDit zet SYSLINUX-configuratiebestanden om naar een formaat dat GRUB kan lezen. Ondersteunt varianten zoals ISOLINUX en PXELINUX.
Stap 7: Controleer kernelopstartargumenten
cat /proc/cmdlineDit toont de kernelopstartargumenten die GRUB heeft doorgegeven. Hierin staan onder andere de root-partitie en beveiligingsfuncties zoals secure boot.
Stap 8: Controleer schijfpartities met GPT-tools
sudo gdisk -l /dev/sdaDit toont de GPT-partitietabel van de schijf. GRUB 2 ondersteunt zowel MBR als GPT, maar vereist bij GPT-schijven zonder UEFI een kleine BIOS Boot Partition.
Verificatie
Controleer of GRUB correct werkt:grub-install --version && sudo update-grub
Als beide commando's zonder fouten worden uitgevoerd, is GRUB correct geconfigureerd. Start de computer opnieuw op om te bevestigen dat het opstartmenu verschijnt en het juiste besturingssysteem laadt.
Veelgestelde Problemen
Probleem 1: GRUB toont geen opstartmenu na het installeren van een nieuwe kernel
Oplossing: Voer `sudo update-grub` uit. Als het menu nog steeds niet verschijnt, controleer dan of de kernel daadwerkelijk is geïnstalleerd met `dpkg --list | grep linux-image` (op Debian/Ubuntu) of `rpm -qa | grep kernel` (op Fedora/RHEL).Probleem 2: GRUB kan een GPT-schijf niet vinden
Oplossing: Controleer of er een BIOS Boot Partition aanwezig is. Maak deze aan met `gdisk` of `cgdisk` (typecode `ef02`). Deze partitie moet minimaal 1 MiB groot zijn en vereist geen bestandssysteem.Probleem 3: GRUB start niet op na een update
Oplossing: Start op vanaf een live-cd en installeer GRUB opnieuw:sudo mount /dev/sda1 /mnt
sudo grub-install --root-directory=/mnt /dev/sdaVervang `/dev/sda1` door de juiste root-partitie en `/dev/sda` door de schijf waarop GRUB geïnstalleerd moet worden.
Tools voor Schijfbeheer
Naast de GRUB-hulpprogramma's zijn er tools die indirect invloed hebben op hoe GRUB werkt. gdisk, cgdisk en parted worden gebruikt om GPT-partitietabellen aan te maken of te bewerken. Deze tools zorgen ervoor dat de schijf correct is ingericht zodat GRUB kan worden geïnstalleerd.GRUB 2 ondersteunt zowel MBR als GPT, maar heeft specifieke eisen per formaat. Bij GPT-schijven zonder UEFI is een BIOS Boot Partition vereist. Deze tools maken die partitie aan en beheren de partitietabel.
GRUB werkt ook samen met andere systeemcomponenten. Het /proc/cmdline bestand bevat de kernelopstartargumenten die GRUB doorgeeft. Deze argumenten bepalen onder andere hoeveel geheugen het systeem gebruikt en welke root-partitie actief is.
GRUB op Specifieke Hardware
GRUB ondersteunt niet alleen standaard x86-pc's. Er is ook ondersteuning voor specifieke hardware. grub-render-label genereert bijvoorbeeld een `.disk_label` bestand voor Apple Mac-systemen. Dit bestand wordt door macOS gebruikt om een aangepaste naam en uiterlijk aan een schijf te geven in de verkenner.Deze ondersteuning toont aan dat GRUB rekening houdt met verschillende hardware- en besturingssysteemvereisten. Het maakt GRUB bruikbaar op een breed scala aan systemen, van servers tot desktopcomputers.
GRUB en Beveiliging
GRUB speelt een rol in de beveiliging van het opstartproces. Het ondersteunt secure boot en kan kernelopstartargumenten doorgeven die beveiligingsfuncties inschakelen. De kernelopstartargumenten in `/proc/cmdline` kunnen aangeven of secure boot is ingeschakeld.GRUB wordt regelmatig bijgewerkt voor beveiligingscorrecties. Het is daarom belangrijk om GRUB up-to-date te houden. Op Debian/Ubuntu-systemen doet u dit met:
sudo apt update && sudo apt upgrade grub-pc
Op Fedora/RHEL-systemen:
sudo dnf update grub2
GRUB en Virtualisatie
GRUB werkt ook in gevirtualiseerde omgevingen. In virtuele machines wordt GRUB geïnstalleerd op de virtuele schijf en werkt het op dezelfde manier als op fysieke hardware. Dit maakt het mogelijk om dezelfde tools en commando's te gebruiken voor het beheren van GRUB in virtuele machines.De modulaire architectuur van GRUB 2 maakt het eenvoudig om ondersteuning voor nieuwe hardware toe te voegen. Dit is belangrijk in virtualisatieomgevingen waar hardware voortdurend verandert.
GRUB en Netwerkopstart
GRUB ondersteunt netwerkopstart via PXE. Dit maakt het mogelijk om een computer op te starten vanaf een netwerkserver in plaats van een lokale schijf. Dit is nuttig in omgevingen waar veel computers tegelijk moeten worden geïnstalleerd of geconfigureerd.De PXELINUX-variant van SYSLINUX kan worden omgezet naar GRUB-formaat met `grub-syslinux2cfg`. Dit maakt het eenvoudig om bestaande PXE-configuraties over te zetten naar GRUB.
GRUB en Bestandssystemen
GRUB 2 ondersteunt een breed scala aan bestandssystemen, waaronder ext4, Btrfs, XFS en ZFS. Dit betekent dat GRUB kernels kan laden vanaf vrijwel elk modern bestandssysteem. De ondersteuning wordt voortdurend uitgebreid met nieuwe bestandssystemen.Het configuratiebestand `grub.cfg` wordt opgeslagen in de `/boot`-partitie. Deze partitie moet toegankelijk zijn voor GRUB. Het is daarom belangrijk dat de `/boot`-partitie een bestandssysteem gebruikt dat GRUB ondersteunt.
GRUB en Firmware
GRUB 2 ondersteunt zowel BIOS als UEFI firmware. Op UEFI-systemen wordt GRUB geïnstalleerd als een EFI-executable. Dit vereist een EFI System Partition (ESP) met een FAT-bestandssysteem.De installatie op UEFI-systemen verschilt van die op BIOS-systemen. Het commando `grub-install` detecteert automatisch het firmwaretype en installeert de juiste versie.
GRUB en Meerdere Besturingssystemen
Een van de belangrijkste functies van GRUB is het ondersteunen van meerdere besturingssystemen. GRUB toont een menu met alle beschikbare besturingssystemen en laat de gebruiker kiezen welke moet worden gestart.Het configuratiebestand `grub.cfg` bevat de menu-items voor elk besturingssysteem. Deze worden automatisch gegenereerd door `update-grub` op basis van gedetecteerde besturingssystemen.
GRUB en Kernelbeheer
GRUB speelt een centrale rol in het beheer van kernels. Wanneer een nieuwe kernel wordt geïnstalleerd, moet `update-grub` worden uitgevoerd om de nieuwe kernel aan het opstartmenu toe te voegen. Dit zorgt ervoor dat de kernel kan worden gekozen tijdens het opstarten.Het commando `grub-reboot` maakt het mogelijk om tijdelijk een andere kernel te selecteren. Dit is handig bij het testen van nieuwe kernels zonder de standaardinstelling permanent te wijzigen.
GRUB en Systeemherstel
GRUB kan ook worden gebruikt voor systeemherstel. Als het systeem niet meer opstart, kan GRUB worden gebruikt om een alternatieve kernel of een herstelmodus te laden. Dit is essentieel voor systeembeheerders.De kernelopstartargumenten in `/proc/cmdline` kunnen worden aangepast om het systeem in een herstelmodus te starten. Dit kan bijvoorbeeld nodig zijn als het bestandssysteem beschadigd is.
GRUB en Automatisering
GRUB kan worden geautomatiseerd met behulp van scripts. Het configuratiebestand `grub.cfg` kan worden gegenereerd met behulp van `grub-mkconfig` en aangepaste scripts. Dit maakt het mogelijk om het opstartmenu aan te passen aan specifieke vereisten.Systeembeheerders kunnen scripts maken die automatisch `update-grub` uitvoeren na het installeren van een nieuwe kernel. Dit zorgt ervoor dat het opstartmenu altijd up-to-date is.
GRUB en Documentatie
GRUB wordt uitgebreid gedocumenteerd. De officiële documentatie bevat gedetailleerde informatie over alle opties en commando's. Daarnaast zijn er tal van tutorials en handleidingen beschikbaar voor specifieke use cases.De Nederlandstalige Wikipedia bevat een uitgebreid artikel over GRUB met informatie over de geschiedenis, versies en functionaliteit. Dit artikel is een goed startpunt voor verdere studie.
De ontwikkeling van GRUB blijft actief, met regelmatige updates voor beveiligingscorrecties en nieuwe hardware-ondersteuning. De modulaire architectuur maakt het eenvoudig om nieuwe functies toe te voegen en bestaande functies te verbeteren, wat GRUB relevant houdt in een voortdurend veranderend technologisch landschap.