GRUB 配置修改需编辑 /etc/default/grub 并运行更新命令,不可直接改 /boot/grub/grub.cfg;默认内核由 GRUB_DEFAULT 控制,超时由 GRUB_TIMEOUT 设定,多内核管理需配合 apt/dnf 卸载及 update-grub 或 grub2-mkconfig 刷新。

Linux 的 GRUB 配置文件 修改,核心是调整 /etc/default/grub 并更新生成的启动菜单,不是直接改 /boot/grub/grub.cfg(它由脚本自动生成,手动改会被覆盖)。
修改默认启动内核和超时时间
编辑主配置文件:
sudo nano /etc/default/grub
重点关注以下几行:
- GRUB_DEFAULT=0:表示默认启动第 1 个菜单项(从 0 开始计数)。也可设为
saved,配合grub-set-default动态指定 - GRUB_TIMEOUT=5:菜单显示秒数,设为 0 表示不等待、直接启动默认项;设为 -1 表示无限等待
- GRUB_DISABLE_RECOVERY=true:关闭自动生成的 recovery 模式条目(可选,节省菜单空间)
管理多个内核:保留 / 删除旧内核
系统升级 后常保留多个内核,GRUB 会自动列出所有可用内核。若想精简菜单或防止磁盘占满:
- 查看已安装内核:dpkg –list | grep linux-image-(Debian/Ubuntu)或 rpm -q kernel(RHEL/CentOS/Fedora)
- 卸载旧内核(谨慎操作!确保至少留一个可用的备用内核):
Ubuntu 示例:sudo apt autoremove –purge linux-image-5.4.0-xx-generic
Fedora 示例:sudo dnf remove kernel-5.10.0-xxx - 卸载后记得运行 sudo update-grub(Debian 系)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL 系)刷新菜单
临时切换启动内核(无需改配置)
开机时在 GRUB 菜单界面按 Shift(BIOS)或 Esc(UEFI)调出菜单,用方向键选择其他内核启动。该选择仅本次生效。
若需让某次选择“记住”并设为下次默认:
- 启动进系统后执行:sudo grub-reboot 2(假设第 3 个菜单项是目标内核,索引从 0 开始)
- 再重启,GRUB 就会自动启动该项一次,之后恢复默认
- 配合 GRUB_DEFAULT=saved 可实现永久默认切换:sudo grub-set-default 2
高级:自定义菜单项或隐藏内核
不建议直接改 grub.cfg,但可通过添加自定义配置片段实现灵活控制:
- 在 /etc/grub.d/ 下新建文件(如 41_custom),以
#!/bin/sh开头,末尾加exec tail -n +3 $0,然后写menuentry块 - 隐藏特定内核:在 /etc/default/grub 中添加 GRUB_HIDDEN_TIMEOUT=0 和 GRUB_HIDDEN_TIMEOUT_QUIET=true,再配合 GRUB_TIMEOUT_STYLE=hidden 实现“静默倒计时”,按 Shift 才显示菜单
- 修改后务必运行对应系统的更新命令,否则更改不生效
不复杂但容易忽略:每次改完 /etc/default/grub 或增删内核,都必须重新生成配置,否则看不到效果。