Wie erkennt UEFI Startgeräte in Partitionen?

678
ransh

Wie erkennt UEFI Startgeräte?

Wenn ich nur Linux auf einer Partition installiere, sagen Sie / dev / sda2, wie kann das Uefi es als Boot-Eintrag erkennen?

Überprüft das BIOS jede Partition? Wie ?

0
BIOS oder UEFI? Sie unterscheiden sich völlig in der Boot-Methode. Das BIOS führt den Code im MBR aus, wenn Festplatten mit einer Partition als "Active & Bootable" gekennzeichnet sind. UEFI unterscheidet sich vollständig, außer im Legacy-Modus. Google kann Ihnen tatsächlich sehr detaillierte Antworten für jedes Szenario liefern. Welches Problem versuchen Sie hier zu beheben oder was ist das Problem? acejavelin vor 5 Jahren 0
Ich habe nur eine Frage für Uefi behoben ransh vor 5 Jahren 0

1 Antwort auf die Frage

5
grawity

Normales PC- BIOS versteht keine Partitionen. Es liest nur Sektor 0 (den MBR), führt den dort gefundenen ursprünglichen Bootcode aus (der vom Betriebssystem installiert werden muss), und dieser Bootcode selbst muss die Partitionstabelle parsen.

(Nicht alle MBR-Boot-Sektoren führen diese Aufgabe auf dieselbe Weise aus. Die von Windows oder Syslinux installierten Boot-Laufwerke suchen nur nach einer als "aktiv" gekennzeichneten Partition, während GRUB und LILO stattdessen an einer fest codierten Stelle nach einer Konfigurationsdatei suchen. Einige Boot-Sektoren verstehen nur MBR, andere können GPT lesen.)

Ein BIOS-Boot-Menü enthält also nur Festplatten, keine Partitionen. Das ausgefallene Boot-Menü, in dem Betriebssysteme aufgelistet sind, wird vom Bootloader des Betriebssystems (z. B. GRUB) und nicht vom BIOS angezeigt. Die Suche nach der Betriebssystem-Kernel-Partition und das Starten des Betriebssystems selbst erfolgt ebenfalls über diesen Bootloader, nicht über das BIOS.


Im Gegensatz zum BIOS versteht die UEFI- Firmware tatsächlich MBR- und GPT-Partitionstabellen. UEFI erkennt jedoch keine Linux- oder Windows-Partitionen und kann das Betriebssystem von dort nicht direkt starten.

Stattdessen sucht die UEFI-Firmware nur nach einer bestimmten "EFI-Systempartition", einer FAT32-Partition, die Bootloader-Programme enthält. Die Firmware enthält auch eine Liste der Betriebssysteme im NVRAM, und jedes installierte Betriebssystem fügt dort einen eigenen Eintrag hinzu, der auf seine eigene *.efiDatei in der Systempartition verweist .

Beispielsweise fügt Windows immer einen Eintrag mit dem Titel "Windows Boot Manager" hinzu, der auf die Datei "\ EFI \ Microsoft \ Bootmfgw.efi" verweist, bei der es sich um den Windows-Bootloader handelt.

Das UEFI-Startmenü kann also verschiedene Arten von Starteinträgen enthalten:

  1. Manuell hinzugefügte Einträge im NVRAM - mit einer benutzerdefinierten Bezeichnung, die auf eine bestimmte Datei in der EFI-Systempartition verweist;
  2. Automatisch erkannte Festplatten mit einer \EFI\Boot\BootX64.efiDatei innerhalb der EFI-Systempartition - diese haben keine benutzerdefinierte Bezeichnung, nur "UEFI:", gefolgt vom Modell der Festplatte.
  3. Wenn aktiviert - Festplatten mit einem BIOS-MBR (zum Starten im Kompatibilitätsmodus).

Wie Sie sehen, verwendet die UEFI-Firmware nur eine Partition (die EFI-Systempartition), der Rest (das Auffinden der Betriebssystem-Kernel-Partition) wird jedoch weiterhin vom eigenen Bootloader des Betriebssystems ausgeführt.

Selbst in UEFI werden grafische Boot-Menüs, mit denen Sie das Betriebssystem oder die Kernel-Version auswählen können, normalerweise auch vom Bootloader des Betriebssystems angezeigt - nicht von UEFI.


Der Linux-Bootloader weiß jedoch noch nicht genau etwas über die Root- Partition. Die Hauptaufgabe des Linux-Bootloaders besteht darin, das Kernel-Image (vmlinuz) und das initramfs-Archiv zu finden und dem Kernel Befehlszeilenoptionen zur Verfügung zu stellen, die den Namen der Root-Partition in der Linux-Syntax enthalten, z. B. root=/dev/sda2oder root=UUID=XYZ-ABC.

Schließlich, wenn der Linux - Kernel gestartet wird, wird es sich für eine Partition suchen, den Namen zur Verfügung gestellt passende und wird es montieren auf /. (Dies kann entweder vom Kernel intern oder von den initramfs durchgeführt werden, wenn mehr Flexibilität gewünscht wird.)

Eine sehr schöne und klare Antwort! Hennes vor 5 Jahren 0