钢镚儿的开发日志
耐得住寂寞 方能一鸣惊人

Ubuntu 26.04 下 RTX 5060 驱动踩坑记:从 No devices were found 到 open 开源内核模块避坑指南

2026年08月14日
开发

摘要:在 Ubuntu 26.04 系统上安装或更新 NVIDIA 显卡驱动时,许多搭载 Blackwell 架构(如 RTX 5060 / GB206
芯片)的用户会遇到一个极其隐蔽的问题:驱动安装成功,内核模块已加载,但 nvidia-smi 始终提示 No devices were
found。本文将还原整个排查过程,深入剖析其背后的技术原因,并提供完整的避坑解决方案。

一、 初始故障:包文件冲突与设备识别失败

1.包管理器报错(dpkg 包冲突)

在尝试更新/卸载驱动时,系统抛出了文件覆盖冲突:

1
2
3
4
5
6
7
dpkg: 处理归档 /var/cache/apt/archives/libnvidia-gl-595...deb (--unpack)时出错:
trying to overwrite '/usr/lib/x86_64-linux-gnu/libnvidia-egl-wayland2.so.1.0.1',
which is also in package libnvidia-egl-wayland21:amd64

dpkg: 处理归档 /var/cache/apt/archives/libnvidia-cfg1-595...deb (--unpack)时出错:
trying to overwrite '/usr/lib/x86_64-linux-gnu/libnvidia-cfg.so.1',
which is also in package libnvidia-cfg1:amd64 (610.57.04-1ubuntu1)

2. 硬件无法识别(No devices were found)

  • 在通过强制覆盖修复依赖并重启系统后,运行显卡工具:nvidia-smi 显示 No devices were found

  • 但进一步使用 lsmod 和 lspci 检查发现: 内核模块已加载:lsmod | grep nvidia 能正常显示 nvidia、nvidia_uvm、nvidia_drm
    等模块。

  • 硬件在总线上可用:

    1
    2
    $ lspci | grep -i nvidia
    01:00.0 VGA compatible controller: NVIDIA Corporation GB206 [GeForce RTX 5060] (rev a1)

这就是典型而矛盾的现象:硬件存在且内核模块已加载,但用户空间驱动无法通信初始化。

二、 关键排查:

通过 dmesg 锁定病灶为了获取内核层面的初始化细节,运行命令查看内核诊断日志:

1
sudo dmesg | grep -i nvidia

在几百行的日志中,重复出现了这样一条致命错误:

1
2
3
[ 3.928134] NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:2d05)
NVRM: installed in this system requires use of the NVIDIA open kernel modules.
[ 3.930482] [drm:nv_drm_dev_load [nvidia_drm]] *ERROR* [nvidia-drm] Failed to allocate NvKmsKapiDevice

关键信息就是这句:requires use of the NVIDIA open kernel modules.

三、 深挖技术根源

为什么闭源版 nvidia-driver-610不能用?

1.显卡架构的世代差异

显卡架构世代 代表芯片/显卡 内核驱动支持策略
旧架构 (Turing/Ampere/Ada) RTX 20/30/40 系列 同时支持传统闭源内核模块与-open 开源内核模块
新架构 (Blackwell) RTX 50 系列 (如 RTX 5060 / GB206) 硬件/固件层面硬性要求:必须使用 -open 开源内核模块

2.硬件演进原理:GSP (GPU System Processor)

从 Blackwell 架构(RTX 50 系列)开始,NVIDIA 完成了底层架构的升级:

逻辑硬件化/固件化:

NVIDIA 将大量的 GPU 管理逻辑(如电源管理、内存分配、硬件调度)转移到了 GPU 芯片内部的 RISC-V 协处理器(GSP)中运行。

内核通道轻量化:

由于大部分核心逻辑已由 GSP 固件承担,操作系统侧的 Linux 内核驱动只需要做一个轻量级的通信通道。

全面转向 Open 模块:

NVIDIA 借此将 Linux 内核驱动全面开源(开源为 nvidia-open),同时在 Blackwell 架构芯片中彻底废弃了原有的老旧闭源内核通道代码。

因此,当安装传统闭源驱动(如 nvidia-driver-610)时,闭源内核模块无法与 RTX 5060 的固件完成握手,导致设备初始化失败,抛出 No
devices were found。

四、完整解决方案

解决方案非常明确:彻底清洗闭源驱动,安装带 -open 后缀的开源内核驱动包。

步骤 1:修复 dpkg 文件冲突并彻底清理旧驱动

1
2
3
4
5
6
7
8
#1. 强制覆盖解包有问题的 residual 依赖
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libnvidia-gl-*.deb
sudo dpkg -i --force-overwrite /var/cache/apt/archives/libnvidia-cfg1-*.deb
sudo apt-get install -f
# 2. 彻底清除所有闭源和残余驱动包
sudo apt purge "*nvidia*" "*libnvidia*"
sudo apt autoremove --purge
sudo apt clean

步骤 2:安装带有 -open 后缀的开源驱动

1
2
3
4
5
# 添加官方 PPA 软件源
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
# 关键:注意必须安装带有 -open 的驱动包
sudo apt install nvidia-driver-610-open nvidia-utils-610

步骤 3:重启并验证

1
sudo reboot

重启后重新运行 nvidia-smi,显卡驱动正常加载,显卡型号显示为 NVIDIA GeForce RTX 5060,问题完美解决!

五、经验总结

dpkg 文件冲突:出现 trying to overwrite… 时,可优先使用 dpkg -i –force-overwrite 强制写入覆盖,再通过 apt install -f 修复依赖树。

RTX 50 系列避坑指南:无论是 RTX 5060、5070 还是 5080/5090,在 Linux 系统下安装驱动时,务必认准 nvidia-driver-xxx-open 包。

如果喜欢这篇文章,可以给作者评个份哦~

转载本站文章请注明作者“钢镚儿”及原文出处。