DKMS介绍

文章目录

  • 一、安装DKMS
  • 二、DKMS使用示例
    • 1. 源码准备
    • 2. 增加dkms.conf
    • 3. 添加模块
    • 4. 编译模块
    • 5. 安装模块
  • 三、基于DKMS的deb安装包制作

在这里插入图片描述
在这里插入图片描述


Dynamic Kernel Module Support(DKMS)是一个用于动态管理内核模块的框架,由DELL创建的项目,它可以帮我们维护内核外的这些驱动程序,在内核版本变动之后可以自动重新生成新的模块。

一、安装DKMS

sudo apt-get install dkms
安装成功后可以用dkms -V命令查询当前dkms版本

二、DKMS使用示例

1. 源码准备

首先要准备好可以在系统下编译通过的驱动代码,包含源文件和Makefile文件,可以用make命令生成ko文件,并通过modprobe命令正常加载。确保通过dmesg和测试无误后,可以进行下一步DKMS驱动的制做。

把驱动源码拷贝到/usr/src目录下命名格式:包名-版本号
示例:

deepin-anything-0.0 hello-1.0 realtek-wifi-1.0.7

2. 增加dkms.conf

示例:

PACKAGE_VERSION=“1.0”
PACKAGE_NAME=“hello”
MAKE[0]=“make -C k e r n e l s o u r c e d i r K B U I L D E X T M O D = {kernel_source_dir} KBUILD_EXTMOD= kernelsourcedirKBUILDEXTMOD={dkms_tree}/ P A C K A G E N A M E / {PACKAGE_NAME}/ PACKAGENAME/{PACKAGE_VERSION}/build modules”
CLEAN=“make -C k e r n e l s o u r c e d i r K B U I L D E X T M O D = {kernel_source_dir} KBUILD_EXTMOD= kernelsourcedirKBUILDEXTMOD={dkms_tree}/ P A C K A G E N A M E / {PACKAGE_NAME}/ PACKAGENAME/{PACKAGE_VERSION}/build clean”

DEST_MODULE_LOCATION[0]=“/updates/”
BUILT_MODULE_NAME[0]=“hello”

AUTOINSTALL=“yes”

3. 添加模块

sudo dkms add -m hello -v 1.0 或者
sudo dkms add hello/1.0

通过 dkms status 查询可以看到驱动模块已添加。

uos@uos-PC:/usr/src/hello-1.0$ dkms status
hello/1.0: added

4. 编译模块

sudo dkms build hello/1.0

编译成功后dkms status查询可以看到模块处于built状态。

uos@uos-PC:/usr/src/hello-1.0$ dkms status

hello/1.0, 6.1.32-amd64-desktop-hwe, x86_64: built

5. 安装模块

sudo dkms install hello/1.0

安装成功后dkms status查询可以看到模块处于installed状态。

uos@uos-PC:/usr/src/hello-1.0$ dkms status

hello/1.0, 6.1.32-amd64-desktop-hwe, x86_64: installed

三、基于DKMS的deb安装包制作

为了方便用户的使用,基于DKMS来制作deb安装包是一个很好的选择。

安装所需工具
sudo apt-get install dh-make libdigest-md5-file-perl

模块必须处于built状态!dkms命令中集成了对应发行版本的打包参数 mkdeb/mdrpm,所以只需要执行如下命令

sudo dkms mkdeb hello/1.0
可以从 /var/lib/dkms/{module}/{version}/deb 目录下获取deb包。

UOS在dkms源码的基础上增加debian目录的方式,最终通过dpkg-buildpackage -us -uc将源文件打包成deb包。
目录格式如下:

├── debian

│ ├── changelog

│ ├── compat

│ ├── control

│ ├── copyright

│ ├── install

│ ├── postinst

│ ├── prerm

│ ├── rules

│ └── source

│ └── format

└── usr

└── src└── hello-1.0├── 4.19.0-amd64-desktop├── ...

并且UOS对dkms的重新编译做了优化,可以在先判断驱动文档的KABI兼容性,决定内核升级的时候是否进行重新编译。


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】498.对角线遍历

无论何时何地,我都认为对于一道编程题,思考解法的时间用于是实际动手解决问题的2倍!如果敲键盘编码需要5min,那么思考解法的过程至少就需要10分钟。 1. 题目 2. 思想 其实这就是一道模拟题,难度中等。做这种题的关键就…

用 NotePad++ 运行 Java 程序

安装包 网盘链接 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装完成: 配置编码 用 NotePad 写 Java 程序时, 需要设置编码. 在 设置, 首选项, 新建 中进行设置, 可以对每一个新建的文件起作用. 之前写的文件不起作用. 在文件名处右键, 可以快速打开 CMD 窗口, 且路…

使用 libssh2_session_set_timeout 设置 SSH 会话超时时间

使用 libssh2_session_set_timeout 设置 SSH 会话超时时间 函数原型参数说明返回值示例代码注意事项libssh2_session_set_timeout 是 libssh2 库中的一个函数,用于设置 SSH 会话的超时时间。这对于防止网络延迟或连接中断导致的长时间挂起非常有用。 函数原型 int libssh2_se…

如何用注册机破解Reflexive游戏

