磁盘分区表损坏需先用TestDisk恢复分区结构,再重装GRUB引导:通过Quick/Deeper Search识别分区,P键预览验证后Write写入;随后chroot环境执行grub2-install与update-grub重建引导链路。

磁盘分区表损坏常导致系统无法识别分区,进而使 GRUB 找不到 /boot 分区或内核文件,表现为黑屏、GRUB rescue 提示、或直接卡在 BIOS 启动界面。修复核心是先恢复分区结构,再重建引导链路,不能跳过分区表直接重装 GRUB。
确认是否为分区表损坏
开机进 Live 环境(如 Ubuntu Live USB),打开终端执行:
-
sudo fdisk -l或sudo parted -l:若显示Partition Table: unknown或列出的分区数量/起始扇区明显异常(如本该有 4 个主分区却只看到 1 个),大概率是 MBR/GPT 损坏; -
sudo blkid:若原本存在的/dev/sda1、/dev/sda2等设备未被识别,或 UUID 显示为空,说明分区表已失效; - 对比
lsblk输出与历史记录(如有):若物理磁盘存在但逻辑分区全部消失,基本可判定分区表丢失。
用 TestDisk 恢复分区表
TestDisk 是专用于修复分区表的成熟工具,支持 MBR 和 GPT,不依赖文件系统:
- 安装并运行:
sudo apt install testdisk && sudo testdisk(Debian/Ubuntu); - 选择损坏磁盘(如
/dev/sda)→ 选Proceed→ 选分区表类型(Intel表示 MBR,GPT表示新式分区表); - 进入
Analyze→ 先选Quick Search:自动扫描现存分区;若未找到,再选Deeper Search; - 查到疑似原始分区后,用方向键高亮 → 按
P预览文件(验证是否为你的根分区//boot)→ 确认无误后按Enter→ 选Write保存分区表; - 重启退出 Live 环境,检查是否能正常识别分区(
lsblk应显示完整结构)。
修复引导加载程序
分区表恢复后,GRUB 可能仍缺失或指向错误位置,需重新安装:
- 若
/boot分区已挂载(如挂载在/mnt/boot),且系统根分区挂载在/mnt,则执行:sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/syssudo chroot /mntgrub2-install /dev/sda(MBR 设备)或grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub(UEFI 设备); - 更新配置:
grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS)或update-grub(Debian/Ubuntu); - 若
/boot本身损坏或文件缺失,需先从 Live 环境复制内核和 initramfs(参考/lib/modules/$(uname -r)和/boot/vmlinuz*)再执行上述步骤。
验证与后续防护
重启前确保:
- 分区表已写入且
fdisk -l显示正确结构; -
ls /mnt/boot能看到vmlinuz、initramfs、grub2/目录; - GRUB 安装无报错,
grub2-mkconfig成功生成配置文件; - 重启后进入 GRUB 菜单,能正常选择内核启动。
建议事后运行 sudo smartctl -a /dev/sda 检查硬盘健康,若出现大量重映射扇区或待修复扇区,应尽快备份并更换硬盘——分区表损坏常是硬件劣化的前兆。


















