记录一次ubuntu20.04回退系统内核操作
· 阅读需 3 分钟
起因
在自用的开发机上尝试使用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
文件并更新开机引导,至此问题解决。