首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dkms与模块助理

dkms与模块助理
EN

Unix & Linux用户
提问于 2014-03-17 22:42:39
回答 1查看 2.1K关注 0票数 8

module-assistant已经成为编译和构建包含内核模块的二进制Debian包的一种事实上的方法。最近出现了一个类似的实用工具-- dkms

如果有人有使用这两种方法的经验,请对使用一种和另一种的利弊进行比较和分析。

答案中要讨论的一个问题是,dkms是否也为内核模块构建二进制Debian包,如果是的话,m-adkms构建的包之间的区别是什么(如果有的话)。

我个人从未使用过dkms,但多年来我偶尔使用过module-assistant,这是一次很好的体验。我目前还没有计划在dkms上做实验,所以我认为我不是写答案的合适人选。

随机搜索发现了一个讨论这里,也是

不用说,任何答案都应该基于第一手的经验,而不是从网络论坛抄袭。使用这两种方法的工作示例将是很好的。可能是nvidia-kernel,因为这是非常常用的。是的,我知道它是一个专有的内核模块。:-(

更新:感谢jordanm的回答。对于m-adkms来说,我想要更详细地介绍引擎盖下发生了什么,尽管我一开始没有提到这一点。而且,听起来大多数时候dkms都会透明和自动地工作。但是dkms的失效模式是什么呢?它们如何处理手工编译/安装的内核?可以从二进制包安装,也可以从本地安装。

EN

回答 1

Unix & Linux用户

发布于 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内核模块的nvidiadkms的一些示例:

用模块助理构建模块:

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

代码语言:javascript
运行
复制
apt-get install nvidia-kernel-dkms

使用module-assistant进行内核升级:

代码语言:javascript
运行
复制
apt-get upgrade # assumed to upgrade kernel
# reboot
m-a prepare
m-a install nvidia-kernel-source

使用dkms进行内核升级:

代码语言:javascript
运行
复制
apt-get upgrade # assumed to upgrade kernel
票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/120124

复制
相关文章

相似问题

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