跳到主要内容

记录一次ubuntu20.04回退系统内核操作

· 阅读需 3 分钟
JovenKing

起因

在自用的开发机上尝试使用wireguard进行组网的过程中出现报错,以为是系统内核版本太低,于是尝试升级内核,系统版本如下

> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal

升级语句如下

# 列出可用的 5.15 内核版本
apt list linux-headers-5.15.*-*-generic linux-image-5.15.*-*-generic
# 以下将安装所有的 5.15 版本,一般不用
sudo apt install linux-headers-5.15.*-*-generic linux-image-5.15.*-*-generic
# 指定版本即可,比如当前为 5.15.0-46
sudo apt install linux-headers-5.15.0-46-generic linux-image-5.15.0-46-generic
# 重启后生效
sudo reboot

重启完成后远程无法连接,直接连接到机器上后发现是系统断网,网卡也不见了,具体表现为使用ifconfig命令查看,没有发现网卡配置,尝试过网上的方法后都无法解决,于是只能回滚系统内核了。

回滚操作

使用apt安装新的内核后,之前的老内核还在系统里,这个很关键,如果使用了apt autoremove卸载掉了的话估计只能重装系统了。

查看 GRUB 配置文件

cat /boot/grub/grub.cfg

文件中有menuentry 'Ubuntu'开头的一段,menuentry表示grub启动选项的显示条目。下面是模拟说明的一段示例,

0   Ubuntu          
1 Ubuntu 高级选项
1>0 Ubuntu,Linux 5.15.0-46-generic
1>1 Ubuntu, with Linux 5.15.0-46-generic (recovery mode)
1>2 Ubuntu,Linux 5.4.0-173-generic
1>3 Ubuntu,with Linux 5.4.0-173-generic (recovery mode)
1>4 Ubuntu,Linux 5.4.0-170-generic
1>5 Ubuntu, with Linux 5.4.0-170-generic (recovery mode)

要切换的内核版本是 Ubuntu 高级选项下的第5个。由于显示条目默认从0计算因此Ubuntu,Linux 5.4.0-170-generic的顺序为 1> 4。

更改grub默认启动项

sudo vim /etc/default/grub

打开grub文件后,找到GRUB_DEFAULT=0该项定义,将其修改为GRUB_DEFAULT="1 > 4",然后执行下面语句

# 更新开机引导文件
sudo update-grub
# 重启系统
reboot

重启成功后执行uname -a发现内核已经切换成功

卸载新内核

sudo apt remove linux-headers-5.15.0-46-generic linux-image-5.15.0-46-generic linux-image-unsigned-5.15.0-46-generic

之后查看/boot/grub/grub.cfg发现已经不包含新内核的引导程序了,接着还原/etc/default/grub文件并更新开机引导,至此问题解决。

参考