动态内核模块支持
外观
(重定向自 Dkms)
来自 Wikipedia
- 动态内核模块支持 (DKMS) 是一个程序/框架,它能够生成通常位于内核源代码树之外的 Linux 内核模块。其理念是让 DKMS 模块在安装新内核时自动重新构建。
这意味着用户不必等待公司、项目或软件包维护者发布模块的新版本。自 pacman hook 引入以来,在升级内核时,模块的重新构建已自动处理。
安装
安装 dkms 包 **以及** 目标内核/内核的头文件。例如,对于默认的 linux 内核,这将是 linux-headers。其他内核有其各自的头文件包。
许多位于内核源代码树之外的模块都有 DKMS 变体;一些托管在 官方仓库 中,大多数在 AUR 中找到。
注意 如果内核 强制只加载已签名模块(例如在使用 内核锁定模式 时),DKMS 构建的模块将无法加载。
升级
尽管 DKMS 模块在内核升级过程中的重新构建通常是无缝的,但有时仍可能发生重新构建失败的情况。您应该特别注意 pacman 的输出。如果系统依赖 DKMS 模块才能成功启动,以及/或者您将 DKMS 用于非官方仓库中的自定义内核,这一点尤其适用。
为了应对内核的更改、修复 bug 或添加必要的功能,请考虑在重启前升级 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 包指南。