ubuntu 安装nvidia显卡驱动,提示no device were found(爆肝两天找到适合不同人的解决办法)
本文只是解决问题,不教安装,安装的话我推荐两个链接,你看他俩就完全够了:
Ubuntu20.04系统配置Pytorch环境(GPU版)_ubuntu20.04 pytorch-CSDN博客
Ubuntu22.04安装显卡驱动(高速、避错版)-CSDN博客
本文以下内容属于排查问题,不影响你的安装使用,当你完全找到问题所在,再具体操作即可
sudo apt remove --purge 'nvidia-*'
sudo apt autoremove
sudo apt update
这里放一个完全删除驱动的办法,如果你找到问题了,可以用这个
检查内核模块是否加载
- 打开终端,运行以下命令查看是否存在 NVIDIA 模块:
lsmod | grep nvidia
-
- 如果没有输出,说明 NVIDIA 内核模块未加载。
- 若模块未加载,尝试手动加载:
sudo modprobe nvidia
sudo modprobe nvidia_uvm
sudo modprobe nvidia_drm
- 再次运行
lsmod | grep nvidia
,查看模块是否成功加载。若仍未加载成功,继续以下步骤排查。 - smod | grep nvidia nvidia_uvm 2084864 0 nvidia_drm 131072 0 nvidia_modeset 1548288 1 nvidia_drm nvidia 89858048 2 nvidia_uvm,nvidia_modeset drm_ttm_helper 16384 2 nvidia_drm,xe video 77824 4 asus_wmi,xe,i915,nvidia_modeset这就是成功加载了
安装 DKMS 及相关工具(上一步骤没问题跳过此步骤)
DKMS(Dynamic Kernel Module Support)可用于自动构建和管理内核模块。
- 安装 DKMS 和内核开发工具:
sudo apt install dkms build-essential linux-headers-$(uname -r)
sudo dkms install -m nvidia -v 570.124.04 -k $(uname -r)
sudo ln -sf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.570.124.04 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.570.124.04输出这个就没问题的
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
sudo reboot
build-essential
提供编译内核模块所需的基本工具。linux-headers-$(uname -r)
安装与当前内核版本对应的内核头文件,确保驱动模块能正确编译。检查驱动模块是不是在
- 检查驱动模块源文件是否存在(找你的驱动版本哈,附加驱动安装不知道版本往下看,有个查内核日志,里面告诉你安的具体版本):
-
ls /usr/src/nvidia-570.124.04
-
- 如果不存在该目录,可能驱动安装时未正确放置源文件,需重新安装驱动。
- ommon dkms.conf Makefile nvidia-modeset patches conftest.sh header-presence-tests.mk nvidia nvidia-peermem count-lines.mk Kbuild nvidia-drm nvidia-uvm输出这个就是成功加载了
- 重新安装驱动模块:
- 此命令会为当前内核版本重新安装指定版本的 NVIDIA 驱动模块。
- 检查 NVIDIA 管理库文件是否存在:
bash
ls /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.*
若输出类似libnvidia-ml.so.570.124.04
,说明库文件已安装;若无,需重新安装驱动。- 尝试更新
nvidia-smi
的符号链接: -
检查 Nouveau 驱动冲突
- 1. 确认 Nouveau 驱动是否已禁用:
-
lsmod | grep nouveau
- 若有输出,说明 Nouveau 驱动仍在加载,需禁用。
- 2. 编辑配置文件禁用 Nouveau 驱动:
- 3. 在文件中添加以下内容:
-
- 保存并关闭文件。
- 4. 更新初始内存盘:
- 5. 重启系统:
检查安全启动
查看安全启动状态:
-
mokutil --sb-state
- 如果输出显示
SecureBoot enabled
,表示安全启动已启用。由于 NVIDIA 驱动模块未经过微软签名,在安全启动开启时可能无法加载。
- 如果输出显示
- 进入主板 BIOS/UEFI 界面(通常在开机时按 Del、F2 等按键),找到 Security 或 Boot 相关选项,将 Secure Boot 设为 Disabled(关闭)。
- 这里每个人的bios都是不一样的,具体怎么关网上也是各抒己见,建议去bios多试一试,然回来查看一下状态是不是关了,反正也不会影响其他
- 保存设置并重启系统。
查看内核日志(最最最最关键的一步!!!能让你找到具体原因!!!)
通过查看内核日志,定位驱动加载失败的具体原因:
sudo journalctl -k | grep -i 'nvidia|drm'
根据日志中的错误信息进一步排查和解决问题。例如:
如果提示缺少依赖库,安装相应的依赖库。 如果是模块签名相关问题,确保安全启动已关闭。
找到日志,打开会吧,然后复制里面内容给豆包,问她哪里有问题
下面是我问了豆包之后告诉我的错误,你就按照我上面的步骤来吧!!!!
错误信息分析
- 内核污染问题
[ 60.791610] nvidia: loading out-of-tree module taints kernel.
[ 60.791619] nvidia: module license 'NVIDIA' taints kernel.
[ 60.791621] nvidia: module verification failed: signature and/or required key missing - tainting kernel
这表明内核检测到加载的 NVIDIA 模块没有经过签名认证,属于 “外部模块”,从而对内核造成了污染。通常,这是因为系统开启了安全启动(Secure Boot),而 NVIDIA 驱动模块没有微软的签名,所以无法通过验证。
- GPU 需使用开源内核模块
[ 62.139677] NVRM: The NVIDIA GPU 0000:02:00.0 (PCI ID: 10de:2c02)
NVRM: installed in this system requires use of the NVIDIA open kernel modules.
此信息显示你的 GPU 需要使用 NVIDIA 的开源内核模块,但当前加载的可能并非这类模块,这或许是驱动版本和内核不兼容所致。
- 设备注册失败
[ 62.141414] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000200] Failed to allocate NvKmsKapiDevice
[ 62.141947] [drm:nv_drm_register_drm_device [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000200] Failed to register device
这意味着 NVIDIA DRM(Direct Rendering Manager)设备注册失败,无法正常分配相关资源,这和前面提到的驱动不兼容以及内核污染问题存在关联。
以上三个问题我主要是第一个,安全boot没关,第二个是要装开源的那个版本(我之前装的专有的,因为网上推荐和使用终端查询,都是告诉你别装那个开源的)
解决以上问题
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.124.04 Driver Version: 570.124.04 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| 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 5080 Off | 00000000:02:00.0 Off | N/A |
| 0% 32C P8 12W / 360W | 15MiB / 16303MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1830 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------------------+
我的nvidia-smi也能输出了没问题了
完成上述步骤后,再次打开终端运行 nvidia-smi
,查看是否能正常识别显卡设备。
本文地址:https://www.vps345.com/10850.html