能直接选旧内核启动,就别折腾配置文件或删包——只要/boot/vmlinuz-和/initramfs-文件还在,grub菜单里一定有旧内核条目,这是最稳、最快、零风险的恢复方式;开机时通过长按shift(bios)或连按esc(uefi)调出grub,进入advanced options选择不带(recovery mode)的旧内核条目,进系统后立即用grub-set-default指定并update-grub固化,默认项生效前需手动更新initramfs。

能直接选旧内核启动,就别折腾配置文件或删包——只要 /boot/vmlinuz-* 和 /boot/initramfs-* 文件还在,GRUB 菜单里一定有旧内核条目,这是最稳、最快、零风险的恢复方式。
开机时强制调出 GRUB 菜单
黑屏卡在光标闪烁或紫屏不动,说明图形界面没起来,但 GRUB 还在后台等你。关键不是“能不能进”,而是“怎么唤出来”:
- BIOS 模式(传统 Legacy):重启后立刻长按
Shift键,持续按住直到蓝底白字菜单出现 - UEFI 模式(绝大多数 2012 年后主板):重启后在厂商 LOGO 消失瞬间快速连按
Esc;部分品牌(如 Dell、Lenovo)可能需改用F12或Del - 如果按键无效,可能是
GRUB_TIMEOUT=0被设死,或 Secure Boot 阻断了菜单加载——此时需先插 LiveUSB 进系统临时修复/etc/default/grub
在 Advanced options 子菜单里找对旧内核
进入 GRUB 后别急着回车。先进入 Advanced options for Ubuntu(或对应发行版名称)子菜单,这里列出所有已安装内核的完整版本号:
- 优先选不带
(recovery mode)的条目,例如Ubuntu, with Linux 5.15.0-91-generic - 避免选
linux-image-extra或仅含headers的包,它们不是可启动内核 - 若看到多个旧版本(如
5.15.0-89和5.15.0-91),从编号稍大的那个开始试——它更可能包含你上次稳定运行时的驱动模块 - UEFI 系统若卡在
Loading initial ramdisk...,大概率是 Secure Boot 拦截了旧 initramfs,需进 BIOS 关掉 Secure Boot 再试
进系统后立刻确认并固化默认项
成功进桌面或命令行后,第一件事不是卸载新内核,而是把这次选择“记下来”,否则下次重启又回到新内核:
- 运行
uname -r确认当前确实是旧版本,比如输出5.15.0-91-generic - 执行
sudo grub-set-default "Ubuntu, with Linux 5.15.0-91-generic"(Ubuntu/Debian)或sudo grub2-set-default "CentOS Linux (4.18.0-305.el8.x86_64) 8"(RHEL/CentOS),引号内名称必须和 GRUB 菜单中显示的**完全一致**,包括空格和括号 - 立刻运行
sudo update-grub(Debian/Ubuntu)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS),否则修改不会写入实际引导配置 - 别依赖
GRUB_SAVEDEFAULT=true:它只在GRUB_DEFAULT=saved且用户手动选过一次后才生效,首次恢复时不保险
真正容易被忽略的是 initramfs 状态——旧内核文件虽在,但对应的 initrd.img-* 可能已被新内核更新过程覆盖或损坏。进系统后第一时间跑 sudo update-initramfs -u -k 5.15.0-91-generic,比删新内核重要得多。











