ubuntu如何进行切换内核版本全教程

环境:ubuntu 16.04 server

服务器重新启动后,内核可能被自动更新,这就会造成开机后服务器有些服务无法正常使用。例如:

查看显卡状态: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.

造成报错原因:内核版本太高,与NVIDIA驱动不匹配。因为NVIDIA驱动是在内核版本低的时候安装的。

这时的解决方法就是切换回来低版本内核就行。

如何切换ubuntu的内核版本呢?介绍两种方法。

1. 如果服务器在身边,可以手动启动服务器的话就可以选择这种方法

开机进入

机进入grub引导界面,选择Advanced options for Ubuntu::

选择Advanced options for Ubuntu后,进入其子菜单,如下图所示:

上图来自:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the lat_hw@c14h10的博客-CSDN博客

选择一个低版本的内核进入系统。

再次运行nvidia-smi就可以了

2. 大部分服务器都是不在身边的,都是使用远程连接操作的,无法做到手动重启并桌面设置以上操作。这时可以使用第二种方法。

(1)首先查看当前内核版本:

uname -r

(2)查看服务器启动内核的顺序

grep menuentry /boot/grub/grub.cfg

红框内就是ubuntu系统目前所拥有的内核版本与启动顺序,menuentry就是每一条,记住这个顺序,下面要用到。

(3)比如我们要切换成4.15.0-54-generic这个,它在上图中的启动顺序是第七个。

终端运行命令 : sudo gedit /etc/default/grub

红框内GRUB_DEFAULT=0 修改为 GRUB_DEFAULT="1> 7"。

注意:> 与7之间有个空格

保存并退出。

(4)更新grub

sudo update-grub

(5)重启服务器

sudo shutdown -r now

(6)重启后查看内核版本(uname -r)已修改成4.15.0-54-generic了。再运行nvidia-smi就正常了。

下面说可能出现的问题:

ubuntu自动更新内核的过程中,也会自动删除掉一些内核旧版本。因此你可能切换不到与NVIDIA驱动匹配的版本了。

能切换到的内核版本只能是步骤(2)中内核启动顺序中的内核版本。其他版本切不到。

也可以运行命令:

dpkg -l | tail -n +6| grep -E 'linux-image-[0-9]+'| grep -Fv $(uname -r)

列出不包括当前内核版本的其它所有内核版本:

输出的内容中可能会包括内核映像的如下三种状态(红框中):

  • rc:表示已经被移除
  • ii:表示符合移除条件(可移除)
  • iU:已进入 apt 安装队列,但还未被安装(不可移除)

如果要移除状态为 ii 的「linux-image-4.15.0-88-generic」内核,可以使用如下命令:

sudo dpkg --purge linux-image-4.15.0-88-generic

如前面所说,如果没有我们需要的内核,我们就需要安装所需版本内核,安装命令如下:

sudo apt-get install linux-image-4.15.0-55-generic

然后就可以按照(1)-(6)的步骤切换成你所需的内核版本启动了。

Reference:

ubuntu16.04.2修改内核启动顺序后重启机器未生效_minions_222的博客-CSDN博客

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the lat_hw@c14h10的博客-CSDN博客

  • 35
    点赞
  • 200
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
Ubuntu内核中,死锁是指当多个线程或进程同时持有资源,并且互相等待对方释放资源时发生的一种情况。死锁通常是由于资源分配的顺序不当或者互斥锁的使用不正确引起的。当死锁发生时,系统的进程或线程将无法继续执行,导致系统无响应。 在Linux内核中,为了避免死锁的发生,使用了自旋锁和非自旋锁(如semaphore或mutex)两种锁机制。自旋锁是一种忙等待的锁,当一个线程无法获取锁时,它会一直在一个循环中自旋等待,直到获取到锁为止。而非自旋锁在获取不到锁的时候会进入阻塞状态,从而进入内核态。然而,使用非自旋锁会导致线程从用户态和内核态之间频繁切换,影响锁的性能。 因此,在Ubuntu内核中,为了避免死锁并提高锁的性能,可以考虑使用自旋锁来保护共享数据。自旋锁适合用于只有进程上下文访问的场景,而在同时涉及中断上下文和进程上下文的场景下,则需要谨慎选择适当的锁机制,以避免死锁的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Linux驱动之 内核最常见的自旋锁及死锁示例](https://blog.csdn.net/qq_52858062/article/details/116397144)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Linux内核 自旋锁spin lock,教你如何用自旋锁让ubuntu死锁](https://blog.csdn.net/daocaokafei/article/details/108266526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TanH.blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值