尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ubuntu 22.04 + RTX 5090:`nvidia-smi` 显示 `No devices were found` 的排查与修复

Ubuntu 22.04 + RTX 5090:`nvidia-smi` 显示 `No devices were found` 的排查与修复 # Ubuntu 22.04 RTX 5090nvidia-smi 显示 No devices were found 的排查与修复 ## 问题现象 在 Ubuntu 22.04 上安装 NVIDIA 595.84 驱动后执行 bash nvidia-smi输出No devices were found虽然lspci能识别显卡NVIDIA 内核模块看似也已经加载但 GPU 无法被正常初始化。本文记录一次 RTX 5090 的实际排查过程。核心结论是RTX 5090 必须使用 NVIDIA Open Kernel Modules开源内核模块而系统实际加载了同版本闭源内核模块。环境信息OS: Ubuntu 22.04 Kernel: 6.8.0-136-generic GPU: NVIDIA GeForce RTX 5090 Driver: 595.84确认显卡已被 PCIe 总线识别lspci -nnk -s 01:00.0示例输出01:00.0 VGA compatible controller: NVIDIA Corporation Device 2b85 Kernel driver in use: nvidia这说明不是机器没有识别到显卡而是驱动初始化阶段失败。关键日志查看 NVIDIA 内核日志sudo dmesg | grep -iE nvrm|nvidia|gsp|rm_init|xid本例中最重要的报错如下NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:2b85) NVRM: installed in this system requires use of the NVIDIA open kernel modules. NVRM: GPU 0000:01:00.0: RmInitAdapter failed! (0x22:0x56:1017) NVRM: GPU 0000:01:00.0: rm_init_adapter failed, device minor number 0日志已经直接指出原因当前 GPU 要求使用NVIDIA Open Kernel Modules。后续的RmInitAdapter failed和nvidia-smi无法识别设备都是这个问题造成的连锁反应。Secure Boot 也应检查但本例中 Secure Boot 已关闭不是签名校验导致的问题mokutil --sb-state容易踩坑装了 open 驱动不代表正在使用 open 模块起初检查包状态时系统已经安装了 open 驱动dpkg -l | grep -E nvidia-(driver|dkms|kernel-source)-595可以看到nvidia-driver-595-open nvidia-dkms-595-open nvidia-kernel-source-595-open但继续检查实际加载的模块后发现问题modinfo -F filename nvidia modinfo -F license nvidia输出为/lib/modules/6.8.0-136-generic/kernel/nvidia-595/nvidia.ko NVIDIA其中kernel/nvidia-595/nvidia.ko是闭源模块。进一步检查发现当前内核里同时存在两份同版本模块/lib/modules/6.8.0-136-generic/kernel/nvidia-595/nvidia.ko /lib/modules/6.8.0-136-generic/kernel/nvidia-595-open/nvidia.ko也就是说open 驱动包已经安装但闭源模块包仍然存在并被优先加载。DKMS 的以下警告也是这种状态的佐证WARNING! Diff between built and installed module!修复方案1. 安装 open 驱动如果尚未安装sudo apt update sudo apt install nvidia-driver-595-open2. 安装当前内核对应的 open 模块先查看当前内核uname -r本例输出为6.8.0-136-generic因此安装对应模块sudo apt install linux-modules-nvidia-595-open-6.8.0-136-generic如果使用 Ubuntu 22.04 的 HWE 内核建议额外安装 open 模块的 HWE 元包确保以后内核升级时仍自动选择 open 模块sudo apt install linux-modules-nvidia-595-open-generic-hwe-22.04该命令可能会同时安装较新的 HWE 内核这是正常现象。3. 移除当前内核的闭源 NVIDIA 模块这是修复的关键步骤。仅移除闭源 NVIDIA 内核模块包保留nvidia-driver-595-opensudo apt purge linux-modules-nvidia-595-6.8.0-136-generic \ linux-modules-nvidia-595-generic-hwe-22.04如果你的uname -r不是6.8.0-136-generic请将命令中的内核版本替换为实际值例如sudo apt purge linux-modules-nvidia-595-$(uname -r)执行前请仔细阅读 apt 的计划确认它只移除linux-modules-nvidia-595...包不会移除 Linux 内核、nvidia-driver-595-open或桌面环境。4. 更新模块依赖并重启sudo depmod -a $(uname -r) sudo update-initramfs -u -k $(uname -r) sudo reboot重启后验证modinfo -F filename nvidia modinfo -F license nvidia nvidia-smi预期结果modinfo -F filename nvidia应指向nvidia-595-open/nvidia.ko不应再加载nvidia-595/nvidia.konvidia-smi应显示 RTX 5090、驱动版本与 CUDA 版本总结nvidia-smi显示No devices were found并不一定是显卡损坏也不一定是驱动没有安装。本例的根因是open 驱动包与闭源内核模块混装导致闭源模块被加载而 RTX 5090 要求使用 open kernel modules。处理原则是安装nvidia-driver-595-open安装与当前内核匹配的linux-modules-nvidia-595-open移除同版本闭源linux-modules-nvidia-595更新 initramfs 并重启
返回列表