Linux-Kernel mit Systemd-Boot gekonnt starten

Der Linux-Bootmanager GRUB ist weit verbreitet, aber kompliziert zu konfigurieren. Dabei ist er nicht zwingend notwendig, denn es gibt modernere Alternativen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 74 Kommentare lesen

(Bild: Andreas Martini)

Lesezeit: 13 Min.
Von
  • Keywan Tonekaboni
Inhaltsverzeichnis
Mehr zu Linux

Eigentlich ist der Grand Unified Bootloader, kurz GRUB, ein beeindruckendes Stück Software: Er bootet Linux von allerhand Dateisystemen, sogar aus verschlüsselten LUKS-Containern, und startet auf Wunsch auch ein parallel installiertes Windows. Doch wehe, man hat zwei Linux-Systeme installiert: Dann kämpfen unter Umständen die jeweiligen GRUB2-Instanzen um die Vorherrschaft auf dem Rechner. Und wer an den Einstellungen von GRUB2 schrauben will, ist schnell von der Komplexität der Konfigurationssyntax erschlagen. Um diese zu verstehen, bräuchte man einen Doktortitel, behaupten böse Zungen. Zwar versuchen Linux-Distributionen wie Debian, Ubuntu oder Fedora, den Nutzern mit Hilfsskripten und eigenen vereinfachten Konfigurationsdateien wie /etc/default/grub das Leben zu erleichtern, aber um etwa per Vorgabe eine bestimmte Installation oder einen expliziten Kernel zu starten, reichen die nicht. Als Alternative bietet sich der schlanke Boot-Manager von Systemd an (Systemd-Boot), der früher eigenständig unter dem Namen "Gummiboot" entwickelt wurde.

GRUB2 stammt aus einer Zeit, in der das BIOS nur ein System starten konnte. Dessen Bootcode war im "Master Boot Record" (MBR) des Datenträgers hinterlegt. Ein Bootmanager wie GRUB2 erlaubt da mehr Flexibilität. Aber in Zeiten von UEFI-BIOS ist das obsolet, da diese Firmwares ohne Probleme verschiedene Systeme starten können. Lediglich die ausführbaren EFI-Dateien der Bootloader oder Betriebssysteme müssen für das UEFI-BIOS zugänglich sein. Typischerweise liegen die in der EFI-Systempartition (ESP), die Linux-Systeme meist unter /boot/efi einhängen.

Bei GRUB auf 64-Bit-x86-Systemen ist es die grubx64.efi, die beispielsweise Ubuntu in /boot/efi/EFI/ubuntu/ speichert. Faktisch wird aber meist die für Secure Boot signierte Shim (shimx64.efi) geladen, die dann GRUB startet. Anstelle von GRUB oder zusätzlich dazu kann auch der Linux-Kernel selbst in der EFI-Partition liegen und via "Efistub" direkt vom UEFI-BIOS gestartet werden; dazu später mehr. Übrigens: Der Windows-Bootmanager weilt in /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi und kommt einem Linux-Bootloader nicht mehr in die Quere.