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 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
zhangrelay1 小时前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
政宇 | STAR2 小时前
docker相关
ubuntu
wj3055853782 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
Lw老王要学习2 小时前
Ubuntu(WSL2)完全可以安装到其他盘,避免占用 C 盘空间
ubuntu
Lw老王要学习7 小时前
本地部署OpenClaw + WSL Ubuntu + 千问云+QQ+微信+飞书
ubuntu·llm·agent·openclaw·龙虾
Digital2Slave7 小时前
如何在ubuntu20.04系统配置Claude code使用中国大模型
ubuntu·claude code
Danileaf_Guo7 小时前
手搓KVM虚拟化!Ubuntu 26.04 + KVM 7.0.0,告别VMware的低成本玩法
linux·运维·服务器·ubuntu
暮色念了红尘7 小时前
CC Switch — Ubuntu 20.04 可用版本
ubuntu·ai·rust·ubuntu 20.04·vibe coding·cc swich
ting94520008 小时前
Plurai 深度解析:用 “氛围训练” 重构 AI 智能体可靠性,从原型到生产的全链路解决方案
人工智能·ubuntu·重构