UEFI GUID 与设备路径
查明 UEFI 固件 GUID 是哪个协议、模块或变量空间,或解码设备路径,逐个节点查看启动项使用的磁盘、分区、文件或网卡。支持 UEFI Shell 和 efibootmgr -v 的文本形式,以及 Boot#### 变量的二进制数据。
粘贴一个或多个 GUID、efivarfs 变量名或 EDK2 结构;也可以输入名称的一部分,例如 GlobalVariable
示例:

工作原理

UEFI 固件几乎用 GUID 来标识它所处理的一切:驱动程序提供的协议、DXE、PEI 和 SMM 模块、固件卷,以及变量的命名空间,例如全局启动变量或安全启动签名数据库的命名空间。单独一个 GUID 说明不了什么;本工具会在一个收录了 EDK2 和主要固件厂商数千个 GUID 的目录中查找它的符号名称。

设备路径是固件用来到达某个设备或文件的路径:从 PCI 总线的根开始,经过控制器、磁盘、分区,直到 .efi 加载程序。Boot#### 启动项以二进制形式保存设备路径;本工具会将其转换为文本形式,并逐一解释每个节点及其字段。

示例

8BE4DF61-93CA-11D2-AA0D-00E098032B8CEfiGlobalVariableGuid规范中全局变量的命名空间,例如 BootOrder、Boot#### 或 SecureBoot。
db-d719b2cb-3d3a-4596-a3bc-dad00e67656fEfiImageSecurityDatabaseGuid/sys/firmware/efi/efivars 中的文件名:安全启动的 db 变量。本工具会从名称中提取 GUID。
Fv(7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1)/FvFile(7C04A583-9E3E-4F1C-AD65-E05268D0B4D1)Fv → FvFile 7C04A583-9E3E-4F1C-AD65-E05268D0B4D1 = FullShell固件内置 UEFI Shell 的启动项:在固件卷中按 GUID 查找文件。
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)Boot#### 变量的二进制内容:属性、描述和设备路径。如果粘贴 efivarfs 中的文件,开头的 4 字节变量属性会被自动识别。

使用场景

  • 在更改启动顺序或删除启动项之前,了解 efibootmgr -v 列出的每个启动项启动的是什么。
  • 识别启动日志、变量转储或 EDK2 代码中出现的 GUID。
  • 了解 /sys/firmware/efi/efivars 中的每个文件对应哪个变量,例如安全启动的签名数据库。
  • 在克隆或更换磁盘后,找出不再正常工作的启动项所使用的磁盘、分区和文件。
  • 查看用 UEFITool 或其他分析工具打开的固件映像中的模块。

常见问题

从哪里获取启动项的设备路径?

在 Linux 中,efibootmgr -v 会显示每个启动项及其文本形式的设备路径;/sys/firmware/efi/efivars 中的 Boot#### 文件包含完整的二进制数据,可用 xxd 或 hexdump -C 转储。在 UEFI Shell 中,bcfg boot dump -v 显示启动项,map -v 显示磁盘的设备路径。

为什么某个 GUID 不在目录中?

任何制造商都可以为自己的模块创建 GUID,而无需在任何地方注册。该目录收录了 EDK2 的 GUID,以及社区在主要制造商的固件中陆续识别出的 GUID,但总会有一些没有名称的私有 GUID。HD 节点中出现的分区 GUID 是每块磁盘独有的,永远不会出现在目录中。

支持哪些设备路径格式?

支持 UEFI Shell 和 EDK2 显示的规范文本形式、efibootmgr -v 的完整一行,以及十六进制二进制数据(是否用空格分隔均可,也可以是 xxd 或 hexdump -C 的输出)。二进制数据可以只是设备路径,也可以是 Boot#### 变量的内容,或开头带有属性的 efivarfs 文件。

设备路径会发送到服务器吗?

不会。设备路径在您的浏览器中解码。只有节点中出现的固件 GUID 会向服务器查询,以显示其名称;分区 GUID 和其他数据都不会离开您的电脑。

efibootmgr 在文件路径之后显示的数据是什么意思?

这是启动项的可选数据,由固件传递给加载程序。例如,Windows 启动管理器会在其中保存对其 BCD 存储的引用。这些数据不属于设备路径;如果粘贴变量的二进制数据,本工具会单独显示它们。