efivarfs - 一个 (U)EFI 变量文件系统¶
创建 efivarfs 文件系统的目的是为了解决使用 sysfs 中的条目来维护 EFI 变量的缺点。旧的 sysfs EFI 变量代码仅支持最大 1024 字节的变量。此限制存在于 EFI 规范的 0.99 版本中,但在任何完整版本发布之前已删除。由于变量现在可以大于单个页面,因此 sysfs 不是此目的的最佳接口。
可以使用 efivarfs 文件系统创建、删除和修改变量。
efivarfs 通常像这样挂载
mount -t efivarfs none /sys/firmware/efi/efivars
由于存在大量固件错误,其中删除非标准 UEFI 变量会导致系统固件无法 POST,因此非标准化的已知 UEFI 变量的 efivarfs 文件被创建为不可变文件。 这不会阻止删除 - “chattr -i” 会起作用 - 但它确实防止了意外完成此类失败。
警告
当显示/sys/firmware/efi/efivars 中 UEFI 变量的内容时,例如使用“hexdump”,请注意输出的前 4 个字节代表 UEFI 变量属性,以小端格式表示。
实际上,每个 efivar 的输出由以下部分组成:
4_bytes_of_attributes + efivar_data
另请参阅