动态内核模块支持

来自 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 软件包指南

参见