前言

最近需要对服务器的 Linux 内核版本进行调整以安装特定软件,无奈的是该软件支持的 Kernel 版本是特定的,如果自动更新 Linux Kernel,版本就会超过其支持范围,被迫只好根据其支持范围安装 Linux Kernel。

Linux Kernel 影响很大,降级很可能造成系统不稳定,有能力的同学最好去锤软件提供方。

本文中如不提醒,都是以 root 身份进行操作,省去每次 sudo 的工作了。可以通过 sudo su 获得 root 身份。

正文

检查已安装内核

查看已安装的内核版本:

dpkg --get-selections |grep linux-image

如果出现有的内核后面是 deinstall, 意思是

the package is selected for de-installation or removal (i.e. we want to remove all files, except configuration files).

--apt - dpkg --get-selections shows packages marked "deinstall" - Ask Ubuntu

查看 GRUB 启动项中内核版本:

grep 'menuentry \|submenu ' /boot/grub/grub.cfg | cut -f2 -d "'"

安装旧内核

失败尝试1

参考了

apt - How do I install an old kernel? - Ask Ubuntuhttps://askubuntu.com/questions/700214/how-do-i-install-an-old-kernel进入该链接 https://kernel.ubuntu.com/~kernel-ppa/mainline/

但是遗憾的是,我要安装的 5.4.0-84并没有找到,这里有 5.4.80,5.4.85,5.4.0中似乎也没有 -84,也可能是我不了解相关的命名习惯,在此作罢。 

尝试2 (成功)

又找到了一个比较老的链接,更简单,就是 ubuntu 的 apt install 即可。

Install and Boot an Older Kernel in Ubuntuhttps://serverascode.com/2019/05/17/install-and-boot-older-kernel-ubuntu.html然后还碰巧看到了这个链接,似乎是用上面的方法出了问题,网络蓝牙适配器都无了。

drivers - Installed older kernel in 20.04 but wireless, bluetooth and ethernet adapters are missing - Ask Ubuntuhttps://askubuntu.com/questions/1307415/installed-older-kernel-in-20-04-but-wireless-bluetooth-and-ethernet-adapters-ar综合两个连接,安装命令为

apt install linux-image-5.4.0-84-generic linux-headers-5.4.0-84-generic linux-modules-extra-5.4.0-84-generic

安装很顺利,没有报错。下一步是设置 Grub 的启动项。

首先查看 Entry :

grep submenu /boot/grub/grub.cfg
grep gnulinux /boot/grub/grub.cfg

我的环境下输出的内容如图所示。

然后根据输出,修改 `/etc/default/grub` ,中的默认启动项。

vim /etc/default/grub

修改后的 GRUB_DEFAULT 大概类似下面这样。 

GRUB_DEFAULT="gnulinux-advanced-dc2515a0-8714-42c7-825a-ec047c6cfd6e>gnulinux-5.4.0-58-generic-advanced-dc2515a0-8714-42c7-825a-ec047c6cfd6e"

这里还可以修改一下 GRUB_TIMEOUT ,因为我的环境是服务器,重启需要很久,所以就启动kernel选择同时设置等待时间长一些以免不小心错过了选择。 具体就是把 STYLE 从 hidden 改成 menu,时间默认应该是 0,-1的话是等待选择,其他数字就是秒数了。

GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=30

然后执行命令

update-grub

然后就要重启机器了。重启机器后,内核已经降级到了指定版本。这里有一个需要注意的点,GRUB文件中,DEFAULT 后面的内容因为是两层,所以要注意连接两层的 > ,前后不能有空格,否则就自动进了第二层的第一个启动选项了。

重启成功后,用 MobaXterm 进行 SSH 连接可以看到上面的提示语。降级成功。或者用 uname -a 验证结果。 

Logo

更多推荐