动态内核模块支持
出自 维基百科
- 动态内核模块支持 (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 软件包指南。