module-assistant
已经成为编译和构建包含内核模块的二进制Debian包的一种事实上的方法。最近出现了一个类似的实用工具-- dkms
。
如果有人有使用这两种方法的经验,请对使用一种和另一种的利弊进行比较和分析。
答案中要讨论的一个问题是,dkms
是否也为内核模块构建二进制Debian包,如果是的话,m-a
和dkms
构建的包之间的区别是什么(如果有的话)。
我个人从未使用过dkms
,但多年来我偶尔使用过module-assistant
,这是一次很好的体验。我目前还没有计划在dkms
上做实验,所以我认为我不是写答案的合适人选。
随机搜索发现了一个讨论这里,也是这。
不用说,任何答案都应该基于第一手的经验,而不是从网络论坛抄袭。使用这两种方法的工作示例将是很好的。可能是nvidia-kernel
,因为这是非常常用的。是的,我知道它是一个专有的内核模块。:-(
更新:感谢jordanm的回答。对于m-a
和dkms
来说,我想要更详细地介绍引擎盖下发生了什么,尽管我一开始没有提到这一点。而且,听起来大多数时候dkms
都会透明和自动地工作。但是dkms
的失效模式是什么呢?它们如何处理手工编译/安装的内核?可以从二进制包安装,也可以从本地安装。
发布于 2014-03-17 23:39:46
从用户的角度来看,module-assistant
(m-a
)是一种手动编译内核模块的工具,而dkms
在不需要用户干预的情况下自动编译内核模块。如果您使用的是m-a
,并且内核包已升级,则必须使用m-a
手动重新编译该模块。由于m-a
只为当前运行的内核进行编译,这意味着如果需要m-a
的模块是图形驱动程序,那么下一次重新启动时将有一个中断的GUI。
dkms
的触发器是在每个内核包安装时执行的,它确保为系统上的每个内核安装了模块。我个人想不出最终用户继续使用m-a
的原因.
下面是用于m-a
内核模块的nvidia
与dkms
的一些示例:
用模块助理构建模块:
apt-get install module-assistant nvidia-kernel-source
m-a prepare # install the header package for the current kernel and compilation tools
m-a install nvidia-kernel-source # compile the source into a .deb and install it
使用dkms构建模块:
apt-get install nvidia-kernel-dkms
使用module-assistant
进行内核升级:
apt-get upgrade # assumed to upgrade kernel
# reboot
m-a prepare
m-a install nvidia-kernel-source
使用dkms
进行内核升级:
apt-get upgrade # assumed to upgrade kernel
https://unix.stackexchange.com/questions/120124
复制相似问题