You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启Secure Boot的Balena IoT系统内核拒绝加载自签名模块的原因咨询

开启Secure Boot的Balena IoT系统内核拒绝加载自签名模块的原因咨询

我有一台启用了安全启动的Intel NUC,运行的是Balena IoT系统——这个发行版不使用shim,只预装了自身的密钥(没有微软密钥)。为了测试,我想注册自己的MOK来加载自签名模块。我在正常的Debian机器上这样生成密钥:

openssl req -new -x509 -newkey rsa:2048 -subj "/CN=TLA gru MOK/" -keyout MOK.key -out MOK.crt -days 3650 -nodes -sha256
openssl x509 -in MOK.crt -out MOK.cer -outform DER

因为系统没有shim(发行版也不提供),所以我没法用mokutil。于是我重启NUC进入固件界面,把MOK.cer注册为额外密钥。再次重启后,我检查是否成功:

root@692ff14:~# grep gru /proc/keys
393652e5 I------     1 perm 1f010000     0     0 asymmetri TLA gru MOK: 48dab8f63ef41164535c15799cea88cb216f52df: X509.rsa 216f52df []

root@692ff14:~# dmesg | grep "TLA gru MOK"
[    2.851781] integrity: Loaded X.509 cert 'TLA gru MOK: 48dab8f63ef41164535c15799cea88cb216f52df'

看起来已经成功了。于是我从NUC上取了一个随机模块,用strip -g btrfs.ko移除原有签名,再用我的密钥签名(还是在Debian机器上操作):

/usr/lib/linux-kbuild-6.1/scripts/sign-file sha256 MOK/MOK.key MOK/MOK.cer btrfs.ko

我把签名后的模块传到NUC上,检查签名存在后尝试insmod加载:

root@692ff14:/tmp# strings btrfs.ko | tail -n 5
TLA gru MOK
>e],
6P({
#G\:q
~Module signature appended~
root@692ff14:/tmp# lsmod | grep btrfs
root@692ff14:/tmp# insmod ./btrfs.ko 
insmod: ERROR: could not insert module ./btrfs.ko: Key was rejected by service

这结果太让人失望了。为什么会失败?我是不是误解了MOK的概念?

非常感谢任何帮助。

备注:内容来源于stack exchange,提问作者Markus Grunwald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:08:09