Woher weiß UEFI, welche Bootloader-Konfiguration verwendet werden soll?

Woher weiß UEFI, welche Bootloader-Konfiguration verwendet werden soll?

Es ist schon eine Weile her, seit ich etwas über UEFI gelesen habe, und ich habe vergessen, wie einige Teile miteinander verbunden sind. Ich habe vergessen, wie UEFI und der Grub-Bootloader zusammenarbeiten. Ich sage, was ich in Erinnerung habe. Bitte korrigieren Sie mich, wenn ich falsch liege:

  • UEFI ist betriebssystemunabhängig und funktioniert mit einer einzigen ESP-Partition, unabhängig von der Anzahl der Festplatten.
  • Die ESP-Partition ist der Ort, an dem sich neue Betriebssysteme für den UEFI-Prozess „abonnieren“, indem sie ihre Bootloader und Partitionsverweise in ihren eigenen Ordnern hinzufügen. Grundsätzlich gibt es für jedes installierte Betriebssystem einen Ordner in /boot/efi.
  • Bootloader werden als Sequenz im NVRAM gespeichert.

Im Moment verwende ich eine Maschine, auf der Ubuntu, Windows und Arch installiert sind. Jedes Betriebssystem hat seinen eigenen Bootloader, aber wenn meine Maschine mir die „Boot-Einträge“ anzeigt, sehe ich mir eigentlich die Grub-Konfiguration von Ubuntu an. Es ist, als würde ich Ubuntus Grub verwenden, um jedes beliebige Betriebssystem auf meiner Maschine zu laden.

Die Frage ist also: Woher weiß UEFI, dass Ubuntu mein „Haupt“-Bootloader ist? Warum werden mir beim Starten meines Rechners nicht die Windows- oder Arch-Bootloader angezeigt?

Antwort1

UEFI ist eine System-Firmware und GRUB ist ein Bootloader, der so erstellt wurde, dass er der Firmware entspricht.

GRUB mit BIOS hat die Form eines Bootcodes innerhalb des MBR und vor der ersten Partition. Mit UEFI kann GRUB die Form einer einzelnen grubx64.efiDatei innerhalb der ESP-Partition annehmen. GRUB-Architekturkennungen gelten für BIOS i386-pcund für UEFI auf 64-Bit-x86-Hardware x86_64-efi.

UEFI weiß nichts – es zeigt normalerweise nur ein Menü für die Bootloader an, die es findet. Wenn es nur einen Bootloader findet, wird das Menü nicht angezeigt, und dann wird dieser ohne Fragen gebootet.

In Ihrem Fall ist Grub offensichtlich der einzige vorhandene Bootloader und wird daher sofort beim Booten ausgeführt.

Es gibt zwei Methoden, damit Grub von der EFI-Firmware zum Booten ausgewählt wird:

  1. UEFI-Bootvariablen werden im NVRAM des Systems gespeichert. Unter Linux können Sie sie mit bearbeiten efibootmgr; unter Windows bcdedit /enum FIRMWAREkönnen Sie sie auflisten und dann bearbeiten.

  2. Wenn keine UEFI-Bootvariablen definiert sind, sucht die UEFI-Firmware nach Bootloadern innerhalb der ESP-Partition. In Ihrem Fall könnte sie \EFI\boot\bootx64.efifür 64-Bit-Hardware fündig werden.

verwandte Informationen