NVIDIA 显卡驱动安装指南 (CentOS Stream 9 / RTX 5090)

本文档详细记录了在 CentOS Stream 9 系统上为 NVIDIA GeForce RTX 5090 D V2 显卡安装驱动的完整过程。

特别注意 :对于 RTX 50 系列(Blackwell 架构)及更新的显卡,必须使用 NVIDIA Open Kernel Modules(开源内核模块)版本的驱动,否则标准闭源驱动可能无法正确初始化 GPU。

1. 系统环境确认

在安装前,首先确认系统版本和显卡型号。

1.1 查看系统版本

bash 复制代码
cat /etc/os-release

输出示例:

复制代码
NAME="CentOS Stream"
VERSION="9"
ID="centos"
...

1.2 确认显卡型号

使用 lspci 命令查看已连接的 NVIDIA 设备。

bash 复制代码
lspci | grep -i nvidia

输出示例:

复制代码
02:00.0 VGA compatible controller: NVIDIA Corporation GB202 [GeForce RTX 5090 D V2] (rev a1)
85:00.0 VGA compatible controller: NVIDIA Corporation GB202 [GeForce RTX 5090 D V2] (rev a1)

2. 安装前准备

安装编译驱动所需的依赖包,包括 GCC 编译器和内核开发头文件。

bash 复制代码
# 更新系统
sudo dnf update -y

# 安装 EPEL 源和开发工具
sudo dnf install -y epel-release
sudo dnf install -y gcc make kernel-devel-$(uname -r) kernel-headers-$(uname -r)

3. 添加 NVIDIA 官方软件源

使用 NVIDIA 提供的 RHEL 9 CUDA 软件源,这是最稳定且推荐的安装方式。

bash 复制代码
# 添加 CUDA 仓库
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo

# 清理并重建缓存
sudo dnf clean all

4. 安装 NVIDIA 驱动

4.1 选择正确的驱动模块

RTX 5090 等新一代显卡需要 Open Kernel Modules。我们需要安装 open-dkms 分支的驱动。

警告 :不要直接安装 latest-dkms(闭源版本),可能会导致 Failed to allocate NvKmsKapiDevice 错误。

4.2 执行安装命令

使用 DNF 的模块功能安装驱动:

bash 复制代码
# 安装 Open Kernel Module 版本的驱动
sudo dnf module install -y nvidia-driver:open-dkms

注:如果系统之前安装过其他版本的驱动,建议先卸载:

bash 复制代码
sudo dnf module remove nvidia-driver
sudo dnf module reset nvidia-driver

4.3 加载内核模块

安装完成后,通常需要重启系统。如果在服务器环境下不便重启,可以尝试手动加载模块:

bash 复制代码
sudo modprobe nvidia

5. 验证安装结果

使用 nvidia-smi 命令验证驱动是否正常工作。

bash 复制代码
nvidia-smi

成功输出示例:

复制代码
Wed Mar 11 10:37:03 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.45.04              Driver Version: 595.45.04      CUDA Version: 13.2     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 5090 ...    Off |   00000000:02:00.0 Off |                  N/A |
|  0%   31C    P0             54W /  575W |       2MiB /  24455MiB |      0%      Default |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA GeForce RTX 5090 ...    Off |   00000000:85:00.0 Off |                  N/A |
| 30%   30C    P0             45W /  575W |       2MiB /  24455MiB |      0%      Default |
+-----------------------------------------+------------------------+----------------------+
  • Driver Version: 595.45.04 (支持 RTX 50 系列的最新驱动)
  • CUDA Version: 13.2
  • GPU: 正确识别到两块 RTX 5090 显卡。

6. 常见故障排除

故障 1: nvidia-smi 显示驱动版本但找不到 GPU

现象 :nvidia-smi 输出空表格,或者 dmesg 中出现以下错误:

复制代码
NVRM: installed in this system requires use of the NVIDIA open kernel modules.
[drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] Failed to allocate NvKmsKapiDevice

原因 :安装了闭源驱动(Legacy/Proprietary),但显卡硬件(如 RTX 5090 GB202 核心)强制要求使用开源内核模块。
解决方法:

  1. 卸载当前驱动:sudo dnf module remove nvidia-driver
  2. 重置模块流:sudo dnf module reset nvidia-driver
  3. 安装开源版:sudo dnf module install nvidia-driver:open-dkms

故障 2: NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver

原因 :内核模块未加载,或内核版本更新后 DKMS 未重新编译模块。
解决方法:

  1. 检查模块状态:lsmod | grep nvidia
  2. 尝试手动加载:sudo modprobe nvidia
  3. 如果失败,重启系统让 DKMS 自动重修编译:sudo reboot

7. 驱动版本管理与更新

7.1 自动更新

由于使用了 DKMS(Dynamic Kernel Module Support),当系统内核更新时,驱动模块会自动重新编译适配,无需重新安装驱动。

7.2 手动更新驱动

定期检查更新:

bash 复制代码
sudo dnf update

如果有新的驱动流发布(例如从 595 更新到 600),可以使用模块命令切换:

bash 复制代码
sudo dnf module switch-to nvidia-driver:open-dkms
相关推荐
阳光九叶草LXGZXJ5 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
奔跑的大白啊6 小时前
多容器共享目录权限踩坑记
linux·ubuntu·共享目录·linux权限·docker 容器化部署
黄大刀6 小时前
DataPulse一款开箱即用的SCADA(四)-历史记录
运维·scada·动环
归秋1429 小时前
2026 企业 AI 办公工具选型指南:从评估框架到产品适配
大数据·运维·人工智能
Android系统攻城狮9 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
H.莓飛9 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
91刘仁德9 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
硅基手札10 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
沫璃染墨12 小时前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
工作10年+,存储芯片行业12 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie