摘要:在 Ubuntu 26.04 系统上安装或更新 NVIDIA 显卡驱动时,许多搭载 Blackwell 架构(如 RTX 5060 / GB206
芯片)的用户会遇到一个极其隐蔽的问题:驱动安装成功,内核模块已加载,但 nvidia-smi 始终提示 No devices were
found。本文将还原整个排查过程,深入剖析其背后的技术原因,并提供完整的避坑解决方案。
在尝试更新/卸载驱动时,系统抛出了文件覆盖冲突:
1 | dpkg: 处理归档 /var/cache/apt/archives/libnvidia-gl-595...deb (--unpack)时出错: |
在通过强制覆盖修复依赖并重启系统后,运行显卡工具:nvidia-smi 显示 No devices were found
但进一步使用 lsmod 和 lspci 检查发现: 内核模块已加载:lsmod | grep nvidia 能正常显示 nvidia、nvidia_uvm、nvidia_drm
等模块。
硬件在总线上可用:
1 | lspci | grep -i nvidia |
这就是典型而矛盾的现象:硬件存在且内核模块已加载,但用户空间驱动无法通信初始化。
通过 dmesg 锁定病灶为了获取内核层面的初始化细节,运行命令查看内核诊断日志:
1 | sudo dmesg | grep -i nvidia |
在几百行的日志中,重复出现了这样一条致命错误:
1 | [ 3.928134] NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:2d05) |
关键信息就是这句:requires use of the NVIDIA open kernel modules.
为什么闭源版 nvidia-driver-610不能用?
| 显卡架构世代 | 代表芯片/显卡 | 内核驱动支持策略 |
|---|---|---|
| 旧架构 (Turing/Ampere/Ada) | RTX 20/30/40 系列 | 同时支持传统闭源内核模块与-open 开源内核模块 |
| 新架构 (Blackwell) | RTX 50 系列 (如 RTX 5060 / GB206) | 硬件/固件层面硬性要求:必须使用 -open 开源内核模块 |
从 Blackwell 架构(RTX 50 系列)开始,NVIDIA 完成了底层架构的升级:
NVIDIA 将大量的 GPU 管理逻辑(如电源管理、内存分配、硬件调度)转移到了 GPU 芯片内部的 RISC-V 协处理器(GSP)中运行。
由于大部分核心逻辑已由 GSP 固件承担,操作系统侧的 Linux 内核驱动只需要做一个轻量级的通信通道。
NVIDIA 借此将 Linux 内核驱动全面开源(开源为 nvidia-open),同时在 Blackwell 架构芯片中彻底废弃了原有的老旧闭源内核通道代码。
因此,当安装传统闭源驱动(如 nvidia-driver-610)时,闭源内核模块无法与 RTX 5060 的固件完成握手,导致设备初始化失败,抛出 No
devices were found。
解决方案非常明确:彻底清洗闭源驱动,安装带 -open 后缀的开源内核驱动包。
1 | 1. 强制覆盖解包有问题的 residual 依赖 |
步骤 2:安装带有 -open 后缀的开源驱动
1 | 添加官方 PPA 软件源 |
步骤 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 包。