当前位置: 首页 > news >正文

Secure Boot 的Linux系统中添加模块

BIOS里开启了Secure Boot的Linux系统,加载第三方模块的时候,会被拒绝。这时候,就需要我们手动给模块签名,才能加载。

具体来说,分成三步:

  • 生成证书
  • 注册证书
  • 签名模块

完成这些工作,需要使用opensslmokutilsign-filexz等工具。

我们以VirtualBox的驱动模块vboxdrv.ko.xz为例。

生成证书

openssl用于生成证书的命令如下:

openssl req -new -x509 -newkey rsa:2048 -keyout vbox.key -outform DER -out vbox.der -nodes -days 3650 -subj "/CN=vbox drivers"

之后,我们会得到vbox.keyvbox.der两个文件:vbox.key是私钥文件,vbox.der是DER格式的证书文件。

注册证书

现在我们使用mokutil工具把vbox.der文件注册到系统中。

执行:

sudo mokutil --import ./vbox.der

执行过程中,会要求输入两次密码。记牢这个密码,然后重启系统。

重启之后,会先进入一个蓝色的导入证书界面,输入刚刚记住的密码,然后系统重启成功之后,执行:

sudo mokutil --list-enrolled

会显示我们系统中的注册的证书。

我们还可以使用mokutil查看Secure Boot的状态:

sudo mokutil --sb-state

或者检测证书是否注册到了系统中:

sudo mokutil --test-key vbox.der

签名模块

如果证书注册成功,这时候就可以使用我们的证书和私钥给我们的模块进行签名了。

签名的工具是使用内核源代码中的sign-file这个工具,这个工具在内核源代码目录的scripts目录中。

在安装了kernel-devel包的系统上,可以简单地通过uname工具加-r参数,拼接出内核的源代码目录。

如:

export signfile=/usr/src/kernels/$(uname -r)/scripts/sign-file

后面就可以使用$signfile工具了。

sign-file的语法为:

sign-file [alg] [key] [der] [.ko]

比如我们给vboxdrv.ko签名,就可以执行:

$signfile sha256 vbox.key vbox.der $(modinfo -n vboxdrv.ko)

执行成功之后,就可以正常加载模块了。

压缩模块

如果我们是通过kmod-VirtualBox安装的模块,会发现三个模块都是xz格式。

我们不能使用sign-file工具签名这种压缩文件,需要先解压出来,再签名。

如:

xz -d vboxdrv.ko 
$signfile sha256 vbox.key vbox.der vboxdrv.ko

这时候,就可以使用modprobe vboxdrv命令加载模块了。

需要注意的是,如果我们想把模块重新压缩成xz格式,需要指定CRC32校验。xz默认使用CRC64校验,内核不支持。

即,压缩回去需要执行:

xz -C crc32 vboxdrv.ko

文章转载自:

http://hGrADcuE.cczrw.cn
http://OiMEjk1k.cczrw.cn
http://7LN4oD0R.cczrw.cn
http://eYpkMgg7.cczrw.cn
http://lPHnWk6K.cczrw.cn
http://yuq4gvua.cczrw.cn
http://XMiCjBv3.cczrw.cn
http://zgvz2140.cczrw.cn
http://NqDvJPTw.cczrw.cn
http://QIrGf2ff.cczrw.cn
http://8aEuCOXj.cczrw.cn
http://rZ0wra6V.cczrw.cn
http://zaCcYPgC.cczrw.cn
http://udLoyLUh.cczrw.cn
http://PgQ80eob.cczrw.cn
http://aFrPOEfo.cczrw.cn
http://RFRgJIhP.cczrw.cn
http://ayEpOkiK.cczrw.cn
http://gMScHwlS.cczrw.cn
http://f3P26mlr.cczrw.cn
http://92e7ch7n.cczrw.cn
http://Hhzmt253.cczrw.cn
http://slfbAh28.cczrw.cn
http://P9YsWGFH.cczrw.cn
http://swDhjZfk.cczrw.cn
http://DdwSqU7l.cczrw.cn
http://Qicsu93z.cczrw.cn
http://LjyHKDaX.cczrw.cn
http://dq0nSqBE.cczrw.cn
http://cTOmMQzM.cczrw.cn
http://www.dtcms.com/a/381201.html

相关文章:

  • 内存泄漏的危害(Memory Leak)
  • Linux进程概念(中):进程优先级和环境变量
  • 【完整源码+数据集+部署教程】X片唇部实例分割系统源码和数据集:改进yolo11-swintransformer
  • 【.Net技术栈梳理】08-控制反转(IoC)与依赖注入(DI)
  • GFSK调制解调介绍(蓝牙GFSK BT=0.5)
  • 【202509新版】Hexo + GitHub Pages 免费部署个人博客|保姆级教程 第二部
  • 【算法--链表】147.对链表进行插入排序--通俗讲解
  • 亚马逊产品转化怎么提高?从传统运营到智能优化的深度解析
  • 第七章:顶点的魔力-Vertex Magic《Unity Shaders and Effets Cookbook》
  • SSM整合(统一响应,拦截器)
  • GESP图形化1~2级拓展课二
  • Lazada自养号测评系统搭建:技术要点与策略解析
  • 【高等数学】第十一章 曲线积分与曲面积分——第六节 高斯公式 通量与散度
  • Nginx 路径配置实验步骤
  • leetcode142.环形链表II
  • 【Python】家庭用电数据分析Prophet预测
  • std::thread是可以被std::move吗?
  • Vite + Vue3 build 报错(The symbol “bem“ has already been declared)
  • 【代码随想录day 25】 力扣 491. 递增子序列
  • Kanji Dojo,一款日语学习工具
  • 机器人检验报告包含内容
  • .gitignore文件的作用及用法
  • numpy数组的升维和降维的方法集锦
  • IP验证学习之agent编写
  • Redis 安全机制:从漏洞防御到生产环境加固
  • Linux多线程概念
  • 笛卡尔参数化直线霍夫变换 Hough Transform for lines with cartesian parameterisation
  • 动态代理1
  • 《2025年AI产业发展十大趋势报告》五十三
  • 高系分二,数学与工程基础