首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DKMS是做什么的?我该怎么用呢?

DKMS是做什么的?我该怎么用呢?
EN

Ask Ubuntu用户
提问于 2014-01-21 08:50:14
回答 1查看 79.8K关注 0票数 43

我最近见过一些关于DKMS的文章,但还不清楚它在我的系统上到底做了什么。

DKMS实际上是做什么的,我如何使用它?

EN

回答 1

Ask Ubuntu用户

发布于 2014-01-21 09:21:00

DKMS ()软件包(http://linux.dell.com/dkms/)为安装内核模块的补充版本提供了支持。该包编译并安装到内核树中。卸载还原以前的模块。默认情况下,安装在当前内核树中,但是可以使用命令行选项选择任何内核树。此外,在安装新的Ubuntu内核映像包时会自动调用DKMS,因此添加到DKMS中的模块将自动跨更新进行。要将模块与DKMS一起使用,可以将模块安装文件(可能是源代码或二进制文件)放在/usr/src/-中,以及配置文件dkms.conf,该文件告诉DKMS如何构建/配置模块及其名称。在更高级的情况下,有条件的构建指令和修补可以由dkms系统完成,但考虑到您的情况,这可能是不必要的。让我们假设您想要安装一个模块,您的花哨“可怕的适配器”。您将获得一个源tarball awesome-20091211-v1.1.tgz。使用DKMS,我们告诉DKMS如何通过创建一个带有适当条目的dkms.conf文件来为您做到这一点。例如,在我们解压了tarball之后:

代码语言:javascript
运行
复制
# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

dkms.conf中,我们可以添加行:

代码语言:javascript
运行
复制
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 )。
  3. 没有.o或.ko扩展的模块的名称。如果构建了多个模块,这实际上可能是一个模块数组,参见man。
  4. 在那里,DKMS可以找到构建的模块。
  5. DKMS的名称和版本应该与模块(S)相关联。
  6. 若要在安装模块后重新生成initrd映像,请执行以下操作。

您还可以在构建或安装之前或之后添加调用脚本的选项,提供附加(有条件的) make命令、修补程序命令等。实际上,dkms.conf来源于一个shell脚本,因此在必要时可以执行大量的欺骗操作。这些选项和更多选项在man dkms中的dkms.conf部分中进行了描述。接下来,通过将模块安装文件复制到内核源代码树/usr/src/-,将模块安装到DKMS中,并告诉DKMS有关新模块的信息:

代码语言:javascript
运行
复制
# 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构建并安装该模块:

代码语言:javascript
运行
复制
# 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

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

票数 46
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/408605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档