GRUB引导配置错误会导致系统卡在菜单、进入命令行或报错,修复需定位错误行(如kernel/initrd路径、root参数)、临时绕过启动,再修改/etc/default/grub或/boot/loader/entries/*.conf等源文件并重建配置。

内核引导配置文件(如 /boot/grub2/grub.cfg 或 /boot/loader/entries/*.conf)中若存在语法错误,系统可能卡在 GRUB 菜单、直接进入 grub> 命令行,或报错如 Error 15: File not found、invalid syntax 等。修复核心是定位错误行、修正语法、重建配置,而非盲目重装。
确认并定位错误行
开机时若卡在 GRUB 界面,按 e 进入编辑模式,重点检查以下几行:
-
kernel 行:是否拼错
vmlinuz(常见误写为vmlinux或vmlnuz);路径是否存在(可用ls /boot/验证);root=参数是否指向真实根设备(推荐用root=UUID=...,避免依赖设备名变动) -
initrd 行:文件名是否与 kernel 版本匹配(如
vmlinuz-5.14.0对应initramfs-5.14.0.img);路径是否正确 -
root 分区声明:如
set root='hd0,msdos1'中的磁盘编号、分区编号是否与实际一致(可用ls命令在 GRUB 命令行下逐个探测)
临时绕过错误启动系统
若已知某行出错但暂无法修改,可在 GRUB 编辑界面手动覆盖:
- 删除或注释掉错误行(光标移至行首,按
Ctrl+e到行尾,加#注释) - 手动输入正确 kernel 和 initrd 行,例如:
linux16 /vmlinuz-4.18.0-305.el8.x86_64 ro root=UUID=abcd-1234 quietinitrd16 /initramfs-4.18.0-305.el8.x86_64.img - 按
Ctrl+x启动。成功进系统后,再修复配置文件
进系统后修正配置文件
不要直接编辑 grub.cfg(它是自动生成的),应修改源头配置:
- 检查
/etc/default/grub:确保GRUB_DEFAULT、GRUB_TIMEOUT、GRUB_CMDLINE_LINUX等无非法字符或未闭合引号 - 检查自定义菜单项(CentOS/RHEL 8+):
/boot/loader/entries/*.conf文件,确认每行格式为key = value,等号两侧可有空格,但值中含空格或特殊符号需用双引号包裹,如:options "ro root=UUID=abcd-1234 rhgb quiet" - 修复后重新生成配置:
CentOS/RHEL 7:运行grub2-mkconfig -o /boot/grub2/grub.cfg
CentOS/RHEL 8+ 或 Fedora:运行grub2-mkconfig -o /boot/grub2/grub.cfg或kernel-install update(视 bootloader 类型而定)
预防下次再出错
语法错误多源于手动编辑或脚本生成疏漏,建议:
- 修改前先备份:
cp /etc/default/grub /etc/default/grub.bak - 生成配置后验证语法:
grub2-script-check /boot/grub2/grub.cfg(部分发行版支持) - 更新内核后务必运行配置重建命令,避免新 kernel 未被纳入引导菜单
- 避免在
grub.cfg中直接增删改——它会被下次grub2-mkconfig覆盖


















