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 菜单中选择 「高级选项」,手动选择原来的高版本内核启动,再重新调整配置。

相关推荐
承渊政道1 天前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll
沫璃染墨2 天前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
longzhizhui9262 天前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
OPEN-F2 天前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
A7bert7772 天前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu
用户4107192013253 天前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu
Linux-lucky3 天前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
wzg20163 天前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Sw1zzle3 天前
Go入门(零):Linux Ubuntu 22.04 安装 Go
linux·ubuntu·golang
时空无限3 天前
ubuntu 26.04 sudo 连不上主机卡住然后失败问题处理
linux·服务器·ubuntu