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

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

相关文章:

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

Linux系统下加载驱动模块出现如上错误提示的原因为:此驱动未经过签名。 方法一、关闭Secure Boot 如果是物理机,需要开机进入BIOS,找到“Secure Boot”的选项,然后关闭。 如果是虚拟机,可以打开虚拟设置&#xff0c…...

【C++ Primer Plus学习记录】字符函数库cctype

C从C语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的原型是在头文件cctype中定义的。 cctype中的字符函数 函数名称返回值isalnum()如果参数是字母或数字,该函数返…...

C# WebSocket简单使用

文章目录 前言Fleck调试工具初始化简单使用 前言 最近接到了一个需求,需要网页实现上位机的功能。那就对数据传输的实时性要求很高。那就只能用WebSocket了。这里简单说一下我的WebSocket如何搭建 Fleck C# WebSocket(Fleck) 客户端:html Winfrom Fleck Github官网…...

uni-app 一些实用的页面模板

时间倒计时 <!-- 时间倒计时 --> <template><view class"container"><view class"flex-row time-box"><view class"time-item">{{ laveTimeList[0] }}</view><text>天</text><view class&qu…...

STM32——震动传感器点亮LED灯

震动传感器简单介绍 若产品不震动&#xff0c;模块上的 DO 口输出高电平&#xff1b; 若产品震动&#xff0c;模块上的 DO 口输出低电平&#xff0c;D0-LED绿色指示灯亮。 震动传感器与STM32的接线 编程实现 需求&#xff1a;当震动传感器接收到震动信号时&#xff0c;使用中断…...

使用 Timm 库替换 YOLOv8 主干网络 | 1000+ 主干融合YOLOv8

文章目录 前言版本差异说明替换方法parse_moedl( ) 方法_predict_once( ) 方法修改 yaml ,加载主干论文引用timm 是一个包含最先进计算机视觉模型、层、工具、优化器、调度器、数据加载器、数据增强和训练/评估脚本的库。 该库内置了 700 多个预训练模型,并且设计灵活易用。…...

PHP中什么是闭包(Closure)?

在PHP中&#xff0c;闭包&#xff08;Closure&#xff09;是一种匿名函数&#xff0c;它可以作为变量传递、作为参数传递给其他函数&#xff0c;或者被作为函数的返回值。闭包可以在定义时捕获上下文中的变量&#xff0c;并在以后的执行中使用这些变量。闭包在处理回调函数、事…...

boost::graph学习

boost::graph API简单小结 boost::graph是boost为图算法提供的API&#xff0c;简单易用。 API说明 boost::add_vertex 创建一个顶点。 boost::add_edge 创建一条边。 boost::edges 获取所有的边。 boost::vertices 获取所有的顶点。 graph.operator[vertex_descriptor] 获…...

【C语言:动态内存管理】

文章目录 前言1.malloc2.free3.calloc4.realloc5.动态内存常见错误6.动态内存经典笔试题分析7.柔性数组8.C/C中的内存区域划分 前言 文章的标题是动态内存管理&#xff0c;那什么是动态内存管理&#xff1f;为什么有动态内存管理呢&#xff1f; 回顾一下以前学的知识&#xff…...

【Python基础】迭代器

文章目录 [toc]什么是迭代可迭代对象判断数据类型是否是可迭代类型 迭代器对可迭代对象进行迭代的本质获取可迭代对象的迭代器通过迭代器获取数据StopIteration异常 自定义迭代器__iter__()方法__next__()方法判断数据类型是否是可迭代类型自定义迭代器案例分离模式整合模式 fo…...

QVTK 可视化

#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>#include <vtkNew.h> // 智能指针 #include <QVTKOpenGLNativeWidget.h> #include <vtkCylinderSource.h> // 圆柱#include <vtkPolyDataMapper.h&g…...

【初阶C++】入门(超详解)

C入门 前言1. C关键字(C98)2. 命名空间2.1 命名空间定义2.2 命名空间使用2.3嵌套命名空间 3. C输入&输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.1 函数重载概念5.2 C支持函数重载的原理--名字修饰(name Mangling) 6. 引用6.1 引用概念6.2 引用特性6.3 …...

Java正则表达式的使用

标题&#xff1a;Java正则表达式的使用 介绍&#xff1a; 正则表达式是一种强大的文本匹配模式和搜索工具。在Java中&#xff0c;通过使用正则表达式&#xff0c;我们可以快速有效地进行字符串的匹配、查找和替换。本文将介绍Java正则表达式的基本使用方法&#xff0c;并提供相…...

Collecting Application Engine Performance Data 收集应用程序引擎性能数据

You can collect performance data of any specific SQL action of an Application Engine program to address any performance issue. 您可以收集应用程序引擎程序的任何特定SQL操作的性能数据&#xff0c;以解决任何性能问题。 You can collect performance data of the S…...

C Primer Plus阅读--章节16

C Primer Plus阅读–章节16 翻译程序的第一步 预处理之前&#xff0c;编译器必须对该程序进行一些翻译处理。 首先&#xff0c;编译器将源代码中出现的字符映射到源字符集。第二&#xff0c;编译器定位每个反斜杠后面跟着换行符的实力&#xff0c;并删除他们。物理行的合并。…...

直接插入排序与希尔排序

