Linux系统无法载入nvidia-smi驱动

本文详细解析了Linux系统中NVIDIA驱动加载失败的原因,表现为nvidia-smi指令失效,modprobe错误,以及dmesg显示内核版本不匹配的警告。提供了解决方案,包括检查和调整系统内核版本,以及使用dkms安装特定版本的NVIDIA驱动。

问题描述

系统重启后,nvidia-smi指令无法正常使用,发现是nvidia驱动的问题。多次尝试重装不同版本驱动,仍然没有用。

问题表现

  1. 执行 nvidia-smi 显示: NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running;
  2. 执行 sudo modprobe nvidia 显示: modprobe: ERROR: could not insert ‘nvidia_384’: Exec format error;
  3. 执行 dmesg 显示: 很长的一段内容,末尾处是 nvidia: version magic '4.4.0-138-generic SMP mod_unload modversions ’ should be '4.4.0-138-generic SMP mod_unload modversions retpoline '之类的红色提示文字。

出错原因

当前使用的系统内核的BUG,需要对系统内核进行更新或降级。

解决方案

首先查看自己当前的Linux系统内核:

uname -r

结果会显示当前内核版本号。如果是116及以上的版本,可能需要对当前linux内核进行降级。具体操作步骤如下:

【第1步】搜索系统内核

sudo dpkg --get-selections | grep linux

【第2步】查看是否有低版本内核

如果有低版本内核,那么卸载高版本内核后会自动退回低版本内核;

如果没有低版本内核,那么卸载高版本内核后会回到BIOS界面!

如果没有低版本内核,那么可以安装一个112的

sudo apt-get install linux-image-4.4.0-112-generic

【第3步】卸载高版本内核

sudo apt-get remove linux-image-4.4.0-116-generic

【第4步】重启linux系统

sudo reboot

【第5步】安装和内核版本对应的headers

可不做,后面安装Nvidia依赖也会装一次。

sudo apt-get install linux-headers-$(uname -r)

然后再次uname -r查看内核版本,发现退回了112了。

上述步骤都操作完之后,先尝试一下nvidia-smi指令是否已经能够正常使用了,如果不行,按照正常步骤重装nvidia-smi驱动就可以了

其他方法

最近又遇到了上述问题,发现以上操作有点复杂,然后又找到了另一种方案:
【步骤1】执行命令:sudo apt-get install dkms

【步骤2】执行命令:sudo dkms install -m nvidia -v XXX.XX
其中,XXX.XX为NVIDIA的版本号,可进入/usr/src目录中,nvidia文件夹的后缀就是其版本号。

参考文献

1、《linux kernel bug 导致无法载入 nvidia 驱动》
2、《在ubuntu16.04上安装nvidia驱动》
3、《无法连接NVIDIA驱动:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver》

其他博客

【深度学习论文翻译】Learning Spatiotemporal Features with 3D Convolutional Networks全文对照翻译
【深度学习论文翻译】Weakly Supervised Action Localization by Sparse Temporal Pooling Network全文翻译

<think>嗯,用户遇到了在Linux系统中找不到nvidia-smi的问题,需要解决如何安装或配置这个工具。首先,我得回想一下nvidia-smi通常是怎么来的。nvidia-smiNVIDIA显卡驱动的一部分,所以用户可能没有正确安装驱动。这时候需要确认系统是否安装了正确的NVIDIA驱动。 用户可能使用的是WSL2,因为在引用中提到了cp命令将nvidia-smi复制到指定位置。WSL2的情况比较特殊,因为它需要Windows宿主机的驱动支持,所以可能需要检查Windows那边的NVIDIA驱动是否安装好了。另外,在WSL2中可能需要手动复制nvidia-smi文件并设置权限,如引用[1]所示。这时候应该建议用户按照引用中的步骤操作,复制文件并赋予执行权限。 如果用户不是在WSL2环境,而是在普通的Linux系统,比如Ubuntu,那么需要指导他们安装NVIDIA驱动。常用的方法是通过系统自带的软件源安装,比如使用apt命令安装nvidia-driver或者nvidia-utils包。或者使用NVIDIA官网的.run文件手动安装。安装完成后,nvidia-smi应该就能用了。 另外,用户可能已经安装了驱动,但路径不在环境变量里,或者权限不够。这时候需要检查/usr/bin或者/usr/local/bin是否有nvidia-smi的符号链接,或者检查可执行权限。如果找不到,可能需要通过find命令搜索nvidia-smi的位置,然后创建符号链接或者添加到PATH环境变量中。 还有可能用户安装的是开源驱动nouveau,这时候nvidia-smi不会存在。需要确认用户是否安装了专有的NVIDIA驱动。可以通过lspci查看显卡信息,或者lsmod检查加载的驱动模块。 最后,安装完成后,用户可能需要运行nvidia-smi来验证是否成功,如果出现GPU信息,则说明安装正确。如果还有问题,可能需要查看日志文件,比如/var/log/nvidia-installer.log,或者使用dmesg检查内核信息。另外,引用[3]提到的watch命令可以用来动态监控GPU状态,用户可能也会对这个感兴趣。</think>在Linux系统中,`nvidia-smi`工具属于NVIDIA显卡驱动的组成部分。以下是安装和配置的详细步骤: ### 一、常规Linux系统安装方法 1. **安装NVIDIA官方驱动** - 通过软件源安装: ```bash sudo apt update sudo apt install nvidia-driver-535 # 以Ubuntu为例,版本号根据系统提示选择 ``` - 或使用官方安装包: ```bash chmod +x NVIDIA-Linux-x86_64-535.161.07.run sudo ./NVIDIA-Linux-x86_64-535.161.07.run ``` 2. **验证安装** ```bash nvidia-smi # 正常应显示GPU状态表格[^2] ``` ### 二、WSL2特殊配置方法 当在Windows Subsystem for Linux 2中使用时: 1. **Windows宿主机** - 确保已安装[NVIDIA GeForce Game Ready驱动](https://www.nvidia.com/Download/index.aspx) 2. **WSL2子系统** ```bash sudo cp /usr/lib/wsl/lib/nvidia-smi /usr/bin/ sudo chmod +x /usr/bin/nvidia-smi ``` ### 三、常见问题排查 | 现象 | 解决方案 | |------|----------| | 报错`command not found` | 检查`/usr/bin/nvidia-smi`是否存在,确认驱动安装完成 | | 显示`No devices found` | 确认GPU型号支持当前驱动版本,检查PCIe连接状态 | | 权限不足 | 执行`sudo chmod a+rx /usr/bin/nvidia-smi` | ### 四、高级使用技巧 动态监控GPU状态: ```bash watch -n 1 nvidia-smi # 每秒刷新一次GPU信息[^3] ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值