/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 固件开发人员决定的任何名称。