将 MBR 分区表转换为 GPT 后 Grub 无法启动

Cha*_*ber 3 partitioning boot grub2 dual-boot

将硬盘从 MBR 转换为 GPT 后,我在启动 Ubuntu 16.04.2 LTS 时遇到问题。正如我在其他网站上找到的那样,我曾经gdisk将硬盘驱动器从 MBR 转换为 GPT。这样做并重新启动我的 PC 后,事实证明 GRUB 操作系统菜单在启动时不显示,相反,屏幕只是向我显示了一个带有闪烁光标的黑屏。当我尝试将 GPT 转换回 MBR 分区表时,该命令似乎成功了,但 GRUB 仍然无法正常工作

附加信息:我双启动 Ubuntu 16.04 和 Windows 10

用于将 MBT 转换为 GPT 的命令:

sudo gdisk /dev/sda Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!

Do you want to proceed? (Y/N): Y

任何知道如何解决问题的人?难道我做错了什么?

小智 5

简短的回答:

grub i386-pc需要一个“BIOS 启动分区”(即输入ef02gdisk)。所以你需要在转换后创建一个,然后再运行grub-install

解释:

当您将 MBR/msdos 分区表转换为 GUID 分区表时,grub 将无法正常工作,这是很自然的。

原因是,grub 利用了“post-MBR gap”,即 MBR 和第一个分区之间的间隙,用于嵌入其启动代码的一部分(也称为 core.img)。当您将分区表转换为 GPT 时,部分间隙会被主 GPT 覆盖,因为它位于 LBA 1-33(其中 MBR 位于 LBA 0)上。

此外,GPT 上的 BIOS grub(又名 grub i386-pc)不再使用 post-MBR 或 post-GPT 间隙来嵌入 core.img。相反,它需要一个“BIOS 引导分区”(即输入ef02gdisk)。所以你需要在转换后创建一个,然后再运行grub-install

另请注意,备份 GPT 位于磁盘的最后 33 个逻辑块。如果最后/唯一的分区扩展到磁盘的最后一个块,则需要缩小其上的文件系统以确保文件系统不再覆盖分区/磁盘的最后 33 个块,以便这些块可以安全地被备份 GPT 覆盖。如果您在转换之前没有这样做,可能会对文件系统造成一些损害。

  • @CharlesGreen 我相信预期的答案是在以“此外”一词开头的段落中 (2认同)