DKMS是做什么的?如何使用?


23

我最近看到了关于DKMS的一些提及,但尚不清楚它在系统上的实际作用。

DKMS实际做什么,如何使用?

Answers:


25

DKMS(动态内核模块支持)软件包(http://linux.dell.com/dkms/)提供了对安装内核模块补充版本的支持。该软件包将编译并安装到内核树中。卸载将还原以前的模块。默认情况下,安装是安装到当前的内核树中,但是可以使用命令行选项选择任何内核树。此外,在安装新的Ubuntu内核映像软件包后会自动调用DKMS,因此添加到DKMS的模块将在更新过程中自动进行。

总览

要将模块与DKMS一起使用,可以将模块安装文件(可以是源代码或二进制文件)与配置文件dkms.conf一起放在/ usr / src /-中,该配置文件告诉DKMS如何构建/配置模块及其功能。名字是。在更高级的情况下,dkms系统可以完成条件构建说明和修补程序,但是考虑您的情况,可能没有必要。

演练

假设您想为自己的“ Awesome Adaptor”安装模块。您将获得消息来源tarball awesome-20091211-v1.1.tgz

使用DKMS,我们通过创建带有适当条目的dkms.conf文件来告诉DKMS如何为您完成此操作。例如,在打开压缩包后,请执行以下操作:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

在内部dkms.conf,我们可以添加以下行:

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

所有目录均与dkms.conf文件的位置有关。这告诉DKMS

  1. 生成模块的命令(在目录src /中运行make)。
  2. 清除源树的命令(在src /目录中运行make clean)。
  3. 不带.o或.ko扩展名的模块的名称。如果构建了多个模块,则实际上可能是一个模块数组,请参阅man dkms。
  4. DKMS可以在其中找到内置模块的地方。
  5. DKMS的名称和版本应与模块关联。
  6. 在安装模块后重新制作initrd映像。

您还可以在构建或安装之前或之后添加选项来调用脚本,提供其他(有条件的)make命令,patch命令等。dkms.conf实际上源自Shell脚本,因此可以完成许多技巧如有必要。这些选项以及更多选项在man dkms的dkms.conf部分中进行了描述。

接下来,通过将模块安装文件复制到内核源代码树/ usr / src /-中,将模块安装到DKMS中,然后将新模块告知DKMS:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

而已!DKMS现在将我们的模块添加到其模块列表中,以为将来的内核安装而构建。为了确保它能正常工作并将模块安装到我们当前的内核中,我们可以指示dkms构建并安装该模块:

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

运气好的话,您的模块将被安装并重新安装到将来的内核更新中。

例子

DKMS手册页提供有关设置自己喜欢的内核模块与DKMS使用的有用信息。它不是全面的文档,但是会回答很多问题。即使使用的模块不是您要设置的模块,也可能有助于您注意以下示例:

  • RocketRaid-有关如何使用DKMS 设置Highpoint RocketRaid驱动程序RR26xx和RR62x的两个示例。

来自:help.ubuntu.com

更多信息可以在这里找到:


2
FWIW,DKMS项目在Github上有一个新家github.com/dell/dkms
DDay
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.