老铁爱金衫 2025-09-18 00:15 采纳率: 98.3%
浏览 14
已采纳

Ubuntu下nvidia-smi命令未找到

在Ubuntu系统中执行 `nvidia-smi` 命令时提示“command not found”,是常见的NVIDIA驱动相关问题。该问题通常由未正确安装NVIDIA显卡驱动或CUDA工具包引起,也可能是驱动安装后未加载内核模块或环境变量未配置所致。即使系统已识别GPU硬件(可通过 `lspci | grep -i nvidia` 确认),若未安装官方驱动或使用开源nouveau驱动,`nvidia-smi` 仍不可用。此外,手动编译驱动失败、DKMS未注册或Secure Boot干扰也可能导致命令缺失。需通过官方.run文件或APT方式重新安装适配版本的NVIDIA驱动,并验证`/usr/bin/nvidia-smi`是否存在及内核模块`nvidia`是否正常加载。
  • 写回答

1条回答 默认 最新

  • 马迪姐 2025-09-18 00:16
    关注

    1. 问题现象与初步诊断

    在Ubuntu系统中执行 nvidia-smi 命令时提示“command not found”,这是NVIDIA GPU环境部署中的典型问题。该错误表明系统无法找到 NVIDIA 系统管理接口(System Management Interface)工具,通常位于 /usr/bin/nvidia-smi 路径下。首先应确认GPU硬件是否被系统识别:

    lspci | grep -i nvidia

    若输出包含NVIDIA设备信息,则说明PCIe总线已检测到显卡;否则需检查物理连接或BIOS设置。即便硬件可见,仍可能因未安装官方驱动而使用开源的 nouveau 驱动,后者不支持 nvidia-smi

    2. 根本原因分类分析

    导致 nvidia-smi 缺失的原因具有多层性,可归纳为以下几类:

    • 驱动未安装:未通过官方.run文件或APT包管理器安装NVIDIA专有驱动。
    • CUDA Toolkit误装:仅安装CUDA开发套件但未包含底层驱动组件。
    • 内核模块未加载:驱动安装失败或DKMS未成功注册,导致nvidia模块未编译进当前内核。
    • Secure Boot干扰:启用安全启动后,第三方内核模块(如NVIDIA驱动)会被阻止加载。
    • 环境变量或路径异常:虽然二进制存在,但PATH未包含其所在目录。
    • 驱动版本不兼容:GPU架构与驱动版本不匹配(如Ampere卡使用旧版驱动)。
    • 手动编译中断:使用.run脚本安装时被中断,造成部分文件未写入。
    • 多驱动冲突:nouveau与nvidia驱动共存引发资源抢占。

    3. 深度排查流程图

    graph TD
        A[执行 nvidia-smi 报 command not found] --> B{lspci | grep -i nvidia 是否有输出?}
        B -- 否 --> C[检查硬件连接/BISO/UEFI设置]
        B -- 是 --> D{是否禁用 nouveau?}
        D -- 否 --> E[编辑 /etc/modprobe.d/blacklist-nouveau.conf]
        D -- 是 --> F{尝试 locate nvidia-smi 是否存在?}
        F -- 否 --> G[重新安装NVIDIA驱动]
        F -- 是 --> H[检查 /usr/bin/nvidia-smi 权限与PATH]
        G --> I[使用 apt 或 .run 安装适配驱动]
        I --> J{modprobe nvidia 是否成功?}
        J -- 否 --> K[处理 Secure Boot / DKMS 注册]
        J -- 是 --> L[nvidia-smi 应可正常运行]
    

    4. 解决方案实施步骤

    按照由浅入深原则,推荐以下操作序列:

    1. 确认GPU存在:
      lspci | grep -i nvidia
    2. 禁用nouveau驱动:
      创建 /etc/modprobe.d/blacklist-nouveau.conf 内容如下:
      blacklist nouveau
      options nouveau modeset=0
      随后更新initramfs:sudo update-initramfs -u
    3. 安装适配驱动:
      # 方法一:使用Ubuntu官方仓库
      sudo ubuntu-drivers autoinstall
      
      # 方法二:指定版本安装
      sudo apt install nvidia-driver-535
      
      # 方法三:使用NVIDIA官方.run文件
      chmod +x NVIDIA-Linux-x86_64-*.run
      sudo ./NVIDIA-Linux-x86_64-*.run
    4. 验证驱动模块加载:
      lsmod | grep nvidia
    5. 检查二进制是否存在:
      ls /usr/bin/nvidia-smi
    6. 重启系统并测试命令:
      nvidia-smi
    7. 若仍失败,检查Secure Boot状态:
      mokutil --sb-state
    8. 必要时禁用Secure Boot或签署驱动模块。
    9. 查看DKMS状态:
      dkms status
    10. 确保内核头文件已安装:
      sudo apt install linux-headers-$(uname -r)

    5. 验证与监控表

    检查项命令预期输出异常处理建议
    GPU硬件识别lspci | grep -i nvidia显示NVIDIA设备型号检查PCIe插槽、电源、BIOS初始化
    nouveau是否禁用lsmod | grep nouveau无输出完善blacklist配置并重build initramfs
    nvidia模块加载lsmod | grep nvidia显示nvidia及相关模块手动modprobe或重装驱动
    nvidia-smi文件存在which nvidia-smi/usr/bin/nvidia-smi重新安装驱动包
    DKMS注册状态dkms status显示nvidia及版本运行nvidia-installer --update-dkms
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月18日