ubuntu20.04
的.ko
驱动文件签名
1. ch343
的ubuntu
驱动安装出现 Operation not permitted
具体的报错信息为
insmod: ERROR: could not insert module ch343.ko: Operation not permitted
经查阅发现该问题是由ubuntu
的 secure boot
功能导致的, **即在安全启动模式下,是不能加载未签名或由未注册的密钥签名的内核模块的。**因此可选择关闭系统的该功能来完成安装,但这显然不符合ubuntu
的安全检验。
本文参考issue回答中的设置驱动的系统签名一方案来解决该问题。
2. 设置 .ko
文件的签名
2.1 生成公钥与私钥
通过ubuntu
内置的openssl
协议生成公钥your_driver.der
与私钥your_driver.key
文件
openssl req -new -x509 -newkey rsa:2048 -keyout your_driver.key -outform DER -out your_driver.der -nodes -days 36500 -subj "/CN=your_driver_name drivers"
2.2 将公钥导入MOK
证书列表
通过 ubuntu
内置的 mokutil
将公钥文件导入MOK
列表
sudo mokutil --import ./your_driver.der
-
执行后会提示输入两次密码,无报错信息后重启系统,一定要是重启,注销操作是无用的。
-
重启系统之后会进入蓝屏出现
-
按照提示注册
MOK
证书 -
选中
CN=your_driver_name drivers
的公钥进行注册 -
输入密码
-
完成后 选择
reboot
重启进入grep
界面 -
进入
ubuntu
系统 -
验证公钥是否注册成功,执行
mokutil --list-enrolled
查看信息中是否存在
CN=your_driver_name drivers
的key
,存在则注册成功,反之可重复2.2操作(大概也许)。
2.3 给.ko
文件签名
通过 ubuntu
系统内核的 sign-file
来注册签名
需要在.ko
文件目录下,或指定相应的 .key
、.der
、.ko
文件路径
/usr/src/linux-headers-5.x.x-xx-generic/scripts/sign-file sha256 your_driver.key your_driver.der your_driver.ko
其中linux-headers-5.x.x-xx-generic
是自己ubuntu
系统的内核版本,可通过该指令查看
uname -r
检查是否签名成功
hexdump -C your_driver.ko | tail
此时打印一些16进制数,发现有 module signature app ended~
则表示签名成功。
2.4 加载与安装 .ko
文件
在 .ko
文件目录下
通过
sudo make load
加载驱动
通过
sudo make install
安装驱动
参考
[1]. https://github.com/WCHSoftGroup/ch343ser_linux/issues/9