服务器 Unbuntu重启后,nvidia-smi 不能使用

当Ubuntu服务器自动升级内核后,可能导致NVIDIA驱动不兼容,从而使得NVIDIA-SMI命令失效。解决方法包括降级内核到匹配的版本,使用dkms安装对应的NVIDIA驱动。具体步骤包括查看grub版本,选择旧内核,修改GRUB_DEFAULT配置,更新grub设置并重启服务器。如果需要,还可以删除不再使用的内核版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

用来深度学习的服务器重启了,结果会导致nvidia-smi 失效,会出现这样的错误:

NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

原因

Ubuntu 重启后会升级内核,升级后的内核与之前 的nvidia驱动版本不对应

解决方法

把内核降低到原来的版本,找到之前内核与之匹配的nvidia 驱动版本,

ll /usr/src/


图片最下面nvidia-510.60.02 就是之前nvidia 驱动,

然后执行

sudo apt install dkms
sudo dkms install -m nvidia -v 510.60.02

但是往往会执行失败,如果成功的话,就不会出现我们刚开始的问题了。
错误如下

File: /usr/src/nvidia-510.60.02/dkms.conf does not exist.

接下来才是重点:

降低内核版本

  1. 首先查看自己的grub版本
grub-install --version

看看(GRUB)之后的大版本是2.00以后还是2.00以前 ,后面操作会有不同

  1. 查看自己的内核版本
uname -r

我的是 5.15.0-58-generic

然后查看内核版本有哪些

grep menuentry /boot/grub/grub.cfg

然后找menuentry

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-229d416d-6318-4310-a1b4-b5b7eb2faf88' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88' {
	menuentry 'Ubuntu, with Linux 5.15.0-58-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-58-generic-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88' {
	menuentry 'Ubuntu, with Linux 5.15.0-58-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-58-generic-recovery-229d416d-6318-4310-a1b4-b5b7eb2faf88' {
	menuentry 'Ubuntu, with Linux 5.15.0-25-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-25-generic-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88' {
	menuentry 'Ubuntu, with Linux 5.15.0-25-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-25-generic-recovery-229d416d-6318-4310-a1b4-b5b7eb2faf88' {

一共四个,很大可能就是 版本低的5.15.0-25 升级到了5.15.0-58 ,所以我们要降到 25

  1. 找到自己想换回的内核版本

这里我们换到 25,这里有两个 ,注意我们不看 (recovery mode)

复制上面信息中menuentry之后的单引号内的字符串,比如我的是 Ubuntu, with Linux 5.15.0-25-generic

  1. 修改grub

在终端输入 sudo vim /etc/default/grub
将第一个 GRUB_DEFAULT=0

修改为刚才复制的内容
GRUB_DEFAULT ="Ubuntu, with Linux 5.15.0-25-generic"
注意加双引号

  1. 更新grub设置

终端输入
sudo update-grub
出现以下错误

Warning: Please don’t use old title Ubuntu, with Linux 5.15.0-25-generic' for GRUB_DEFAULT, use Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-25-generic’ (for versions before 2.00) or `gnulinux-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88>gnulinux-5.15.0-25-generic-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88’ (for 2.00 or later)

则根据之前看到的grub版本,如果大于等于2.00,则返回第二步中 要替换的内核版本 第三个单引号内的字符串复制粘贴 (其实也就是上述警告的or 的引号内容) 否则把 use后面单引号的内容复制粘贴。
也就是说一定要重新修改一次grub,就是
sudo vim /etc/default/grub
GRUB_DEFAULT ="Ubuntu, with Linux 5.15.0-25-generic" 替换为
GRUB_DEFAULT ="gnulinux-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88>gnulinux-5.15.0-25-generic-advanced-229d416d-6318-4310-a1b4-b5b7eb2faf88"

  1. 再次输入 sudo update-grub
    此时应该没有warning
  2. 重启
    sudo reboot
    重启会需要一定的时间
  3. 重启成功后,查看是否降低内核成功
    uname -r
    如果已经变成你想要改的内核版本,则继续,否则检查是否忘了sudo update-grub或者grub修改错误

此时nvidia的命令就已经可以使用了。

可以到这里就结束啦,目前我使用的没啥问题

如果还想要删除更新的内核

dpkg --get-selections | grep linux-image
linux-image-5.15.0-25-generic			install
linux-image-5.15.0-56-generic			deinstall
linux-image-5.15.0-57-generic			deinstall
linux-image-5.15.0-58-generic			install
linux-image-generic-hwe-22.04			install

自己自行搜索查看相关内容

参考

https://blog.youkuaiyun.com/HelloJinYe/article/details/106787295
https://blog.youkuaiyun.com/Terrence_Z/article/details/121921389

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值