动态内核模块支持

出自 ArchWiki
(重定向自 DKMS

出自 Wikipedia

动态内核模块支持 (DKMS) 是一个程序/框架,它允许生成 Linux 内核模块,这些模块的源代码通常位于内核源代码树之外。其概念是在安装新内核时自动重建 DKMS 模块。

这意味着用户不必等待公司、项目或软件包维护者发布模块的新版本。自从引入 pacman hooks 以来,当内核升级时,模块的重建会自动处理。

安装

安装 dkms 软件包目标内核的头文件。例如,对于默认的 linux 内核,这将是 linux-headers。其他内核有各自的头文件软件包。

许多位于内核源代码树之外的模块都有 DKMS 变体;其中一些托管在官方仓库中,大多数可以在 AUR 中找到。

升级

尽管 DKMS 模块的重建在内核升级期间通常是无缝的,但仍然可能发生重建失败的情况。您应该特别注意 pacman 输出。如果系统依赖 DKMS 模块才能成功启动,或者您将 DKMS 与不在官方仓库中的自定义内核一起使用,则尤其如此。

为了处理内核中的更改、修复错误或添加必要的功能,请考虑在重新启动之前升级 DKMS 软件包。

用法

手动调用 DKMS 的用法。

可以通过执行以下操作来使用 Tab 补全

# source /usr/share/bash-completion/completions/dkms

列出模块

列出树中模块、版本和内核的当前状态

# dkms status

重建模块

为当前运行的内核重建所有模块

# dkms autoinstall

或为特定内核

# dkms autoinstall -k 3.16.4-1-ARCH

特定模块为当前运行的内核构建

# dkms install -m nvidia -v 334.21

或者简单地

# dkms install nvidia/334.21

所有内核构建模块

# dkms install nvidia/334.21 --all

移除模块

移除模块(旧模块不会自动移除)

# dkms remove -m nvidia -v 331.49 --all

或者简单地

# dkms remove nvidia/331.49 --all

如果软件包 dkms 被移除,则有关先前模块构建文件的信息将丢失。如果发生这种情况,请浏览 /usr/lib/modules/kernel_release/var/lib/dkms/package_name 并删除所有不再使用的文件和目录。

DKMS 软件包创建

参见 DKMS 软件包指南

参见