DKMS

本文介绍DKMS工具的主要功能,即解决内核更新导致的驱动不兼容问题。通过具体实例展示了如何使用DKMS进行模块的添加、构建、安装等操作,并介绍了如何将DKMS与deb打包相结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DKMS:主要作用就是当内核发生变化(版本号),内核之外的驱动可以动态重新生成新的模块。因为内核之外的模块是找/lib/modules/内核版本号的当内核升级后,内核版本号发生变化,目录也发生变化,而内核之外的驱动版本号没有发生变化,此时就用不了了。而DKMS就是为了解决这个问题而出现的


如:

以hello-0.1为例,我们首先需要把代码copy到"/usr/src"下面,这样完整路径将是"/usr/src/hello-0.1"。

DKMS要求我们的代码目录必须以"<module>-<module-version>"的格式命名。本例中,代码的版本是0.1。

DKMS主要的命令可以参考上图所示,分别是add、build、install、uninstall和remove,另外,还可以执行"dkms status"查看目前DKMS系统维护的模块的状态。


dkms.conf

PACKAGE_NAME="hello"
PACKAGE_VERSION="0.1"
CLEAN="make clean"
MAKE[0]="make all KVERSION=$kernelver"
BUILT_MODULE_NAME[0]="hello"
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"

sudo dkms add -m hello -v 0.1

dkms status

sudo dkms build -m hello -v 0.1

sudo dkms install -m hello -v 0.1

/usr/src/hello-0.1/
├── dkms.conf
├── hello.c
└── Makefile



dkms与deb打包结合在一起

1、在debian同一级目录下面创建

dkms.conf

  1 PACKAGE_NAME="mt7601u-ap"
  2 PACKAGE_VERSION="#MODULE_VERSION#"
  3 CLEAN="make clean"
  4 MAKE="make all KVERSION=$kernelver"
  5 BUILT_MODULE_NAME="mt7601Uap"
  6 DEST_MODULE_LOCATION="/kernel/drivers/net/wireless"
  7 AUTOINSTALL="yes"

2、在debian目录中的rule

2.1、rules:

 1 #!/usr/bin/make -f
  2 VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: (.+).*,\1,p' | cut -d . -f 1,2)
  3 %:
  4         dh $@ --with dkms
  5 
  6 override_dh_auto_configure:
  7 override_dh_auto_build:
  8 override_dh_auto_test:
  9 override_dh_auto_install:
 10 override_dh_auto_clean:
 11 
 12 override_dh_dkms:
 13         dh_install ap  \
 14                 ate \
 15                 chips  \
 16                 common \
 17                 include  \
 18                 LICENSE  \
 19                 mac  \
 20                 Makefile  \
 21                 mcu  \
 22                 mgmt  \
 23                 os  \
 24                 phy  \
 25                 rate_ctrl  \
 26                 README.md  \
 27                 RT2870APCard.txt  \
 28                 RT2870AP.txt  \
 29                 tools \
 30                 usr/src/mt7601u-ap-$(VERSION)
 31 
 32         dh_dkms -V $(VERSION)


2.2、dkms:



  1 PACKAGE_NAME="mt7601u-ap"
  2 PACKAGE_VERSION="#MODULE_VERSION#"
  3 CLEAN="make clean"
  4 MAKE="make all KVERSION=${kernelver}"
  5 BUILT_MODULE_NAME="mt7601Uap"
  6 DEST_MODULE_LOCATION="/kernel/drivers/net/wireless"
  7 AUTOINSTALL="yes"



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值