引导丢失是什么状态
引导丢失的典型表现是开机直接进入固件界面、提示 No bootable device,或停在 GRUB 命令行。常见诱因包括系统更新重写了引导、多系统安装覆盖了 MBR、磁盘克隆后引导指向不存在的分区,以及 EFI 分区被清理。修复思路是用救援介质启动,chroot 进入原系统,再按固件模式(BIOS 或 UEFI)重建对应引导。
基本信息
| BIOS/Legacy 补救 | grub2-install /dev/sdX + grub2-mkconfig -o /boot/grub2/grub.cfg |
|---|---|
| UEFI 补救 | grub2-install --target=<arch>-efi --efi-directory=/boot/efi |
| 架构 target | x86_64 用 x86_64-efi,aarch64 用 aarch64-efi |
| 前置检查 | ls /sys/firmware/efi 判断固件模式,lsblk 确认分区布局 |
| 救援入口 | 安装介质救援模式、Live 镜像或带外虚拟光驱 |
| 权限要求 | root;操作会影响启动链路,须在维护窗口进行 |
典型使用场景
- 系统更新或内核升级后重启无法进入系统
- 磁盘克隆到新盘后引导仍指向旧盘
- 安装第二个系统时覆盖了原有引导菜单
- EFI 分区格式化或误删后重建引导文件
- RAID 或分区调整后引导信息与实际布局不一致
救援环境准备
救援环境准备
ls /sys/firmware/efi && echo UEFI || echo BIOS # 确认固件模式,决定后续用哪套命令
lsblk -f # 看清分区与文件系统类型
mkdir -p /mnt/sysroot
mount /dev/mapper/rootvg-root /mnt/sysroot # 挂根分区
mount /dev/sda1 /mnt/sysroot/boot # BIOS 场景挂 /boot
mount /dev/sda1 /mnt/sysroot/boot/efi # UEFI 场景挂 EFI 分区
for d in dev proc sys run; do mount --bind /$d /mnt/sysroot/$d; done # 绑定必要目录
chroot /mnt/sysroot # 进入原系统环境重建引导(BIOS 与 UEFI)
重建引导(BIOS 与 UEFI)
# BIOS/Legacy:把引导写到磁盘 MBR
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFI(aarch64 示例;x86_64 换成 x86_64-efi)
grub2-install --target=aarch64-efi --efi-directory=/boot/efi --bootloader-id=kylin
grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg
exit # 退出 chroot
umount -R /mnt/sysroot && reboot # 卸载后重启验证现象与处置
| 现象 | 含义 | 处置 |
|---|---|---|
| No bootable device | 固件找不到引导扇区或 EFI 文件 | 按固件模式重建引导 |
| 停在 grub> 提示符 | 引导器在但配置找不到 | 手工指定内核启动,进入系统后重建菜单 |
| 菜单里有条目但起不来 | root 参数或分区 UUID 变化 | 核对 fstab 与内核参数中的 UUID |
| 修复后仍从旧系统启动 | 固件启动顺序未更新 | 在固件设置或 efibootmgr 中调整顺序 |
| grub2-install 报错 target 不支持 | 命令与固件模式不匹配 | 改为对应架构与模式的 target |
先判断固件模式再动手:在 UEFI 机器上跑 BIOS 的安装方式,或在 Legacy 机器上跑 EFI 方式,都会报错甚至写坏引导扇区,判断依据是 ls /sys/firmware/efi 是否存在。
chroot 前后要用 umount -R 递归卸载再重启,遗漏挂载会让文件系统处于脏状态,重启后可能触发修复甚至数据损坏。