方法 1: 禁用 Secure Boot
-
进入 BIOS/UEFI 设置
- 重启电脑。
- 在开机时按下特定键(如
F2
,DEL
, 或ESC
,具体按键因设备而异)进入 BIOS/UEFI 设置。
-
查找 Secure Boot 设置
- 在 BIOS/UEFI 设置中,通常在 Security 或 Boot 菜单中可以找到 Secure Boot 选项。
-
禁用 Secure Boot
- 将 Secure Boot 设置为 Disabled 或 Off。
-
保存并退出
- 保存更改并退出 BIOS 设置(通常按
F10
)。
- 保存更改并退出 BIOS 设置(通常按
重启后,你应该能够使用未签名的内核启动。
方法 2: 为内核签名
如果你不想禁用 Secure Boot,可以手动为内核签名。以下是步骤:
a. 生成密钥对
-
创建一个新的签名密钥对:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=My Kernel Signing Key/"
MOK.priv
是私钥文件。MOK.der
是公钥文件,用于注册到系统。
-
添加权限保护密钥文件:
chmod 600 MOK.priv
b. 签名内核映像
假设你编译的内核映像位于 /boot/vmlinuz-<version>
,运行以下命令进行签名:
sudo sbsign --key MOK.priv --cert MOK.der --output /boot/vmlinuz-<version>.signed /boot/vmlinuz-<version>
此命令会生成一个签名的内核映像。
c. 注册签名密钥
-
注册密钥到系统的 MOK(Machine Owner Key)数据库:
sudo mokutil --import MOK.der
-
系统会要求设置一个密码,这个密码稍后会在系统重启时使用。
-
重启系统,按提示进入 MOK 管理界面并完成密钥注册:
- 选择 Enroll MOK。
- 输入之前设置的密码。
d. 使用签名内核启动
重启后,你可以正常使用签名的内核映像。
方法 3: 编译时关闭内核签名检查
如果你正在编译自己的内核,可以禁用签名检查。在内核配置中,执行以下步骤:
-
进入内核源码目录:
cd linux-source-*
-
打开配置菜单:
make menuconfig
-
查找并禁用以下选项:
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
将它们设为
n
或完全去掉。 -
保存配置并重新编译内核。
重新编译的内核不会强制要求模块签名验证,从而跳过证书检查。
总结
- 如果你对安全性要求不高,建议直接禁用 Secure Boot(方法 1)。
- 如果希望保持 Secure Boot 的启用状态,可以选择签名自己的内核(方法 2)。
- 编译内核时禁用签名验证(方法 3)适用于不依赖 Secure Boot 环境的场景。
根据你的实际需求选择适合的方法即可解决问题。