记录解决Linux 内核更新时无法加载 Nvidia 驱动问题实践
1.First | 序
此文简单记录如何使用 DKMS 修复 Nvidia 驱动程序
解决更新 Linux 内核后掉驱动的问题
需要具备以下条件
- 使用
Linux发行版已安装好DKMS程序 Linux Kernel更新前Nvidia驱动已安装- 简单的
Linux命令行操作 - 解决问题的能力
1.1.What is DKMS | 什么是 DKMS ?
DKMS(Dynamic Kernel Module Support)是一种用于动态管理和编译内核模块的框架。它允许在 Linux 系统上方便地构建、安装和卸载内核模块,而无需将模块绑定到特定的内核版本。这对于需要频繁更新内核或使用自定义模块的用户非常有用。
1.1.1.DKMS 的主要特点
-
动态编译:
当系统升级到新的内核时,DKMS 会自动重新编译并安装模块,无需手动干预。 -
内核版本独立:
DKMS 模块不是绑定到特定的内核版本,而是存储在一个源代码树中,能够根据需要为不同的内核版本编译。 -
模块管理:
DKMS 提供了命令来安装、删除、构建和重新构建模块。例如:dkms add: 添加一个模块到 DKMS 系统。dkms build: 为当前内核或指定内核构建模块。dkms install: 安装模块,使其加载到内核中。dkms remove: 从 DKMS 系统中移除模块。
-
跨平台支持:
DKMS 支持多种 Linux 发行版,如 Ubuntu、Debian、Fedora、openSUSE 等。
1.1.2.使用场景
-
第三方驱动支持:
如显卡驱动(NVIDIA、AMD)或网络适配器驱动,在内核升级后需要重新编译时,DKMS 能自动完成。 -
自定义模块开发:
开发者可以使用 DKMS 管理自己的模块,在开发和测试过程中简化模块的构建和加载过程。 -
内核更新后自动化:
系统更新内核后,DKMS 会检测模块是否需要重新构建,并在启动时自动加载新模块。
1.1.3.DKMS 的安装
在大多数发行版中,DKMS 可以通过包管理器安装。例如:
# 在 openSUSE
sudo zypper install dkms
# 在 Ubuntu/Debian
sudo apt install dkms
# 在 Fedora
sudo dnf install dkms
1.1.4.配置文件示例
DKMS 模块的配置文件通常位于 /usr/src/<module-name>-<version> 中,主要包括 dkms.conf 文件。例如:
PACKAGE_NAME="example-module"
PACKAGE_VERSION="1.0"
BUILT_MODULE_NAME[0]="example"
DEST_MODULE_LOCATION[0]="/extra/example"
AUTOINSTALL="yes"
1.1.5.总结
DKMS 是 Linux 环境中管理动态内核模块的强大工具,特别适合于需要频繁更新内核的场景,能够显著简化模块的维护工作。
1.2.SW&OS Version | * 版本
1.2.1.OS | 系统

1.2.2.Nvidia Driver Version

1.2.3.GPU Model
2.Procedure | 步骤
2.1.查看已安装显卡驱动版本
ll /usr/src

2.2.编译安装显卡模块
dkms install -m nvidia -v 550.54.15
# -v 后版本参数请对应上方值
ex👇
Sign command: /lib/modules/6.4.0-150600.23.30-default/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Building module:
Cleaning build area...
'make' -j32 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=6.4.0-150600.23.30-default modules............
Signing module /var/lib/dkms/nvidia/550.54.15/build/nvidia.ko
Signing module /var/lib/dkms/nvidia/550.54.15/build/nvidia-uvm.ko
Signing module /var/lib/dkms/nvidia/550.54.15/build/nvidia-modeset.ko
Signing module /var/lib/dkms/nvidia/550.54.15/build/nvidia-drm.ko
Signing module /var/lib/dkms/nvidia/550.54.15/build/nvidia-peermem.ko
Cleaning build area...
nvidia.ko.zst:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/6.4.0-150600.23.30-default/updates/
nvidia-uvm.ko.zst:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/6.4.0-150600.23.30-default/updates/
nvidia-modeset.ko.zst:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/6.4.0-150600.23.30-default/updates/
nvidia-drm.ko.zst:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/6.4.0-150600.23.30-default/updates/
nvidia-peermem.ko.zst:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/6.4.0-150600.23.30-default/updates/
depmod.....
3.Verify | 验证
使用 nvidia-smi 命令验证
nvidia-smi
