grub修复分三类:一是重装引导程序(bios用grub2-install /dev/sda,uefi需挂载/boot/efi后执行grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=centos);二是修复配置与内核文件,可在grub rescue>下手动启动后重装内核并重建grub.cfg;三是日常维护须通过/etc/default/grub修改并运行grub2-mkconfig生成配置,避免手动编辑/boot/grub2/grub.cfg。

GRUB 是 Linux 系统启动的第一道关卡,安装、配置和修复都围绕“让内核正确加载”这一核心目标展开。关键不在于背命令,而在于分清场景:是引导程序本身丢了(MBR/EFI 损坏),还是配置文件或内核文件出问题(/boot 内容异常)。下面按实际运维中最常遇到的三类情况说明。
GRUB 引导程序重装(BIOS 或 UEFI)
适用于开机直接进 BIOS、黑屏、报 No bootable device 或 grub rescue> 但连模块都找不到的情形——说明 GRUB 的第一阶段代码(MBR 或 EFI 分区里的可执行镜像)已损坏。
-
BIOS 模式:用安装介质进救援模式 →
chroot /mnt/sysimage→ 执行grub2-install /dev/sda(/dev/sda替换为你的系统盘) -
UEFI 模式:需先确认
/boot/efi已挂载 → 运行grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=centos(--bootloader-id值建议与发行版一致) - 完成后务必执行
grub2-mkconfig -o /boot/grub2/grub.cfg,否则菜单仍不可用
GRUB 配置与内核文件修复
适用于能进入 grub> 或 grub rescue> 提示符,但看不到菜单、报 file not found、或选内核后卡在 Kernel panic——大概率是 grub.cfg 丢失、/boot 下的 vmlinuz 或 initramfs 缺失,或根设备路径写错。
- 在
grub rescue>下可临时启动:ls查分区 →ls (hd0,1)/boot/找到含vmlinuz-的分区 →set root=(hd0,1)→linux /vmlinuz-xxx root=/dev/mapper/centos-root(注意用真实根设备)→initrd /initramfs-xxx.img→boot - 进系统后,检查
/boot是否完整:ls /boot/vmlinuz-* /boot/initramfs-*.img - 若缺失,重装内核包:
dnf reinstall kernel-core kernel-modules(CentOS/RHEL)或apt install --reinstall linux-image-$(uname -r)(Debian/Ubuntu) - 最后重建配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
日常配置与维护要点
避免故障比修复更重要。所有修改必须通过配置源头进行,而非直接动生成文件。
- 主配置统一在
/etc/default/grub:改超时、默认项、内核参数(如加rd.debug排查启动卡顿) - 每次改完必须运行
grub2-mkconfig -o /boot/grub2/grub.cfg,否则无效 -
/boot/grub2/grub.cfg是只读自动生成文件,手动编辑会覆盖且下次更新必丢 - 升级内核后若空间不足,
/boot可能写满导致新 initramfs 生成失败——定期清理旧内核:dnf autoremove --oldinstallonly
不复杂但容易忽略。











