Linux系统解决“Key was rejected by service”

Linux系统下加载驱动模块出现如上错误提示的原因为:此驱动未经过签名。

方法一、关闭Secure Boot

如果是物理机,需要开机进入BIOS,找到“Secure Boot”的选项,然后关闭。

如果是虚拟机,可以打开虚拟设置,在如下选项中选择“”,如下所示:

方法二、构建签名环境

1、安装软件包mokuli 和shim-signed

sudo apt install mokutil
sudo apt install shim-signed
sudo update-secureboot-policy --new-key

2、创建一个公共/私有RSA密钥对来对内核模块进行签名。以下示例将密钥对存储在/root/module-signing/目录中

sudo -i
mkdir /root/module-signing
cd /root/module-signing
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
chmod 600 MOK.priv 

3、使用mokutil,一种导入或删除机器所有者密钥(MOK)的工具,导入公钥,然后在机器重新启动时注册它。此步骤中的密码需要记住,系统重启的时候需要输入。(删除公钥也需要此密码)

mokutil --import /root/module-signing/MOK.der
input password:
input password again:

注:如果执行此步骤遇到错误:EFI variables are not supported on this system,是因为此机器没有开启UEFI,如是物理机直接修改BIOS,如果是VMware虚拟机,则需要在虚拟机设置里开启。如下所示:

4、重新启动机器。当引导程序启动时,会看到一个屏幕,要求按下按钮进入MOK管理器EFI实用程序。请注意,在此步骤中,任何外部外部键盘都无法工作。在第一个菜单中选择Enroll MOK,然后继续,然后选择Yes以注册密钥,并重新输入步骤3中创建的密码。然后选择“确定”继续系统引导。

5、系统重启后,就可以使用公钥对目标驱动模块签名了,这里以USB转串口芯片CH340的Linux驱动模块ch341.ko为例,签名前的驱动模块信息:

使用如下命令对ch341.ko驱动文件签名:

1. sudo -i
2. /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /root/module-signing/MOK.priv /root/module-signing/MOK.der ch341.ko 

查看签名后的驱动模块信息:

当驱动模块信息中包含“Module signature appended”信息,则说明驱动已经签名成功了。此时再加载驱动就不会提示:“Key was rejected by service”。

注:如未来内核更新将需要再次对更新后的内核进行签名,因此可以将签名命令放入脚本中,该脚本可以在以后根据需要运行。

参考:virtualbox - How to sign a kernel module Ubuntu 18.04 - Super User

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/242031.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物联网与低代码:构建智能化的连接世界

物联网(IoT)是指通过互联网将各种物理设备、传感器、车辆等连接起来,从而实现数据交互和智能化控制的技术领域。而低代码开发平台则是一种快速构建应用程序的方法,通过简化开发过程,使开发人员能够更迅速地实现创意和创…

Nginx【通俗易懂】《中篇》

目录 1.Url重写rewrite 2.防盗链 3.静态资源压缩 4.跨域问题 1.Url重写rewrite 🤩🤩🤩 1.1.rewrite书写格式 rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到rep…

MS913/914 25-100MHz 10/12 位用于平面显示器链路Ⅲ的具有直流平衡编码和双向控制通道的串化器和解串器

MS913/MS914 芯片组是 25MHz~100MHz 10 位/12 位 FPD Link III SER/DES(串化器/解串器),它提供高速 FPD-Link III 接口和高速正向通路以及用于差分对上数据发送的双向 控制通路。广泛应用于车载摄像,医疗设备,管道探测等领 域。 主要特点…

【强化学习-读书笔记】有限马尔可夫决策过程

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. BartoMDP 是强化学习问题在数学上的理想化形式,因为在这个框架下我们可以进行精确的理论说明 智能体与环境的交互 智能体与环境交互,会得到轨迹&…

你真的了解Shiro框架吗?

关注公众号回复20231110获取最新网络安全以及内网渗透等资料。 文章目录 关注公众号回复20231110获取最新网络安全以及内网渗透等资料。Shiro的核心架构Shiro中的认证认证shiro中认证的关键对象 认证流程调试认证流程Shiro的加密过程Shiro中的解密过程总结 Shiro的核心架构 Shi…

ResourceSat2卫星数据下载

印度5米遥感卫星数据开放下载 简介 印度国家遥感中心( NRSC )于近期开放了ResourceSat2卫星的LISS4传感器的数据下载权限,最高分辨率为5米。此次可供下载的有3个波段(近红外/红/绿),下载附带3个GeoTIFF和一个元数据文件&#xf…

计算4*4*4空间中2点结构的分布

