欢迎光临
我们一直在努力

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,查看是否能正常识别显卡设备。  

    赞(0)
    未经允许不得转载:171主机测评 » ubuntu 安装nvidia显卡驱动,提示no device were found(爆肝两天找到适合不同人的解决办法)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址