Linux下驱动文件make编译后make load显示Key was rejected by service(需要签名)解决方法
1、查看签名情况
使用语句hexdump -C xxx.ko | tail
以查询.ko驱动文件的签名状况
只有在驱动签名中出现~Module signature appended~
的字样,才说明该驱动已经具有了正确的签名,否则则需要配置签名
如
0007b620 00 00 00 00 00 00 00 01 ad 7e 4d 6f 64 75 6c 65 |.........~Module|
0007b630 20 73 69 67 6e 61 74 75 72 65 20 61 70 70 65 6e | signature appen|
0007b640 64 65 64 7e 0a |ded~.|
0007b645
2、配置驱动签名
驱动签名配置依赖mokutil和shim-signed
进行安装
sudo apt install mokutil
sudo apt install shim-signed
安装好这两个依赖后就可以生成一个新的签名证书
sudo update-secureboot-policy --new-key
生成的证书(MOK.der)和私钥(MOK.priv)位于 /var/lib/shim-signed/mok/ 目录下,将证书进行导入
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
sudo mokutil --import /var/lib/shim-signed/mok/MOK.der
导入完证书后我们要更改安全设置
Perform MOK management
中选择Enroll MOK
3、将签名写入驱动
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der xxx.ko
再次使用hexdump -C xxx.ko | tail
查看驱动签名情况,看看是否有~Module signature appended~
语句
再次sudo make load
如果显示insmod xxx.ko
则载入成功,问题解决。
本文来自博客园,作者:不想要名字,转载请注明原文链接:https://www.cnblogs.com/xuwithbean/articles/17767960.html