Comment ça marche
Le firmware UEFI identifie par des GUID presque tout ce qu'il manipule : les protocoles fournis par les pilotes, les modules DXE, PEI et SMM, les volumes de firmware et les espaces de noms des variables, comme celui des variables globales de démarrage ou celui des bases de signatures de Secure Boot. Un GUID isolé ne dit rien ; cet outil recherche son nom symbolique dans un catalogue de milliers de GUID provenant d'EDK2 et des principaux fabricants de firmware.
Un device path est le chemin qu'utilise le firmware pour atteindre un périphérique ou un fichier : de la racine du bus PCI jusqu'au contrôleur, au disque, à la partition et au chargeur .efi. Les entrées de démarrage Boot#### stockent un device path en binaire ; l'outil le traduit en forme texte et explique chaque nœud avec ses champs.
Exemples
8BE4DF61-93CA-11D2-AA0D-00E098032B8CEfiGlobalVariableGuidEspace de noms des variables globales de la spécification, comme BootOrder, Boot#### ou SecureBoot.db-d719b2cb-3d3a-4596-a3bc-dad00e67656fEfiImageSecurityDatabaseGuidNom de fichier de /sys/firmware/efi/efivars : la variable db de Secure Boot. L'outil extrait le GUID du nom.Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)Fv → FvFile 7C04A583-9E3E-4F1C-AD65-E05268D0B4D1 = FullShellEntrée de démarrage d'un UEFI Shell intégré au firmware : le fichier est recherché par GUID dans un volume de firmware.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)Contenu binaire d'une variable Boot#### : attributs, description et device path. Si vous collez le fichier d'efivarfs, les quatre octets d'attributs de la variable placés au début sont reconnus automatiquement.Cas d'usage
- Comprendre ce que démarre chaque entrée listée par efibootmgr -v avant de modifier l'ordre de démarrage ou d'en supprimer une.
- Identifier les GUID qui apparaissent dans un journal de démarrage, un vidage de variables ou le code d'EDK2.
- Savoir à quelle variable correspond chaque fichier de /sys/firmware/efi/efivars, par exemple les bases de signatures de Secure Boot.
- Localiser le disque, la partition et le fichier qu'utilise une entrée de démarrage qui a cessé de fonctionner après le clonage ou le remplacement d'un disque.
- Examiner les modules d'une image de firmware ouverte avec UEFITool ou d'autres outils d'analyse.
Questions fréquentes
Où obtenir le device path d'une entrée de démarrage ?
Sous Linux, efibootmgr -v affiche chaque entrée avec son device path en texte, et les fichiers Boot#### de /sys/firmware/efi/efivars contiennent le binaire complet, que l'on peut vider avec xxd ou hexdump -C. Dans l'UEFI Shell, bcfg boot dump -v affiche les entrées et map -v, les device paths des disques.
Pourquoi un GUID ne figure-t-il pas dans le catalogue ?
N'importe quel fabricant peut créer des GUID pour ses propres modules sans les enregistrer nulle part. Le catalogue réunit ceux d'EDK2 et ceux que la communauté a identifiés au fil du temps dans les firmwares des principaux fabricants, mais il restera toujours des GUID propriétaires sans nom. Les GUID de partition qui apparaissent dans les nœuds HD sont propres à chaque disque et n'y figurent jamais.
Quels formats de device path sont acceptés ?
La forme texte de la spécification, telle que l'affichent l'UEFI Shell et EDK2, une ligne complète d'efibootmgr -v et le binaire en hexadécimal, séparé ou non par des espaces, y compris sous forme de sortie de xxd ou de hexdump -C. Le binaire peut être le device path seul, le contenu d'une variable Boot#### ou le fichier d'efivarfs avec ses attributs au début.
Le device path est-il envoyé à un serveur ?
Non. Le device path est décodé dans votre navigateur. Seuls les GUID de firmware qui apparaissent dans les nœuds sont envoyés au serveur, pour afficher leur nom ; les GUID de partition et le reste des données ne quittent pas votre ordinateur.
Que signifient les données qu'efibootmgr affiche après le chemin du fichier ?
Ce sont les données facultatives de l'entrée, que le firmware transmet au chargeur. Le Gestionnaire de démarrage Windows, par exemple, y stocke une référence à son magasin BCD. Elles ne font pas partie du device path ; si vous collez le binaire de la variable, l'outil les affiche séparément.