Ubuntu Linux Kernel 降级至特定版本(安装特定旧版本,非回退)
最近需要对服务器的 Linux 内核版本进行调整以安装特定软件,无奈的是该软件支持的 Kernel 版本是特定的,如果自动更新 Linux Kernel,版本就会超过其支持范围,被迫只好根据其支持范围安装 Linux Kernel。Linux Kernel 影响很大,降级很可能造成系统不稳定,有能力的同学最好去锤软件提供方。本文中如不提醒,都是以 root 身份进行操作,省去每次 sudo 的工作
前言
最近需要对服务器的 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然后还碰巧看到了这个链接,似乎是用上面的方法出了问题,网络蓝牙适配器都无了。
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 验证结果。
更多推荐
所有评论(0)