Linux 5.19.0版本ubuntu在加载自定义驱动程序时报错:Key was rejected by service
原因为自定义驱动模块没有通过内核签名验证,解决方法如下:
1、生成自己的密钥对,用于给驱动签名
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=<Your Name>/"
证书名字<Your Name>随便写
2、将 `MOK.der` 证书导入到系统中
sudo mokutil --import MOK.der
这里会提示输入口令,自己随便写
3、重启计算机,蓝屏,按任意键,进入MOK Management
选择"Enroll MOK"
选择"View key 0"
选择"continue"
选择"yes"
输入刚才的口令
选择"reboot"
完成注册
4、给驱动添加证书
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.priv MOK.der <driver_module_path>
找到刚才的私钥MOK.priv和MOK.der证书,<driver_module_path>写驱动名字
5、签名完成就可以正常加载了
6、这个方法需要系统支持UEFI和Secure Boot,需要安装 shim-signed 和 mokutil 软件包