Ubuntu22.04降级内核版本

Ubuntu22.04降级内核版本


说明:

在生产环境中因兼容性问题Ubuntu 22.04系统需要固定内核版本,在实际操作过程中因误操作原因导致系统内核升级为最新版本,在不影响开发测试状态下选择降级内核版本。

首先查看内核在 grub 中的菜单索引

bash 复制代码
grep menuentry /boot/grub/grub.cfg | grep -i linux | nl -v 0

输出

bash 复制代码
0  menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-104a526b-4f44-4f1e-90b8-a8e93675ac90' {
1  submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-104a526b-4f44-4f1e-90b8-a8e93675ac90' {
2          menuentry 'Ubuntu, with Linux 6.8.0-90-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.0-90-generic-advanced-104a526b-4f44-4f1e-90b8-a8e93675ac90' {
3          menuentry 'Ubuntu, with Linux 6.8.0-90-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.0-90-generic-recovery-104a526b-4f44-4f1e-90b8-a8e93675ac90' {
4          menuentry 'Ubuntu, with Linux 6.8.0-40-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.0-40-generic-advanced-104a526b-4f44-4f1e-90b8-a8e93675ac90' {
5          menuentry 'Ubuntu, with Linux 6.8.0-40-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.8.0-40-generic-recovery-104a526b-4f44-4f1e-90b8-a8e93675ac90' {

修改 grub 配置文件

bash 复制代码
sudo vim /etc/default/grub

修改为对应内容

bash 复制代码
GRUB_HIDDEN_TIMEOUT=0		# 取消 GRUB_HIDDEN_TIMEOUT 的注释(如果存在),设置为 0
GRUB_DEFAULT=4		# 设置默认启动项为低版本内核的索引(这里我选4,也可以使用0进入grub菜单后手动选择)
GRUB_TIMEOUT_STYLE=menu		# 显示 grub 菜单(可选,方便手动选择内核)
GRUB_TIMEOUT=10		# grub 菜单显示 10 秒,超时后自动启动默认内核

更新 grub 配置,并重启

bash 复制代码
sudo update-grub
sudo reboot		# 重启系统

进入 GRUB 菜单,选择 Advanced options for Ubuntu,然后选择对应内核启动

bash 复制代码
uname -r

6.8.0-40-generic		# 输出内核版本

删除高版本内核(彻底清理)

bash 复制代码
dpkg --get-selections | grep linux-image | grep -v deinstall

输出

bash 复制代码
linux-image-6.8.0-40-generic                    hold
linux-image-6.8.0-90-generic                    install
linux-image-generic-hwe-22.04                   install

删除高版本内核的相关包

bash 复制代码
# 删除高版本内核镜像、头文件、模块
apt purge linux-image-6.8.0-90-generic linux-headers-6.8.0-90-generic linux-modules-6.8.0-90-generic linux-modules-extra-6.8.0-90-generic
# 删除依赖的通用包(如 generic-hwe-22.04,可选)
sudo apt purge linux-image-generic-hwe-22.04 linux-headers-generic-hwe-22.04

清理内核残留文件

bash 复制代码
sudo apt autoremove --purge		# 自动清理不再需要的依赖包
sudo update-grub		# 更新 grub 配置(删除高内核后,grub 菜单会自动更新)

还原/etc/default/grub配置文件

bash 复制代码
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

更新 grub 配置,并重启

bash 复制代码
sudo update-grub
sudo reboot		# 重启系统

小结:

禁止删除当前运行的内核:执行 uname -r 查看当前内核,删除操作时绝对不能删这个版本。

至少保留一个可用内核:系统中必须保留 1~2 个稳定内核,避免所有内核被删导致无法启动。

降级内核后硬件驱动可能失效:如果降级后出现 USB、网卡等硬件不识别,可能是低内核不支持该硬件,需重新安装对应驱动或升级回原内核。

无法启动的补救方案:如果重启后无法进入系统,在 grub 菜单中选择 「高级选项」,手动选择原来的高版本内核启动,再重新调整配置。

相关推荐
内卷焦虑人士22 分钟前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu
门豪杰2 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
深蓝轨迹4 小时前
彻底删除VMware虚拟机并清理残留,解决虚拟网卡消失问题
windows·ubuntu·centos
²º²²এ松7 小时前
vs code连接ubuntu esp项目
linux·数据库·ubuntu
徒 花9 小时前
ubuntu远程连接ssh及VSCode配置远程ssh连接ubuntu
vscode·ubuntu·ssh
i建模10 小时前
在Ubuntu中解压ZIP文件
linux·chrome·ubuntu
林鸿群11 小时前
Ubuntu 26.04 本地安装 GitLab CE 完整教程(非 Docker 方式)
linux·ubuntu·gitlab·私有部署·代码托管·ubuntu 26.04·omnibus
YuQiao030311 小时前
国内安装claude code
ubuntu·claude·vibe coding
Jiozg12 小时前
ES安装到linux(ubuntu)
linux·ubuntu·elasticsearch
returnthem12 小时前
Ubuntu 22.04 + XFCE4 + 非 Snap 版 Firefox + VNC/noVNC 部署全步骤
linux·ubuntu·firefox