不考虑两点距离的情况下,3维空间中的两点最多只有7种位置关系。3条边,3条面对角线,1条体对角线。现在向4*4*4的3维空间中随机的扔2个石子,比较7种结构的占比。 得到表格为 1 96 0.0476 2 96 0.0476 3 288 0.1429 4 288 …

Linux 多版本php ,切换默认版本

1.查看当前默认php版本 ls -l /usr/bin/php 后面的 /usr/local/php/bin/php 表示默认版本 2.查看现在安装了多少版本的php ,可以用 find / -name php 然后切换到到 7.3 版本上 使用命令:ln -sf /usr/local/php7.3/bin/php /usr/bin/php 如果没…

玩转Docker(一):容器生态系统

文章目录 一、核心技术二、平台技术三、支持技术 本文结构如下: 一、核心技术 容器核心技术是指能够让Container在host上运行起来的那些技术。 (1)容器规范 容器不光是Docker,还有其他容器,比如CoreOS的rkt。为了保证…

「Verilog学习笔记」可置位计数器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,input set,input [3:0] set_num,output reg [3:0]number,output reg zero);reg [3:0] cnt ; always (posed…

AR眼镜_AR智能眼镜整机硬件方案定制

AR眼镜的主要模块包括显示、光学模组、传感器和摄像头、主板、音频和网络连接等。其中,光学显示、主板处理器是决定AR眼镜成本的关键,光机占整体AR眼镜成本43%、处理器占整体成本31%。 AR眼镜的主板设计难点在于尺寸要足够小且要处理好散热问题。主板上的…

VideoComposer:Compositional video synthesis with motion controllability

1.Introduction composer提出了一种一组合性为中心的新的生成范式,能够通过各种输入条件组合生成图像,但是composer主要在空间维度上考虑多级条件。视频复杂的时间结构,其在保持不同帧之间的时间连续性的同时展现出大幅度的时间动态变化。Vi…

【syncfusion】SfGridSplitter 踩坑

SfGridSplitter 是 syncfusion提供的分割线&#xff0c;配合Grid使用可以改变布局大小&#xff1a; <Grid Grid.Row"1"><Grid.ColumnDefinitions><ColumnDefinition Width"1.4*"/><ColumnDefinition MinWidth"10"/><…

Fine-Grained Semantically Aligned Vision-Language Pre-Training细粒度语义对齐的视觉语言预训练

abstract 大规模的视觉语言预训练在广泛的下游任务中显示出令人印象深刻的进展。现有方法主要通过图像和文本的全局表示的相似性或对图像和文本特征的高级跨模态关注来模拟跨模态对齐。然而&#xff0c;他们未能明确学习视觉区域和文本短语之间的细粒度语义对齐&#xff0c;因为…

Linux 中的 container_of 原理

源码基于&#xff1a;Linux 5.10 0.前言 container_of() 这个宏函数在Linux 内核中使用的频率还是很多的。网上关于 container_of 使用的优秀文章也很多&#xff0c;之所以笔者也写一篇&#xff0c;一是想更新下最新代码中的使用&#xff0c;二是融入些自己的拙见&#xff0c;…

排序算法---希尔排序

1. 基本思想 希尔排序是插入排序的一种&#xff0c;它与直接插入排序不同的是&#xff0c;它会优先比较距离较远的元素&#xff0c;因此希尔排序又被称为“缩小增量排序”。希尔排序的实现思路是&#xff1a;先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序&…

VLAN协议与单臂路由

文章目录 VLAN协议与单臂路由一、VLAN的概念及优势1、分割广播域2、VLAN的优势3、VLAN数据帧 二、VLAN的种类1、静态VLAN2、动态VLAN3、VLAN划分方式 三、静态VLAN的配置1、VLAN的范围2、静态VLAN的配置2.1 配置静态VLAN的步骤2.2 vlan三种端口类型举例&#xff1a;配置静态VLA…

代码随想录算法训练营第四十四天 _ 动态规划_完全背包问题、518.零钱兑换II、377.组合总和IV。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 完全背包问题 – 二维dp数组 动…

nvm 的使用 nvm 可以快速的切换 nodejs 的版本

nvm 是什么&#xff1f; nvm 是一个 node 的版本管理工具&#xff0c;可以简单操作 node 版本的切换、安装、查看。。。等等&#xff0c;与 npm 不同的是&#xff0c;npm 是依赖包的管理工具。 nvm 下载安装 安装之前需要先把 自己电脑上边的 node 给卸载了!!!! 很重要 下载地…

基于Java SSM框架实现个性化影片推荐系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现个性化影片推荐系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;个性化影片推荐系统当然也不能排除在外。个性化影片推荐系统是以实际运用…