grub是linux启动中连接bios/uefi与内核的桥梁,负责加载grub.cfg、解析启动项、加载内核和initramfs并移交控制权;其故障表现为mbr损坏导致黑屏或进bios、grub.cfg丢失进入grub>命令行、efi分区问题致启动项消失等。

GRUB 是 Linux 系统启动过程中最关键的环节之一,它不单是“菜单”,更是连接固件(BIOS/UEFI)与操作系统内核的桥梁。理解其原理能快速定位引导失败原因;掌握修复逻辑,比盲目重装系统更高效、更安全。
GRUB 在启动流程中起什么作用
Linux 启动不是直接跳到内核,而是一步接一步移交控制权:
- BIOS/UEFI 完成硬件自检后,读取磁盘首扇区(MBR 或 EFI 系统分区),运行其中的 GRUB 引导代码
- GRUB 加载自身核心模块和配置文件(/boot/grub/grub.cfg),解析出所有可启动项(如不同内核版本、Windows 等)
- 用户选择后,GRUB 根据配置加载对应内核(vmlinuz)和初始内存盘(initramfs),再把控制权交给内核
- 若 grub.cfg 缺失、路径写错、内核文件被删或 EFI 分区未挂载,GRUB 就会卡在命令行界面或直接报错
常见 GRUB 故障类型与对应表现
不同损坏位置,现象差异明显,判断准才能修得快:
- MBR/EFI 引导区损坏:开机黑屏、光标闪烁、提示 “error: unknown filesystem” 或直接进 BIOS —— 这是 GRUB 第一阶段代码丢失
- grub.cfg 文件丢失或错误:进入 GRUB 命令行(grub>),或显示 “no such device”、“file not found” —— GRUB 能启动,但找不到配置或内核路径
- EFI 分区未挂载或损坏(UEFI 模式):安装完系统无法启动,或 Windows 更新后 Linux 启动项消失 —— 因为 GRUB 的 EFI 可执行文件(grubx64.efi)不在 /boot/efi/EFI/ubuntu/ 等路径下
- 双系统冲突:装完 Windows 后 Ubuntu 不见了 —— Windows 安装过程覆盖了 EFI 分区中的 GRUB 启动项,只留下 Bootmgfw.efi
修复 GRUB 的标准操作路径
无需重装系统,用 Live USB 即可完成全流程修复,关键在于分清模式(BIOS 还是 UEFI)并严格挂载:
- 用 Ubuntu/CentOS Live USB 启动,打开终端,运行 lsblk -f 和 sudo fdisk -l 确认根分区(如 /dev/nvme0n1p2)、/boot(如有独立)、以及 EFI 分区(通常为 /dev/nvme0n1p1,FAT32 格式,LABEL=EFI)
- 依次挂载:
sudo mount /dev/nvme0n1p2 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi(UEFI 必须)
sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys - 进入原系统:sudo chroot /mnt
- 重装 GRUB:
• BIOS 模式:grub-install /dev/nvme0n1
• UEFI 模式:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu - 更新配置:update-grub(Debian/Ubuntu)或 grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)
简单但有效的预防与维护建议
多数 GRUB 故障其实可以提前规避:
- 安装双系统时,先装 Windows 再装 Linux —— 避免 Windows 覆盖引导;若已装反,用 Live 环境修复比重装 Windows 更稳妥
- 升级内核或修改启动参数后,手动运行一次 update-grub,确认新条目已生成
- 定期备份 /boot/efi/EFI/ 全目录(尤其是多系统环境),恢复时只需拷回即可
- 禁用 Windows 快速启动(电源选项 → 选择电源按钮的功能 → 更改当前不可用设置 → 取消勾选“启用快速启动”),防止 NTFS 分区被锁导致 Linux 无法写入 /boot











