So funktioniert es
Die UEFI-Firmware identifiziert fast alles, was sie verwaltet, mit GUIDs: die Protokolle, die die Treiber bereitstellen, die DXE-, PEI- und SMM-Module, die Firmware-Volumes und die Namespaces der Variablen, etwa den der globalen Bootvariablen oder den der Signaturdatenbanken von Secure Boot. Eine GUID allein sagt nichts aus; dieses Tool sucht ihren symbolischen Namen in einem Katalog mit Tausenden GUIDs aus EDK2 und von den wichtigsten Firmware-Herstellern.
Ein Device Path ist der Pfad, über den die Firmware ein Gerät oder eine Datei erreicht: von der Wurzel des PCI-Busses bis zum Controller, zum Laufwerk, zur Partition und zum .efi-Loader. Die Booteinträge Boot#### speichern einen Device Path in binärer Form; das Tool übersetzt ihn in seine Textform und erklärt jeden Knoten mit seinen Feldern.
Beispiele
8BE4DF61-93CA-11D2-AA0D-00E098032B8CEfiGlobalVariableGuidNamespace der globalen Variablen der Spezifikation, etwa BootOrder, Boot#### oder SecureBoot.db-d719b2cb-3d3a-4596-a3bc-dad00e67656fEfiImageSecurityDatabaseGuidDateiname aus /sys/firmware/efi/efivars: die Secure-Boot-Variable db. Das Tool extrahiert die GUID aus dem Namen.Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)Fv → FvFile 7C04A583-9E3E-4F1C-AD65-E05268D0B4D1 = FullShellBooteintrag einer in die Firmware integrierten UEFI Shell: Die Datei wird per GUID innerhalb eines Firmware-Volumes gesucht.01 00 00 00 20 00 55 00 45 00 46 00 49 00 20 00 4F 00 53 00 00 00 02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 02 1F 03 12 0A 00 00 00 FF FF 00 00 7F FF 04 00UEFI OS — PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0xFFFF,0x0)Binärinhalt einer Boot####-Variablen: Attribute, Beschreibung und Device Path. Wenn du die Datei aus efivarfs einfügst, werden die vier Attributbytes der Variablen am Anfang automatisch erkannt.Anwendungsfälle
- Verstehen, was jeder von efibootmgr -v aufgelistete Eintrag startet, bevor du die Bootreihenfolge änderst oder einen davon löschst.
- Die GUIDs identifizieren, die in einem Bootprotokoll, einem Variablen-Dump oder im EDK2-Code auftauchen.
- Herausfinden, zu welcher Variablen jede Datei in /sys/firmware/efi/efivars gehört, etwa die Signaturdatenbanken von Secure Boot.
- Herausfinden, welches Laufwerk, welche Partition und welche Datei ein Booteintrag verwendet, der nach dem Klonen oder Austauschen eines Laufwerks nicht mehr funktioniert.
- Die Module eines Firmware-Images prüfen, das mit UEFITool oder anderen Analysewerkzeugen geöffnet wurde.
Häufige Fragen
Woher bekomme ich den Device Path eines Booteintrags?
Unter Linux zeigt efibootmgr -v jeden Eintrag mit seinem Device Path als Text, und die Boot####-Dateien in /sys/firmware/efi/efivars enthalten die vollständigen Binärdaten, die du mit xxd oder hexdump -C ausgeben kannst. In der UEFI Shell zeigt bcfg boot dump -v die Einträge und map -v die Device Paths der Laufwerke.
Warum ist eine GUID nicht im Katalog?
Jeder Hersteller kann GUIDs für seine eigenen Module erstellen, ohne sie irgendwo zu registrieren. Der Katalog sammelt die aus EDK2 und die, die die Community in Firmwares der wichtigsten Hersteller identifiziert hat, aber es bleiben immer herstellereigene GUIDs ohne Namen. Die Partitions-GUIDs in den HD-Knoten sind für jedes Laufwerk eindeutig und sind nie enthalten.
Welche Device-Path-Formate werden akzeptiert?
Die Textform der Spezifikation, wie sie die UEFI Shell und EDK2 anzeigen, eine vollständige Zeile von efibootmgr -v und die Binärdaten in Hexadezimal, mit oder ohne Leerzeichen getrennt und auch als Ausgabe von xxd oder hexdump -C. Die Binärdaten können der Device Path allein, der Inhalt einer Boot####-Variablen oder die efivarfs-Datei mit ihren Attributen am Anfang sein.
Wird der Device Path an einen Server gesendet?
Nein. Der Device Path wird in deinem Browser dekodiert. Nur die Firmware-GUIDs, die in den Knoten vorkommen, werden beim Server abgefragt, um ihren Namen anzuzeigen; die Partitions-GUIDs und die übrigen Daten verlassen deinen Computer nicht.
Was bedeuten die Daten, die efibootmgr nach dem Dateipfad anzeigt?
Das sind die optionalen Daten des Eintrags, die die Firmware an den Loader übergibt. Der Windows-Start-Manager speichert dort zum Beispiel einen Verweis auf seinen BCD-Speicher. Diese Daten gehören nicht zum Device Path; wenn du die Binärdaten der Variablen einfügst, zeigt das Tool sie separat an.