/sys/firmware/efi/efivars/ 中的 efi 变量条目

/sys/firmware/efi/efivars/ 中的 efi 变量条目

/sys/firmware/efi/efivars/ 中有哪些条目?

我看到它们是小的二进制文件。这些是地址和地址的内容吗?例如十六进制显示的 /sys/firmware/efi/efivars/BootFromUSB-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9

000000000: 0700 0000 00                             ....

这是什么意思?

答案1

这些是 efivars 文件系统中的文件,可让您访问 UEFI 变量。对于每个 UEFI 变量,在/sys/firmware/efi/efivars/.

您的示例BootFromUSB-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9具有 NameBootFromUSB和 VendorGuid ec87d643-eba4-4bb5-a1e5-3f3e36b20da9。 GUID 确保具有相同名称但来自不同供应商的变量不会相互干扰。 UEFI 规范中定义了一些变量,但这一变量没有定义。

内容的前四个字节是属性,UEFI规范中也定义了这些属性。最重要的是

#define EFI_VARIABLE_NON_VOLATILE       0x00000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
#define EFI_VARIABLE_RUNTIME_ACCESS     0x00000004

所以你的变量是非易失性的,可以在启动和运行时访问。

任何剩余字节都是变量的值。在这种情况下,有一个字节的值为 0。

您可以使用 UEFI 变量来影响引导过程。例如,当标准固件无法运行时,我们使用这样的变量将下次启动切换到替代恢复固件。

请注意,efivars文件系统允许您通过写入文件来写入 EFI 变量。执行此操作时要小心,因为覆盖某些变量可能会破坏您的系统。

答案2

EFIvar 是 UEFI 规范的一部分,其中一些变量名称具有特殊含义,但大多数变量名称可以是 UEFI 固件开发人员决定的任何名称。

相关内容