“检测到GPT。 请在使用引导修复时创建BIOS-Boot分区

自从我将Windows更新到8.1后,我的Grub菜单就消失了。 我使用Live USB运行Ubuntu,我使用了Boot-Repair,但出了点问题。 如果我点击Reccomended repair我得到这个错误:

检测到GPT。 请创建一个BIOS-Boot分区(> 1MB,无格式文件系统,bios_grub标志)。 这可以通过Gparted等工具进行。 然后再试一次。 或者,您可以在激活[Separate / boot / efi partition:]选项后重试。

所以我尝试使用bios_grub标志设置我的sda9(我认为它是Ubuntu系统分区,因为它是ext4),然后再次运行Boot-Repair。 它没用。

我不知道该怎么办。 在我更新Windows之前,我的Grub工作正常(使用UEFI)。

我删除了bios_grub标志。 然后我使用fsck并没有发现任何错误。 所以我再次尝试使用Boot-Repair,但它总是给我“检测到GPT”错误。 我的启动是在UEFI模式下,安全启动是“关闭”。

当我使用SecureBoot OFF启动PC时,我可以访问GRUB菜单。 但它是空的(唯一的声音是“系统设置”)。

我安装了我的Ubuntu系统磁盘:

 sudo mount /dev/sda9 /mnt 

和其他的事情:

 sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys 

我用chroot登录系统:

 sudo chroot /mnt 

我重新安装了grub:

 grub-install /dev/sda update-grub2 

但它仍然无效。

首先, parted或GParted中的bios_grub标志是一种识别BIOS引导分区的方法。 当计算机以BIOS模式启动时,GRUB 2使用此分区来保存其部分引导代码。 它通常大约1MiB,但在某些情况下它可能更小。 最重要的是,如果在Linux根( / )分区上设置bios_grub标志后,Boot Repair重新运行GRUB安装程序,则可能会破坏该分区。 因此,在你做任何其他事情之前,我建议你:

  1. 从Linux根( / )分区中删除bios_grub标志。
  2. 使用fsck (或GParted或其他GUI工具中的等效function)测试Linux根( / )分区。 如果分区有错误,请修复它们或从备份还原系统。 只有在您确定可以挂载分区并正常使用它之后才能继续。

其次,您遇到此问题是因为您在BIOS / CSM /传统模式而不是EFI模式下启动了应急光盘。 您需要了解如何控制计算机的启动模式。 您通常可以通过在启动过程早期(在GRUB出现之前)按Esc或function键访问的启动管理器来执行此操作; 但是没有关于如何访问此启动管理器或它提供的选项的标准化。 因此,您可能需要通过实验来解决这个问题。

第三,如果你能弄清楚如何在EFI模式下启动Live CD,Boot Repair应该可以解决问题。 或者,您应该能够使用我的rEFInd启动管理器的CD-R或USB闪存驱动器版本来启动 Linux。 一旦Linux启动并运行,您应该能够使用efibootmgr将GRUB恢复为默认引导加载程序,但具体细节取决于它现在的配置方式。 简而言之,您必须使用-o选项将efibootmgr设置为第一个。 这个问题和答案从不同的角度涵盖了这个问题。 您也可以考虑将rEFInd安装到硬盘上,而不是恢复GRUB。


编辑:尝试使用我的rEFInd启动管理器:使用USB闪存驱动器或CD-R映像创建合适的介质并从中启动。 这应该为您提供Windows选项和至少一个Linux选项。 如果您可以启动Windows和Linux,请在Linux中安装rEFInd的Debian软件包。 这应该在默认情况下将计算机切换为使用rEFInd,并且您应该能够正常启动所有内容。