GUIDs y device paths UEFI
Averiguá qué protocolo, módulo o espacio de variables es un GUID de firmware UEFI, o decodificá un device path para ver nodo por nodo qué disco, partición, archivo o tarjeta de red usa una entrada de arranque. Acepta la forma de texto de la UEFI Shell y de efibootmgr -v, y el binario de las variables Boot####.
Pegá uno o varios GUID, nombres de variables de efivarfs o estructuras de EDK2; o escribí parte de un nombre, como GlobalVariable
Ejemplos:

Cómo funciona

El firmware UEFI identifica con GUIDs casi todo lo que maneja: los protocolos que ofrecen los controladores, los módulos DXE, PEI y SMM, los volúmenes de firmware y los espacios de nombres de las variables, como el de las variables globales de arranque o el de las bases de firmas de Secure Boot. Un GUID suelto no dice nada; esta herramienta busca su nombre simbólico en un catálogo de miles de GUIDs de EDK2 y de los principales fabricantes de firmware.

Un device path es la ruta que usa el firmware para llegar a un dispositivo o a un archivo: desde la raíz del bus PCI hasta el controlador, el disco, la partición y el cargador .efi. Las entradas de arranque Boot#### guardan un device path en binario; la herramienta lo traduce a su forma de texto y explica cada nodo con sus campos.

Ejemplos

8BE4DF61-93CA-11D2-AA0D-00E098032B8CEfiGlobalVariableGuidEspacio de nombres de las variables globales de la especificación, como BootOrder, Boot#### o SecureBoot.
db-d719b2cb-3d3a-4596-a3bc-dad00e67656fEfiImageSecurityDatabaseGuidNombre de archivo de /sys/firmware/efi/efivars: la variable db de Secure Boot. La herramienta extrae el GUID del nombre.
Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)Fv → FvFile 7C04A583-9E3E-4F1C-AD65-E05268D0B4D1 = FullShellEntrada de arranque de una UEFI Shell integrada en el firmware: el archivo se busca por GUID dentro de un volumen 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)Contenido binario de una variable Boot####: atributos, descripción y device path. Si se pega el archivo de efivarfs, los cuatro bytes de atributos de la variable que van al principio se reconocen solos.

Casos de uso

  • Entender qué arranca cada entrada que lista efibootmgr -v antes de cambiar el orden de arranque o borrar una.
  • Identificar los GUIDs que aparecen en un registro de arranque, en un volcado de variables o en el código de EDK2.
  • Saber a qué variable corresponde cada archivo de /sys/firmware/efi/efivars, por ejemplo las bases de firmas de Secure Boot.
  • Ubicar qué disco, partición y archivo usa una entrada de arranque que dejó de funcionar después de clonar o reemplazar un disco.
  • Revisar los módulos de una imagen de firmware abierta con UEFITool u otras herramientas de análisis.

Preguntas frecuentes

¿De dónde saco el device path de una entrada de arranque?

En Linux, efibootmgr -v muestra cada entrada con su device path en texto, y los archivos Boot#### de /sys/firmware/efi/efivars tienen el binario completo, que se puede volcar con xxd o hexdump -C. En la UEFI Shell, bcfg boot dump -v muestra las entradas y map -v, los device paths de los discos.

¿Por qué un GUID no figura en el catálogo?

Cualquier fabricante puede crear GUIDs para sus propios módulos sin registrarlos en ningún lado. El catálogo reúne los de EDK2 y los que la comunidad fue identificando en firmwares de los principales fabricantes, pero siempre van a quedar GUIDs propios sin nombre. Los GUIDs de partición que aparecen en los nodos HD son únicos de cada disco y nunca figuran.

¿Qué formatos de device path acepta?

La forma de texto de la especificación, como la muestran la UEFI Shell y EDK2, una línea completa de efibootmgr -v y el binario en hexadecimal, separado o no por espacios y también como salida de xxd o hexdump -C. El binario puede ser el device path solo, el contenido de una variable Boot#### o el archivo de efivarfs con sus atributos al principio.

¿Se envía el device path a algún servidor?

No. El device path se decodifica en tu navegador. Solo se consultan al servidor los GUIDs de firmware que aparecen en los nodos, para mostrar su nombre; los GUIDs de partición y el resto de los datos no salen de tu equipo.

¿Qué significan los datos que efibootmgr muestra después de la ruta del archivo?

Son los datos opcionales de la entrada, que el firmware le pasa al cargador. El administrador de arranque de Windows, por ejemplo, guarda ahí una referencia a su almacén BCD. No forman parte del device path; si se pega el binario de la variable, la herramienta los muestra aparte.