当我运行efibootmgr
命令时:
efibootmgr --create --disk /dev/sdb --part 1 --loader /EFI/syslinux/syslinux.efi --label "Syslinux" --unicode
我收到此错误:
EFI variables are not supported on this system.
当我尝试加载模块时efivarfs
,出现以下错误:
modprobe efivarfs
modprobe: ERROR: could not insert 'efivarfs': No such device
我正在使用自编译内核,并且我确实有efivarfs
支持:
CONFIG_EFIVAR_FS=m
那么为什么我无法加载模块呢?
我在 Debian 12 上使用内核 6.1.45
更新:
我刚刚在 Debian Live-CD 启动系统上进行了测试,得到了同样的错误:
modprobe efivarfs
modprobe: ERROR: could not insert 'efivarfs': No such device
答案1
如果您在传统 BIOS 兼容模式下启动,则固件无法使 UEFI 运行时服务可供运行的操作系统使用,因此无法操作 UEFI 变量。在这种情况下,Linux 内核根本不会显示/sys/firmware/efi/
目录,因此efivarfs
无法安装,因为内核模块无法与固件的 UEFI 运行时服务进行通信。
大多数现代安装和 Live-CD 都可以在传统模式和 UEFI 模式下启动,因此您必须非常小心地从外部媒体启动在 UEFI 模式下如果您的系统启用了 BIOS 兼容性支持模块 (CSM) 模块。
系统固件的编写者可以决定系统是喜欢传统引导还是 UEFI 式引导,或者在 BIOS 设置中选择它。不幸的是,这些设置的用户界面并未标准化——每个供应商的做法可能有所不同。
一般来说,当开始在新计算机上安装第一个操作系统时,您应该决定是使用 UEFI 还是旧版 BIOS,如果可能的话,调整 BIOS 设置以仅允许该启动模式。完全排除“错误”的启动模式,更容易避免错误。