相信有许多小朋友(像我以前一样)已经迫不及待地准备准备对浩瀚的、像三星堆一般的Reflexive游戏合集进行考古挖掘工作了。不巧的是,打开游戏之后发现常常提示要付费才能解锁完整版。 一、下载注册机与破解文件 首先,在我的永硕网…

红外跟随避障模块详解

在智能车、机器人和自动化等领域避障技术是确保安全和高效运行的关键。红外避障模块作为一种常见的避障解决方案,因其非接触、响应速度快和抗干扰能力强等优点而备受青睐。本文将详细介绍红外避障模块的特点、工作原理、以及应用案例,帮助您更好地了解这…

【0x3D】HCI_Remote_Host_Supported_Features_Notification事件详解

目录 一、事件概述 二、事件格式及参数说明 2.1. HCI_Remote_Host_Supported_Features_Notification事件格式 2.2. BD_ADDR 2.3. Remote_Host_Supported_Features 三、事件作用 3.1. 设备特性沟通与理解 3.2. 功能协商与性能优化 3.3. 设备管理与配置更新 四、应用场…

开发中使用UML的流程_08 PIM-4:定义操作及方法

目录 1、序列图概述 2、序列图调用方式 3、创建消息与销毁消息 4、几项建议 1、序列图概述 在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计…

Unity 设计模式-策略模式(Strategy Pattern)详解

策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进…

空间异质性数据分析不再复杂:地理加权回归分析、主成分分析、判别分析、分位数回归分析、线性回归等

目录 专题一 地理加权回归下的描述性统计学 专题二 地理加权主成分分析 专题三 地理加权回归 专题四 高级回归与回归之外 更多了解 在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能…

【spring mvc】全局处理请求体和响应体

目录 说明实现效果逻辑图 实现步骤创建公共处理的请求和响应的类api接口测试前端请求响应结果 扩展Response响应格式实体ResponseCode 响应状态码RSA工具类 RequestBodyAdvice 介绍使用场景 ResponseBodyAdvice 介绍使用场景 说明 由于项目中需要进行加密传输数据提高项目安全…

【计算机网络】实验8:聚合了不存在的网络导致的路由环路问题

实验 8:聚合了不存在的网络导致的路由环路问题 一、 实验目的 聚合了不存在的网络导致的路由环路问题。 网络故障导致的路由环路问题。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、聚合了不存在的网络导致的路由环路问题 (1) 第一步&am…

【Leetcode】189.轮转数组

题目链接: 189.轮转数组 题目描述: 解题思路: 要想实现数组元素向右轮转k个位置,可是将数组三次反转来实现 以 nums [1,2,3,4,5,6,7], k 3 为例,最终要得到[5,6,7,1,2,3,4]: 第一次反转:将整个数组反转…

设计模式c++(二)

文章目录 十三、门面模式_Facade十四、代理模式_Proxy十五、适配器_Adapter十六、中介者_Mediator十七、状态模式_State十八、备忘录_Memento十九、组合模式_Composite二十、迭代器_Iterator二十一、职责链_Chain Of Resposibility二十二、命令模式_Command二十三、访问器_Vist…

shell 3 脚本参数传递与数字运算(泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了…

jvm优化策略都有哪些

1. 堆内存(Heap Memory)优化: • 调整堆大小:通过-Xms和-Xmx参数设置JVM初始堆大小和最大堆大小,以确保JVM在启动时拥有足够的内存,并在需要时能够扩展到最大容量。 • 堆分区调整:调整年轻代&a…

使用ensp搭建内外互通,使用路由跨不同vlan通信。

1.网络拓扑图 2.规则 (1)允许 (自己)ping通内外网,内外网随便一个pc就可以. (2) 允许(电信)ping通内外网,内外网随便一个pc就可以 (时间问题不做…

Flink 中维表 Join 的实现方式与优化策略

目录 一、维表介绍 二、预加载维表 (一)实现方式 (二)优缺点 (三)改进尝试与局限 三、使用本地缓存(HashMap)加载维表 (一)实现方式 第一版 第二版 …

详解八大排序(六)------(三路划分,自省排序,归并排序外排序)

文章目录 1. 快排之三路划分1. 1 三路划分的诞生由来1. 2 三路划分的具体思路1. 3 代码实现 2. 快排之自省排序2. 1 自省排序的目的2. 2 自省排序的思路2. 3 自省排序的实现代码 3. 归并排序外排序3. 1 外排序介绍3. 2 归并排序外排序的思路3. 3 归并排序的实现代码 1. 快排之三…

【Redis篇】 List 列表

在 Redis 中,List 是一种非常常见的数据类型,用于表示一个有序的字符串集合。与传统的链表结构类似,Redis 的 List 支持在两端进行高效的插入和删除操作,因此非常适合实现队列(Queue)和栈(Stack…

计算机视觉——相机标定(Camera Calibration)

文章目录 1. 简介2. 原理3. 相机模型3.1 四大坐标系3.2 坐标系间的转换关系3.2.1 世界坐标系到相机坐标系3.2.2 相机坐标系到图像坐标系3.2.3 像素坐标系转换为图像坐标系3.2.4 世界坐标转换为像素坐标 3.3 畸变3.3.1 畸变类型3.3.1.1 径向畸变(Radial Distortion&a…