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 管理库文件是否存在:
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
AI生成项目
这表明内核检测到加载的 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.
AI生成项目
此信息显示你的 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
AI生成项目
这意味着 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,查看是否能正常识别显卡设备。
————————————————
版权声明:本文为CSDN博主「cwt1998916」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cwt1998916/article/details/147468764