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

相关推荐
小天源9 分钟前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti
独自归家的兔2 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX2 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
老师用之于民19 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
qinyia1 天前
通过本地构建解决Cartographer编译中absl依赖缺失问题
linux·运维·服务器·mysql·ubuntu
郝亚军1 天前
ubuntu启一个udp server,由一个client访问
linux·ubuntu·udp
予枫的编程笔记1 天前
【Linux入门篇】Linux入门不踩坑:内核、发行版解析+环境搭建全流程
linux·ubuntu·centos·vmware·xshell·linux入门·linux环境搭建
hampeter1 天前
【填坑指南】Trae/VS Code 远程连接 Ubuntu,终端总是自动激活特定的 Conda 环境?三招教你彻底解决!
linux·ubuntu·conda·trae
Mr_liu_6661 天前
ubuntu:beyond compare 4 This license key has been revoked——————转载拼接
linux·运维·ubuntu
划水的code搬运工小李1 天前
Ubuntu下挂载NTFS格式磁盘
linux·运维·ubuntu