Die meisten Distributionen installieren einen zusätzlichen Bootloader auf einem UEFI-System. UEFI selbst ist ein Bootloader und bietet ein Menü zur Auswahl verschiedener Betriebssysteme oder einzelner Kernel. Darüber hinaus können die UEFI-Einstellungen leicht mit User-Space-Tools wie geändert werden efibootmgr
.
Kernel seit 3.3 unterstützen EFI_STUB, was bedeutet, dass der Kernel direkt von der UEFI geladen werden kann. Aus welchem Grund entscheiden sich Distributionen für die Verwendung eines zusätzlichen Bootloaders? Die meisten Tutorials zu Linux / UEFI befassen sich hauptsächlich mit der Einrichtung des zusätzlichen Bootloaders (rEFInd, grub2, ELILO usw.), anstatt Linux mit EFI_STUB zu booten.
Das einzige, was in den Distributionen fehlt, ist die Unterstützung. Da die meisten Distributionen einen zweiten Bootloader verketten, wird der Kernel weder zum UEFI-Bootmenü hinzugefügt noch in die EFI-Systempartition kopiert.
Drei Skripte reichen aus, um die ganze Magie zu vollbringen. Eine, die die initramfs in den ESP kopiert. Ein zweiter kopiert den Kernel auf den ESP und erstellt einen neuen Eintrag im UEFI-Startmenü. Das dritte Skript entfernt den alten Kernel und initramfs vom ESP und löscht den Eintrag im UEFI-Startmenü. Dies ermöglicht vollautomatisierte Kernel- / Initramfs-Updates / Bereinigungen ohne Benutzerinteraktion. Ich benutze diesen Ansatz seit mehr als einem Jahr und er hat einwandfrei funktioniert.
Warum verwenden die meisten Distributionen grub anstelle von EFI_STUB?
Links:
EDIT: Ich spreche nicht davon, die Grub-Unterstützung vollständig zu entfernen, sondern eine Auswahl für diejenigen anzubieten, die sie aus verschiedenen Gründen verwenden möchten. Distributionen könnten ein Paket grub-efi
für diejenigen bereitstellen , die UEFI und Grub verketten möchten, sowie ein Paket, efistub-boot
das die oben erwähnten Skripte enthält.