GRUB (Grand Unified Bootloader) ist der Standard-Bootloader für Linux. Er ermöglicht das Booten verschiedener Betriebssysteme und Kernel-Versionen.
Grundlagen
GRUB-Dateien
/boot/grub/grub.cfg # Generierte Konfiguration
/etc/default/grub # Einstellungen
/etc/grub.d/ # Konfigurations-Skripte
/boot/grub/ # GRUB-DateienKonfiguration generieren
# Debian/Ubuntu
update-grub
# CentOS/RHEL
grub2-mkconfig -o /boot/grub2/grub.cfgStandard-Konfiguration
/etc/default/grub
# Standard-Eintrag (0 = erster)
GRUB_DEFAULT=0
# Timeout in Sekunden
GRUB_TIMEOUT=5
# Timeout-Verhalten
GRUB_TIMEOUT_STYLE=menu
# Kernel-Parameter
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Boot-Auflösung
GRUB_GFXMODE=auto
# Terminal
GRUB_TERMINAL=console
# OS-Prober (Dual-Boot)
GRUB_DISABLE_OS_PROBER=falseÄnderungen anwenden
# Nach Änderungen in /etc/default/grub
update-grubKernel-Parameter
Häufige Parameter
# Quiet-Boot
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# Ohne Splash
GRUB_CMDLINE_LINUX_DEFAULT="nosplash"
# IPv6 deaktivieren
GRUB_CMDLINE_LINUX="ipv6.disable=1"
# IOMMU aktivieren
GRUB_CMDLINE_LINUX="intel_iommu=on"
# Speicher begrenzen
GRUB_CMDLINE_LINUX="mem=4G"
# Single-User-Mode
# (beim Boot: append 'single' oder '1')Parameter kombinieren
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="ipv6.disable=1 net.ifnames=0"Standard-Boot ändern
Nach Index
# Zweiter Eintrag (Index 1)
GRUB_DEFAULT=1Nach Name
# Exakter Menü-Name
GRUB_DEFAULT="Ubuntu, with Linux 5.15.0-generic"
# Aus Sub-Menü
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-generic"Letzter Boot
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=trueManuell setzen
grub-set-default 2
grub-reboot 1 # EinmaligBoot-Menü anpassen
Timeout
# Sofort booten
GRUB_TIMEOUT=0
# Warten auf Eingabe
GRUB_TIMEOUT=-1
# 5 Sekunden
GRUB_TIMEOUT=5Menü verstecken
# Menü nur bei Shift-Taste
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=2Eigene Einträge
# /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
menuentry "Reboot" {
reboot
}
menuentry "Shutdown" {
halt
}
menuentry "Boot from USB" {
set root=(hd1,1)
chainloader +1
}Recovery-Modus
Im GRUB-Menü
1. Bei Boot: Shift gedrückt halten
2. Eintrag auswählen, 'e' drücken
3. Zeile mit 'linux' finden
4. 'quiet splash' durch 'recovery' ersetzen
5. Ctrl+X oder F10 zum BootenSingle-User-Mode
# An Kernel-Zeile anhängen:
single
# oder
init=/bin/bashGRUB reparieren
Von Live-System
# Live-USB booten
# Root-Partition mounten
mount /dev/sda2 /mnt
# Wichtige Verzeichnisse mounten
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
# Bei UEFI
mount /dev/sda1 /mnt/boot/efi
# chroot
chroot /mnt
# GRUB neu installieren (BIOS)
grub-install /dev/sda
update-grub
# Für UEFI
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
# Verlassen
exit
umount -R /mnt
rebootGRUB-Rescue
# Wenn 'grub rescue>' erscheint
# Partitionen auflisten
ls
# Root-Partition finden
ls (hd0,2)/boot/grub
# Prefix setzen
set prefix=(hd0,2)/boot/grub
set root=(hd0,2)
# Normal-Modus laden
insmod normal
normalUEFI vs. BIOS
UEFI-Spezifisch
# Installation (UEFI)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
# EFI-Einträge anzeigen
efibootmgr -v
# Boot-Reihenfolge ändern
efibootmgr -o 0002,0001,0000BIOS/Legacy
# Installation (BIOS)
grub-install /dev/sda
# MBR überschreiben
grub-install --force /dev/sdaPasswort-Schutz
GRUB-Passwort setzen
# Passwort-Hash generieren
grub-mkpasswd-pbkdf2# /etc/grub.d/40_custom
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.HASH...Bestimmte Einträge schützen
# /etc/grub.d/40_custom
menuentry "Secure Entry" --users admin {
linux /vmlinuz
initrd /initrd.img
}Dual-Boot
Windows erkennen
# OS-Prober aktivieren
GRUB_DISABLE_OS_PROBER=false
# Aktualisieren
update-grubManueller Windows-Eintrag
# /etc/grub.d/40_custom
menuentry "Windows 10" {
insmod part_gpt
insmod chain
set root=(hd0,1)
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}Troubleshooting
"GRUB Rescue" Prompt
ls
set prefix=(hd0,2)/boot/grub
set root=(hd0,2)
insmod normal
normalKein Boot-Menü
# Shift-Taste beim Boot halten
# Oder:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5
update-grubFalscher Kernel bootet
# Standard-Kernel setzen
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-generic"
update-grubUEFI-Eintrag fehlt
# Eintrag erstellen
efibootmgr -c -d /dev/sda -p 1 -L "Ubuntu" -l "\EFI\ubuntu\shimx64.efi"Zusammenfassung
| Datei | Funktion | |-------|----------| | /etc/default/grub | Einstellungen | | /etc/grub.d/* | Menü-Skripte | | /boot/grub/grub.cfg | Generierte Config |
| Befehl | Funktion | |--------|----------| | update-grub | Config neu generieren | | grub-install | GRUB installieren | | grub-set-default | Standard setzen | | grub-reboot | Einmal anderen booten |
| Boot-Taste | Funktion | |------------|----------| | Shift | Menü anzeigen | | e | Eintrag bearbeiten | | c | GRUB-Shell | | Ctrl+X/F10 | Bearbeiteten Eintrag booten |
Fazit
GRUB ist ein mächtiger Bootloader mit vielen Anpassungsmöglichkeiten. Die Konfiguration über /etc/default/grub ist unkompliziert, vergessen Sie aber nicht update-grub nach Änderungen. Für Recovery-Situationen ist das Booten von einem Live-System die sicherste Methode. Bei UEFI-Systemen beachten Sie die zusätzlichen EFI-spezifischen Befehle.