目录 前言 插入排序 直接插入排序 时空复杂度 直接插入排序的特性 希尔排序&#xff08;缩小增量排序&#xff09; 预排序 顺序排序 多组并排 小总结 直接插入排序 时空复杂度 希尔排序的特性 前言 字可能有点多&#xff0c;但是真的理解起来真的没那么难&#…...

敏捷:应对软件定义汽车时代的开发模式变革

随着软件定义汽车典型应用场景的落地&#xff0c;汽车从交通工具转向智能移动终端的趋势愈发明显。几十年前&#xff0c;一台好车的定义主要取决于高性能的底盘操稳与动力系统&#xff1b;几年前&#xff0c;一台好车的定义主要取决于智能化系统与智能交互能否满足终端用户的用…...

做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户

----查询每天刷题通过数最多的前二名用户id和刷题数 现有牛客刷题表questions_pass_record&#xff0c;请查询每天刷题通过数最多的前二名用户id和刷题数&#xff0c;输出按照日期升序排序&#xff0c;查询返回结果名称和顺序为&#xff1a; date|user_id|pass_count 表单创建…...

Vue3 用 Proxy API 替代 defineProperty API 的那些事

一、Object.defineProperty 定义&#xff1a;Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0c;或者修改一个对象的现有属性&#xff0c;并返回此对象 1.1 为什么能实现响应式 通过defineProperty 两个属性&#xff0c;get及set get 属性的 gett…...

成都工业学院Web技术基础(WEB)实验五:CSS3动画制作

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…...

CTF学习规划————1、如何入门CTF

CTF学习规划————1、如何入门CTF 无意中发现了一个巨牛巨牛的人工智能教程&#xff0c;忍不住分享一下给大家。教程不仅是零基础&#xff0c;通俗易懂&#xff0c;小白也能学&#xff0c;而且非常风趣幽默&#xff0c;还时不时有内涵段子&#xff0c;像看小说一样&#xff0…...

利用Taotoken的Token Plan套餐为团队项目节省大模型调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken的Token Plan套餐为团队项目节省大模型调用成本 对于中小型技术团队而言&#xff0c;在项目开发中引入大模型能力已成…...

Manus Open Claw开源技能库:构建可共享的机器人抓取解决方案

1. 项目概述&#xff1a;一个面向机器人抓取的开源技能库最近在机器人抓取领域&#xff0c;一个名为simpliolabs/manus-open-claw-skill-hunter-and-developer的项目引起了我的注意。乍一看这个标题&#xff0c;信息量不小&#xff0c;它融合了“开放爪具”、“技能猎人”和“开…...

JDK 17文本块实战:告别繁琐拼接,拥抱多行字符串新写法

1. 为什么我们需要文本块&#xff1f; 如果你写过Java代码&#xff0c;肯定遇到过这样的场景&#xff1a;需要处理多行字符串&#xff0c;比如HTML模板、SQL语句或者JSON数据。在JDK 17之前&#xff0c;我们只能通过字符串拼接的方式来实现&#xff0c;代码看起来就像是一团乱麻…...

‌古星图导航测试:波利尼西亚航海术的AI复现‌

跨越千年的航海智慧与现代测试的碰撞在科技高度发达的今天&#xff0c;GPS、北斗等卫星导航系统已成为我们出行、航海、航空等领域不可或缺的工具。然而&#xff0c;在数千年前&#xff0c;太平洋上的波利尼西亚人却凭借着对星空的深刻理解和独特的航海技术&#xff0c;在广袤无…...

基于Emissaries框架构建多AI智能体协作系统:从原理到实践

1. 项目概述&#xff1a;一个基于AI的智能体协作框架最近在开源社区里&#xff0c;一个名为muinyc/emissaries的项目引起了我的注意。乍一看这个名字&#xff0c;你可能会联想到“使者”或“特使”&#xff0c;这其实非常贴切地揭示了它的核心定位。简单来说&#xff0c;Emissa…...

探索DeepMosaics:当AI遇见图像隐私保护与修复的艺术

探索DeepMosaics&#xff1a;当AI遇见图像隐私保护与修复的艺术 【免费下载链接】DeepMosaics Automatically remove the mosaics in images and videos, or add mosaics to them. 项目地址: https://gitcode.com/gh_mirrors/de/DeepMosaics 在数字内容创作与分享日益普…...

C#上位机与三菱PLC通信实战:从零构建GX Works3仿真平台

1. 为什么需要搭建GX Works3仿真平台 第一次接触三菱PLC开发的朋友们&#xff0c;可能都有这样的困惑&#xff1a;手头没有实体PLC设备&#xff0c;怎么测试自己写的控制程序&#xff1f;买一台FX5U PLC动辄几千元&#xff0c;对个人开发者来说成本太高。这时候仿真平台就成了最…...

LLM函数调用工程化:从基础概念到智能体框架设计实战

1. 项目概述&#xff1a;从“函数调用”到智能体交互的范式演进最近在GitHub上看到一个名为“SKY-lv/function-calling”的项目&#xff0c;这个标题乍一看平平无奇&#xff0c;甚至有些过于直白。但作为一名长期混迹在AI应用开发一线的工程师&#xff0c;我立刻嗅到了一丝不寻…...

AzurLaneAutoScript:碧蓝航线玩家的终极自动刷图解决方案

AzurLaneAutoScript&#xff1a;碧蓝航线玩家的终极自动刷图解决方案 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为…...