Uefi

/sys/firmware/efi/efivars/ 中的 efi 變數條目

  • January 18, 2018

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

我看到它們是小的二進製文件。是這些地址和地址的內容嗎?例如 /sys/firmware/efi/efivars/BootFromUSB-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9 以十六進制顯示

000000000: 0700 0000 00                             ....

這是什麼意思?

這些是 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 變數。執行此操作時要小心,因為覆蓋某些變數可能會破壞您的系統。

引用自:https://unix.stackexchange.com/questions/414799