我最近见过一些关于DKMS的文章,但还不清楚它在我的系统上到底做了什么。
DKMS实际上是做什么的,我如何使用它?
发布于 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之后:
# 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
您还可以在构建或安装之前或之后添加调用脚本的选项,提供附加(有条件的) make命令、修补程序命令等。实际上,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一起使用的有用信息。这不是全面的文档,但它将回答许多问题。它可能会帮助您注意以下示例,即使所使用的模块不是要设置的模块:
更多信息可以在这里找到:
https://askubuntu.com/questions/408605
复制相似问题