linux-rhel-centos-fedora boot grub2 rhel grubby uefi

GRUB2 Configuration on RHEL & Rocky (Artikel 078)

Verwaltung des Bootloaders GRUB2 unter RHEL. Erfahren Sie den Umgang mit grubby, die BLS-Struktur und die Unterschiede zwischen BIOS und UEFI-Systemen.

# GRUB2 on RHEL: Den Bootloader im Griff

TL;DR / Management Summary In RHEL 8 und 9 hat sich die Verwaltung von GRUB2 massiv geändert. Wir editieren keine kryptischen Konfigurationsdateien mehr. Stattdessen nutzt Red Hat die Boot Loader Specification (BLS) und das Werkzeug grubby. Dies ermöglicht ein sicheres Verwalten von Kernel-Parametern, ohne die Gefahr, das gesamte System durch einen Tippfehler in der grub.cfg unbootbar zu machen.


# 1. Einführung & Architektur

UEFI, BIOS und BLS.

GRUB2 ist in RHEL modular. Anstatt alle Einträge in einer Datei zu speichern, liegt für jeden installierten Kernel eine separate Datei unter /boot/loader/entries/.

# Dateipfade (RHEL Standard)

  • BIOS: /boot/grub2/grub.cfg
  • UEFI: /boot/efi/EFI/redhat/grub.cfg (Achtung: In RHEL 9 oft nur ein Symlink auf /boot/grub2/grub.cfg!).
graph TD
    A[Kernel Update / Admin Action] --> B[grubby tool]
    B --> C[BLS Fragment: /boot/loader/entries/xyz.conf]
    D[Boot Process] --> E[GRUB2 Binary]
    E -->|Reads| F[grub.cfg]
    F -->|Includes| C
    C -->|Loads| G[vmlinuz & initramfs]

# 2. Der moderne Weg: grubby

Änderungen ohne Schmerzen.

Nutzen Sie niemals vi für die grub.cfg. Nutzen Sie grubby.

# Kernel Parameter hinzufügen

Angenommen, wir wollen den Grafiktreiber deaktivieren:

sudo grubby --update-kernel=ALL --args="nomodeset"

# Parameter entfernen

sudo grubby --update-kernel=ALL --remove-args="nomodeset"

# Default Kernel setzen

# Welcher Kernel bootet standardmäßig?
grubby --default-kernel

# Anderen Kernel wählen
sudo grubby --set-default=/boot/vmlinuz-5.14.0-xxx

# 3. Die klassische Methode (Fallback)

Wenn grubby nicht ausreicht.

Wenn Sie globale Einstellungen (z.B. Timeout) ändern wollen, nutzen Sie /etc/default/grub.

# Konfiguration anpassen

# In /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

# Konfiguration neu generieren

# Auf BIOS und modernen UEFI RHEL 9 Systemen meist:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# 4. Day-2 Operations: Rescue & Boot-Analyse

Den Fehler finden.

# In den Rescue-Mode booten

Wenn das System nicht startet:

  1. Im GRUB-Menü e drücken.
  2. An die Zeile linux den Parameter rd.break hängen.
  3. CTRL+X zum Booten.
  4. Das System hält in der initramfs an. Mounten Sie /sysroot beschreibbar: mount -o remount,rw /sysroot chroot /sysroot

# 5. Troubleshooting & “War Stories”

Praxisfallen in der Red Hat Welt.

# Story 1: “Der UEFI-Verlust”

Symptom: Nach einem fehlgeschlagenen grub2-mkconfig findet das UEFI-Mainboard kein Boot-Device mehr. Ursache: Der Admin hat den Pfad /boot/efi/EFI/redhat/grub.cfg überschrieben, aber RHEL erwartet dort oft nur einen Pointer auf die Haupt-Config. Lösung: Nutzen Sie in RHEL 9 immer den Pfad /boot/grub2/grub.cfg für mkconfig. Das System kümmert sich via Symlink darum.

# Story 2: “Duplicate Menu Entries”

Symptom: Im Boot-Menü tauchen Kernel-Versionen doppelt auf. Ursache: Manuelle Änderungen in /boot/loader/entries/ oder Reste von alten Kernel-Installationen. Lösung: Nutzen Sie dnf remove kernel-<version>, um alte Kernel sauber zu deinstallieren. DNF bereinigt die BLS-Einträge automatisch.


# 6. Fazit & Empfehlung

  • grubby: Gewöhnen Sie sich an grubby. Es ist schneller und sicherer.
  • Backups: Sichern Sie die /etc/default/grub, bevor Sie Änderungen machen.
  • Security: Schützen Sie das GRUB-Menü mit einem Passwort (grub2-setpassword), um zu verhindern, dass Unbefugte Kernel-Parameter wie init=/bin/bash hinzufügen.

# Anhang: Cheatsheet

Aufgabe Befehl
Infos zum Default Kernel grubby --info=DEFAULT
Alle Kernel-Parameter sehen cat /proc/cmdline
GRUB-Passwort setzen grub2-setpassword
BLS-Einträge auflisten ls /boot/loader/entries/
Config neu bauen grub2-mkconfig -o /boot/grub2/grub.cfg
Boot-Log anzeigen journalctl -b
Kernel-Module listen lsmod