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
相关推荐
L_09072 分钟前
【Linux】实现简易 shell 程序
linux·bash
爱学习的程序媛3 分钟前
WSL2:Windows上运行Linux的完整指南
linux·运维·windows·ubuntu·wsl2
会飞的大可3 分钟前
Jenkins 企业级集成实战:从规划到落地的完整指南
运维·jenkins
Are_You_Okkk_6 分钟前
AI开源知识库跨部门闭环搭建,效率提升40%
大数据·运维·人工智能·架构·开源
Yupureki9 分钟前
《Linux系统编程》20.常见程序设计模式
linux·服务器·c语言·c++·单例模式·建造者模式·责任链模式
M1nat0_11 分钟前
Linux基础 Ext 文件系统:从磁盘硬件到目录路径的全链路解析
linux·服务器·网络·数据库
AIminminHu11 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(一-2-(3)-当你的协同CAD服务器面临“千人同屏”时:从单机优化到分布式高并发)
运维·服务器·分布式
moical12 分钟前
关于docker-compose启动elasticsearch:7.17.29报"permission denied": unknown错误解决
linux
s65166549615 分钟前
编译linux内核
linux
济61721 分钟前
ARM Linux 驱动开发篇:阻塞与非阻塞IO详解(含等待队列+poll机制)--- Ubuntu20.04
linux·嵌入式·嵌入式linux驱动开发