1. 适用环境
本文适用于以下场景:
- Fedora 43
- NVIDIA RTX 30 / RTX 40 系列显卡
- 需要使用
nvidia-smi - 需要安装 NVIDIA 官方驱动
- 笔记本双显卡环境:Intel 核显 + NVIDIA 独显
- 安装驱动后遇到
nvidia-smi报错、Nouveau 冲突、外接显示器不显示等问题
最终成功状态示例:
NVIDIA-SMI 595.71.05
Driver Version: 595.71.05
CUDA Version: 13.2
GPU: NVIDIA GeForce RTX 4060
显存: 8188MiB
2. 安装前准备
2.1 查看 Fedora 版本
cat /etc/fedora-release
如果显示:
Fedora release 43
后面的 NVIDIA 仓库地址使用 fedora43。
2.2 安装当前内核对应的开发包
NVIDIA 驱动需要和当前运行的内核匹配,所以先安装:
sudo dnf install kernel-devel-matched kernel-headers
检查当前内核版本:
uname -r
检查是否安装了对应的内核开发包:
rpm -qa | grep kernel-devel
正常情况下,当前内核版本和 kernel-devel 版本应该一致。
示例:
7.0.4-100.fc43.x86_64
kernel-devel-7.0.4-100.fc43.x86_64
kernel-devel-matched-7.0.4-100.fc43.x86_64
3. 添加 NVIDIA 官方仓库
Fedora 43 x86_64 执行:
sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora43/x86_64/cuda-fedora43.repo
清理 DNF 缓存:
sudo dnf clean expire-cache
4. 安装 NVIDIA 驱动
4.1 推荐安装开放内核模块
RTX 30 / RTX 40 系列显卡推荐使用:
sudo dnf install nvidia-open
4.2 安装 nvidia-smi 相关组件
如果需要使用 nvidia-smi,可以安装:
sudo dnf install nvidia-driver-cuda
安装后重启系统:
sudo reboot
5. 禁用 Nouveau 驱动
Fedora 默认可能会加载 Nouveau 开源驱动。Nouveau 和 NVIDIA 官方驱动同时存在时,可能导致 NVIDIA 驱动无法正常工作。
检查 Nouveau 是否正在运行:
lsmod | grep nouveau
如果看到类似输出:
nouveau 4001792 15
说明 Nouveau 正在运行,需要禁用。
5.1 创建 Nouveau 黑名单配置
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
写入:
blacklist nouveau
options nouveau modeset=0
保存退出。
5.2 重新生成 initramfs
sudo dracut --force
5.3 重启系统
sudo reboot
5.4 检查 Nouveau 是否禁用成功
lsmod | grep nouveau
如果没有任何输出,说明 Nouveau 已经没有加载。
6. 检查 Secure Boot
Secure Boot 开启时,NVIDIA 内核模块可能无法正常加载。
检查命令:
mokutil --sb-state
如果显示:
SecureBoot enabled
建议进入 BIOS 关闭 Secure Boot。
如果显示:
SecureBoot disabled
说明 Secure Boot 已关闭。
7. 验证 NVIDIA 驱动
执行:
nvidia-smi
如果正常,会显示:
NVIDIA-SMI
Driver Version
CUDA Version
GPU Name
显存使用情况
如果显示了显卡信息,说明 NVIDIA 驱动安装成功。
8. 常见问题与解决方法
问题一:nvidia-smi 无法和驱动通信
错误信息:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.
常见原因:
- NVIDIA 内核模块没有加载
- Nouveau 仍然占用显卡
- Secure Boot 拦截 NVIDIA 模块
- 当前内核和
kernel-devel不匹配 /dev/nvidia*设备节点没有正确创建
排查命令:
mokutil --sb-state
lsmod | grep nouveau
lsmod | grep nvidia
modinfo nvidia
uname -r
rpm -qa | grep -i nvidia
rpm -qa | grep kernel-devel
问题二:NVIDIA 模块已加载,但 nvidia-smi 仍然失败
如果执行:
lsmod | grep nvidia
能看到:
nvidia_uvm
nvidia_drm
nvidia_modeset
nvidia
说明 NVIDIA 内核模块已经加载。
但如果 nvidia-smi 仍然失败,可以执行:
sudo nvidia-modprobe
然后再次执行:
nvidia-smi
如果成功,说明问题大概率是:
NVIDIA 设备节点没有自动创建
可以检查设备节点:
ls -l /dev/nvidia*
正常应该看到:
/dev/nvidia0
/dev/nvidiactl
/dev/nvidia-uvm
如果没有,可以执行:
sudo nvidia-modprobe -u -c=0
然后再测试:
nvidia-smi
问题三:重启后仍然需要手动执行 nvidia-modprobe
如果每次重启后都需要手动执行:
sudo nvidia-modprobe
建议启用 NVIDIA 持久化服务:
sudo systemctl enable --now nvidia-persistenced
查看服务状态:
systemctl status nvidia-persistenced
然后重启测试:
sudo reboot
重启后执行:
nvidia-smi
问题四:命令输错为 udo
错误命令:
udo nvidia-modprobe
会报错:
bash: udo: command not found
正确命令是:
sudo nvidia-modprobe
问题五:nvidia-smi 正常,但外接显示器不显示
nvidia-smi 正常只能说明 NVIDIA 驱动可以被系统识别,不代表外接显示器一定正常。
笔记本常见结构:
内屏:Intel 核显
HDMI / DP 外接屏:NVIDIA 独显
所以外接屏不亮通常是显示输出链路没有配置好。
5.1 开启 NVIDIA DRM modeset
创建配置文件:
sudo nano /etc/modprobe.d/nvidia.conf
写入:
options nvidia_drm modeset=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
重新生成 initramfs:
sudo dracut --force
重启:
sudo reboot
检查是否开启成功:
cat /sys/module/nvidia_drm/parameters/modeset
如果输出:
Y
说明开启成功。
5.2 查看显示提供者
xrandr --listproviders
如果看到类似:
Provider 0: modesetting
Provider 1: NVIDIA-G0
可以尝试:
xrandr --setprovideroutputsource NVIDIA-G0 modesetting
xrandr --auto
5.3 切换到 X11 会话
Fedora 默认可能使用 Wayland。NVIDIA 外接屏异常时,可以尝试 X11。
GNOME 登录界面:
选择用户
点击右下角齿轮
选择 GNOME on Xorg
登录
KDE 登录界面:
选择 Plasma X11
登录
5.4 检查外接显示器是否被识别
xrandr
查看是否有:
HDMI-1 connected
DP-1 connected
如果显示 disconnected,说明系统没有识别到外接屏。
检查显卡绑定情况:
lspci -k | grep -A 4 -E "VGA|3D|Display"
NVIDIA 那一项正常应该显示:
Kernel driver in use: nvidia
9. 完整安装命令汇总
Fedora 43 从零安装 NVIDIA 驱动,可以按下面顺序执行:
sudo dnf install kernel-devel-matched kernel-headers
sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora43/x86_64/cuda-fedora43.repo
sudo dnf clean expire-cache
sudo dnf install nvidia-open nvidia-driver-cuda
禁用 Nouveau:
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
写入:
blacklist nouveau
options nouveau modeset=0
重新生成 initramfs:
sudo dracut --force
重启:
sudo reboot
重启后测试:
sudo nvidia-modprobe
nvidia-smi
如果成功,启用持久化服务:
sudo systemctl enable --now nvidia-persistenced
10. 完整排查命令汇总
以后 NVIDIA 驱动出问题,可以直接执行:
mokutil --sb-state
lsmod | grep nouveau
lsmod | grep nvidia
modinfo nvidia
uname -r
rpm -qa | grep -i nvidia
rpm -qa | grep kernel-devel
nvidia-smi
如果 nvidia-smi 失败,但是 lsmod | grep nvidia 有输出:
sudo nvidia-modprobe
nvidia-smi
如果 Nouveau 仍然存在:
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
写入:
blacklist nouveau
options nouveau modeset=0
然后:
sudo dracut --force
sudo reboot
如果外接屏不亮:
sudo nano /etc/modprobe.d/nvidia.conf
写入:
options nvidia_drm modeset=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
然后:
sudo dracut --force
sudo reboot
11. 本次问题总结
本次 Fedora 安装 NVIDIA 驱动过程中遇到的问题包括:
- 系统默认加载了 Nouveau 驱动
nvidia-smi一开始无法和 NVIDIA 驱动通信- Secure Boot 已关闭,不是问题来源
- 当前内核和
kernel-devel匹配 - NVIDIA 内核模块已经正确安装并加载
- 最终通过
sudo nvidia-modprobe创建设备节点后,nvidia-smi成功 - 外接显示器不显示属于显示输出配置问题,不是驱动完全安装失败
最终推荐保留以下服务:
sudo systemctl enable --now nvidia-persistenced
如果外接屏不显示,可以额外配置:
options nvidia_drm modeset=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
12. 最终验证标准
驱动安装成功至少应满足以下条件。
12.1 nvidia-smi 正常
nvidia-smi
可以正常显示显卡信息。
12.2 NVIDIA 模块正常加载
lsmod | grep nvidia
可以看到:
nvidia_uvm
nvidia_drm
nvidia_modeset
nvidia
12.3 Nouveau 没有加载
lsmod | grep nouveau
没有输出。
12.4 Secure Boot 已关闭
mokutil --sb-state
建议显示:
SecureBoot disabled
12.5 当前内核和 kernel-devel 匹配
uname -r
rpm -qa | grep kernel-devel
当前内核版本和 kernel-devel 版本一致。