Linux中DKMS是什么?

  • DKMS全称是DynamicKernel ModuleSupport,动态内核模块支持。1996年,Oikawa等人提出的一种与LKM类似的动态核心模块技术
  • DKMS是为了解决linux内核模块编译后,在不同的内核运行可能出现版本不一致的问题,比如主动升级的kernel版本,尤其是小版本;再比如把某个ko放到新的内核版本系统中
  • 对于DKMS内核模块编译解决不同内核版本上使用ko,主要解决的一个场景是内核小版本升级后,内核模块ko可以正常使用。对于这种场景主要问题是内核模块编译的时候所使用的符号表地址可能变化造成异常,dkms原理是相当于一个管理模块,通过dkms.cfg进行配置指定编译和安装方式,在系统启动的时候系统会根据配置主动编译被管理的模块,从而让ko使用的地址这些都是match的。这种方式有点类似systemctl的管理模式提供的是一个统一的框架,具体编译还是要各个模块处理
  • DKMs以文件的形式存储并能在系统运行过程中动态地加载和卸载
  • 安装方式:sudo apt-install dkms
  • dkms常用命令:
    • dkms add -m qla2x00 -v v6.04.00
    • dkms build -m qla2x00 -v v6.04.00 -k 2.4.20-8smp
    • dkms install -m qla2x00 -v v6.04.00 -k 2.4.20-8smp
    • dkms uninstall -m qla2x00 -v v6.04.00 -k 2.4.20-8smp
    • dkms status
  • dkms的配置方式
PACKAGE_NAME="@_PKGBASE@"
PACKAGE_VERSION="@PKGVER@"
MAKE[0]="make --uname_r=$kernelver"
CLEAN="make clean"
BUILT_MODULE_NAME[0]="@_PKGBASE@"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"

参考:
https://wiki.archlinuxcn.org/wiki/DKMS
https://www.linuxjournal.com/article/6896

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值