一、环境信息
操作系统
cat/etc/os-release输出:
NAME="Kylin Linux Advanced Server" VERSION="V10 (Halberd)"查看内核版本
uname-r输出:
4.19.90-89.11.v2401.ky10.x86_64查看显卡
lspci|grep-invidia输出:
81:00.0 VGA compatible controller: NVIDIA Corporation GB203 [GeForce RTX 5080] 81:00.1 Audio device: NVIDIA Corporation GB203 High Definition Audio Controller二、安装驱动时报错
执行安装:
sudo./NVIDIA-Linux-x86_64-580.142.run\--kernel-source-path=/usr/src/kernels/$(uname-r)\--no-questions\--no-drm提示:
ERROR: The kernel source path '/usr/src/kernels/4.19.90-89.11.v2401.ky10.x86_64' does not exist.三、排查 kernel-devel
查看源码目录:
ls/usr/src/kernels发现:
4.19.90-89.41.v2401.ky10.x86_64查看当前运行内核:
uname-r输出:
4.19.90-89.11.v2401.ky10.x86_64查看已安装内核包:
rpm-qa|grepkernel发现:
kernel-4.19.90-89.11 kernel-core-4.19.90-89.11 kernel-modules-4.19.90-89.11 kernel-devel-4.19.90-89.41 kernel-headers-4.19.90-89.41可以看到:
- 当前运行内核:89.11
- kernel-devel:89.41
版本不一致。
四、卸载错误版本
卸载:
yum remove kernel-devel kernel-headers安装与当前内核一致的版本:
yuminstallkernel-devel-$(uname-r)再次确认:
rpm-qa|grepkernel输出:
kernel-4.19.90-89.11 kernel-core-4.19.90-89.11 kernel-devel-4.19.90-89.11 kernel-modules-4.19.90-89.11确认源码目录:
ls-ld/usr/src/kernels/$(uname-r)确认 Makefile:
ls/usr/src/kernels/$(uname-r)/Makefile说明开发环境已经正常。
五、安装编译依赖
yuminstall-ygccmakeelfutils-libelf-devel六、重新安装驱动
再次安装:
sudo./NVIDIA-Linux-x86_64-580.142.run\--kernel-source-path=/usr/src/kernels/$(uname-r)\--no-questions\--no-drm安装完成没有报错。
但是执行:
nvidia-smi提示:
No devices were found七、继续排查
驱动模块已经加载:
lsmod|grepnvidia输出:
nvidia_uvm nvidia查看驱动版本:
cat/proc/driver/nvidia/version输出:
NVRM version: NVIDIA UNIX x86_64 Kernel Module 580.142说明:
- 驱动已经安装成功;
- 内核模块已经加载;
- 问题不是安装失败。
八、查看 dmesg
执行:
dmesg|grep-Ei"NVRM|nvidia"发现关键日志:
NVRM: The NVIDIA GPU 0000:81:00.0 installed in this system requires use of the NVIDIA open kernel modules. NVRM: GPU 0000:81:00.0: RmInitAdapter failed!重点就是这一句:
requires use of the NVIDIA open kernel modules说明:
RTX 5080(Blackwell 架构)要求使用 NVIDIA Open Kernel Modules,而不是默认安装的闭源内核模块。
九、Open Kernel Modules 安装参数说明
在查看dmesg后发现如下日志:
NVRM: The NVIDIA GPU 0000:81:00.0 (PCI ID: 10de:2c02) installed in this system requires use of the NVIDIA open kernel modules.说明 RTX 5080(Blackwell 架构)要求使用NVIDIA Open Kernel Modules(开源内核模块),不能使用默认安装的闭源内核模块。
1. 确认当前安装的是闭源模块
执行:
modinfo nvidia|grep"^license"输出:
license: NVIDIA其中:
license: NVIDIA:表示当前安装的是NVIDIA Proprietary Kernel Modules(闭源内核模块)。- 对于部分新一代 GPU(例如 RTX 50 系列),默认安装闭源模块后,虽然驱动能够正常安装并加载,但 GPU 无法完成初始化,最终表现为:
nvidia-smi输出:
No devices were found结合dmesg日志即可确认,需要重新安装Open Kernel Modules。
2. Open Kernel Modules 的两种安装方式
NVIDIA.run安装包根据版本不同,支持两种参数写法。
方式一:推荐(新版本)
./NVIDIA-Linux-x86_64-580.142.run\--kernel-module-type=open该参数明确指定:
open:安装 Open Kernel Modules。proprietary:安装 Proprietary(闭源)Kernel Modules。
例如:
./NVIDIA-Linux-x86_64-580.142.run\--kernel-module-type=proprietary表示显式安装闭源模块。
方式二:兼容写法(旧版本及部分新版本)
./NVIDIA-Linux-x86_64-580.142.run\-m=kernel-open这是较早版本 NVIDIA Installer 使用的参数,很多官方文档、论坛以及发行版说明仍然采用这种写法。
对于 580.142 驱动,两种方式最终安装的都是Open Kernel Modules,效果完全一致。
3. 如何确认安装包支持哪种参数
可以查看帮助信息:
./NVIDIA-Linux-x86_64-580.142.run--help或查看高级选项:
./NVIDIA-Linux-x86_64-580.142.run --advanced-options如果帮助信息中包含:
--kernel-module-type=open建议优先使用该参数,因为这是 NVIDIA 官方推荐的新参数,语义更加清晰。
如果没有该参数,但支持:
kernel-open则可以使用:
./NVIDIA-Linux-x86_64-580.142.run-m=kernel-open4. 本文环境最终安装命令
本文使用的环境如下:
- 操作系统:Kylin Linux Advanced Server V10
- 内核:4.19.90-89.11.v2401.ky10.x86_64
- GPU:RTX 5080(GB203)
- 驱动版本:580.142
最终成功安装命令:
./NVIDIA-Linux-x86_64-580.142.run\-m=kernel-open\--kernel-source-path=/usr/src/kernels/$(uname-r)\--no-questions\--no-drm安装完成后验证:
modinfo nvidia|grep"^license"nvidia-smiGPU 能够正常识别,说明 Open Kernel Modules 已正确生效。
十、正确安装方式
重新安装驱动:
./NVIDIA-Linux-x86_64-580.142.run-m=kernel-open安装完成后:
nvidia-smi成功识别显卡。
十一、卸载驱动
使用安装包卸载:
./NVIDIA-Linux-x86_64-580.142.run--uninstall或者:
nvidia-uninstall十二、常用检查命令
查看内核:
uname-r查看 kernel 包:
rpm-qa|grepkernel查看源码:
ls/usr/src/kernels查看 Makefile:
ls/usr/src/kernels/$(uname-r)/Makefile查看驱动模块:
lsmod|grepnvidia查看驱动版本:
cat/proc/driver/nvidia/version查看 GPU:
nvidia-smi查看安装日志:
cat/var/log/nvidia-installer.log查看内核日志:
dmesg|grep-Ei"NVRM|nvidia"十三、总结
这次安装过程中踩了两个比较典型的坑:
1. kernel-devel 与运行内核版本不一致
例如:
kernel 89.11 kernel-devel 89.41导致驱动无法编译。
解决办法:
yum remove kernel-devel kernel-headers yuminstallkernel-devel-$(uname-r)确保以下四项版本一致:
uname -r /lib/modules/$(uname -r) /usr/src/kernels/$(uname -r) kernel-devel-$(uname -r)2. RTX 5080 必须使用 Open Kernel Modules
虽然驱动安装成功,但是nvidia-smi提示:
No devices were found查看dmesg后发现:
requires use of the NVIDIA open kernel modules最终重新安装:
./NVIDIA-Linux-x86_64-580.142.run-m=kernel-open问题解决。
最终安装命令
yuminstall-ygccmakeelfutils-libelf-devel yuminstallkernel-devel-$(uname-r)./NVIDIA-Linux-x86_64-580.142.run\-m=kernel-open\--kernel-source-path=/usr/src/kernels/$(uname-r)\--no-questions\--no-drm安装完成后验证:
nvidia-smi能够正常识别 RTX 5080,说明驱动安装成功。