01. 驱动加载失败:Secure Boot 冲突
现象描述
执行 modprobe 加载驱动时,系统提示:
modprobe: ERROR: could not insert 'kcan': Key was rejected by service根本原因
系统启用了 UEFI Secure Boot。由于驱动未经过当前系统的受信任密钥签名,内核安全策略拒绝加载该驱动。
解决方案
方法一:禁用 Secure Boot(推荐)
- 重启电脑进入 BIOS/UEFI 设置界面
- 导航至 Security 或 Boot 选项卡
- 找到 Secure Boot 选项并将其设置为 Disabled
- 保存并退出,重新进入系统加载驱动
方法二:使用 DKMS 重新签名驱动
- 安装签名工具:
bash
sudo apt install mokutil- 生成签名密钥:
bash
sudo openssl req -new -x509 -newkey rsa:2048 -nodes -out MOK.der -keyout MOK.key -days 36500- 注册密钥到系统:
bash
sudo mokutil --import MOK.der- 重启并按提示完成密钥注册
- 重新签名驱动模块
验证方法
驱动加载成功后,执行以下命令应该能看到 kcan 相关的驱动模块:
bash
lsmod | grep kcan注意事项
- 禁用 Secure Boot 会降低系统安全性,请根据实际环境选择合适方案
- 生产环境建议使用方案二进行驱动签名
- 某些企业系统可能需要管理员权限进行 BIOS 设置