![签名的内核模块不被接受](https://linux22.com/image/949936/%E7%AD%BE%E5%90%8D%E7%9A%84%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%E4%B8%8D%E8%A2%AB%E6%8E%A5%E5%8F%97.png)
我使用 MOK 签署了一个内核模块:
$ sudo kmodsign sha512 \
/var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
./ipu6-drivers/0.0.0/5.19.0-23-generic/x86_64/module/intel-ipu6.ko
并且 modinfo 报告它已签名:
...
name: intel_ipu6
vermagic: 5.19.0-23-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: ubuntu Secure Boot Module Signature key
sig_key: 63:07:BC:9E:44:51:90:19:4E:DF:D6:E3:22:C9:6A:04:A0:BC:D3:C6
sig_hashalgo: sha512
signature: 3B:29:E9:60:C5:DB:F8:A1:03:5A:2B:54:D1:8A:90:19:BB:0A:0A:46:
...
但是当我尝试使用 modprobe 加载模块时,我得到:
Loading of unsigned module is rejected
在我的内核日志中。
为什么内核和 modinfo 对所签名的模块有不同的看法?
该密钥也会显示在mokutil --list-enrolled
输出中。
答案1
这是因为我的内核模块位于两个不同的位置:
/var/lib/dkms/ipu6-drivers/0.0.0/5.19.0-23-generic/x86_64/module/intel-ipu6.ko
/lib/modules/5.19.0-23-generic/updates/dkms/intel-ipu6.ko
...而我只对其中一个进行了签名,而这个签名并不是 modprobe 找到的那个。