0
点赞
收藏
分享

微信扫一扫

18 - Java 线程

ixiaoyang8 2024-12-05 阅读 11

文章目录

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


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兼容性,决定内核升级的时候是否进行重新编译。


在这里插入图片描述

举报

相关推荐

0 条评论