GPT检测到。请创建一个BIOS-Boot分区,同时使用boot-repair。

自从我更新了Windows到8.1之后,我的Grub菜单就消失了。我使用Live USB运行Ubuntu,使用了Boot-Repair,但是出了点问题。如果我点击“推荐修复”,就会出现以下错误:
GPT检测到。请创建一个BIOS-Boot分区(>1MB,未格式化的文件系统,带有bios_grub标志)。可以通过工具如Gparted来完成此操作。然后再试一次。或者,您可以激活[单独的/boot/efi分区:]选项后重试。
所以我尝试将我的sda9设置为带有bios_grub标志(我认为这是Ubuntu系统分区,因为它是ext4),然后再次运行Boot-Repair。但是没有成功。
我不知道该怎么办。在我更新Windows之前,我的Grub一直很正常(使用UEFI)。
我删除了bios_grub标志。然后我使用fsck命令,但没有发现任何错误。所以我再次尝试使用Boot-Repair,但它总是给我显示“GPT检测到”错误。我的启动模式是UEFI,安全启动已关闭。
当我关闭Secure Boot并启动我的电脑时,我可以进入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

但它仍然不起作用。

对于未来的读者,这个答案对我有帮助(启动实际分区,然后运行grub-install):http://askubuntu.com/questions/546582/surface-pro-3-no-grub-menu/604238#604238 - CornSmith
2个回答

首先,在 parted 或 GParted 中的 bios_grub 标志是一种识别 BIOS 引导分区(BIOS Boot Partition) 的方式。GRUB 2 在计算机以 BIOS 模式启动时使用该分区来保存部分引导代码。通常大小约为 1MiB,但在某些情况下可能会更小。最重要的是,如果在你设置了 Linux 根目录 (/) 分区的 bios_grub 标志之后,Boot Repair 重新运行了 GRUB 安装程序,那么你可能已经损坏了该分区。因此,在做任何其他操作之前,我建议你:
  1. 从你的 Linux 根目录 (/) 分区中删除 bios_grub 标志。
  2. 使用 fsck(或 GParted 或其他图形界面工具中的等效功能)测试你的 Linux 根目录 (/) 分区。如果分区有错误,请修复它们或从备份中恢复系统。只有确定可以正常挂载和使用分区后才能继续。

其次,你之所以遇到这个问题,是因为你在BIOS/CSM/legacy模式而不是EFI模式下启动了紧急光盘。你需要学会如何控制计算机的引导模式。通常可以通过按Esc键或启动过程早期按下功能键来访问引导管理器来完成此操作(在GRUB出现之前);但是对于如何访问此引导管理器或提供的选项没有统一标准。因此,你可能需要进行实验以找出解决方法。

第三,如果你能弄清楚如何以EFI模式启动你的Live CD,那么引导修复工具应该能够解决问题。另外,你也可以使用我的rEFInd引导管理器的CD-R或USB闪存驱动器版本来启动Linux。一旦Linux启动并运行起来,你应该能够使用efibootmgr将GRUB恢复为默认的引导加载程序,但具体细节取决于当前的配置方式。简而言之,你必须使用-o选项来将GRUB的条目设置为第一个。这个问题和答案从不同的角度涵盖了这个问题。除了恢复GRUB,你也可以考虑将rEFInd安装到你的硬盘上。
编辑:尝试使用我的rEFInd引导管理器: 使用USB闪存驱动器或CD-R映像创建一个合适的介质,并从中引导。这样,您应该会看到一个Windows选项和至少一个Linux选项。如果您可以同时引导Windows和Linux,请在Linux中安装rEFInd的Debian软件包。这样应该会将计算机默认切换到使用rEFInd,并且您应该能够正常引导所有内容。

我移除了bios_grub标志。然后我使用了fsck,但没有发现任何错误。所以我尝试了一次Boot-Repair,但它总是给我一个"GPT detected"错误。我的启动模式是UEFI,安全启动是关闭的。如果我将安全启动打开,它会给我一个安全策略错误。我该如何解决GPT错误? - Kurt Bourbaki
附言:当我关闭SecureBoot启动我的电脑时,我可以进入GRUB菜单。但是它是空的(唯一的选项是“系统设置”)。 - Kurt Bourbaki
请尝试使用我编辑中建议的rEFInd。 - Rod Smith
我使用了rEFInd,但结果还是一样。它显示给我一个界面,有3个选择;当我选择Windows或Ubuntu时,它会不断地将我带回GRUB菜单,就像系统正在重新启动一样。就好像系统找不到正确的引导文件(我只是猜测)。实际上,即使我从系统引导中选择Ubuntu或Windows,它仍然会将我带到GRUB菜单。 - Kurt Bourbaki
1Boot Repair有时会用另一个GRUB的副本替换Windows引导加载程序,并将原始文件备份到另一个文件中。在Boot Repair的高级菜单中,有一个选项可以恢复这些备份,所以你可以尝试运行它,然后使用rEFInd。也有可能原始文件丢失了,这种情况下可能需要从备份中恢复或使用Windows恢复盘。如果你选择vmlinuz*选项时rEFInd会出现GRUB,请注意你的系统可能出了很大问题。请问你使用的是哪个品牌的电脑/主板? - Rod Smith
我有一台Dell Inspiron 15r。不幸的是,由于我有继续进行学术项目的冲动,我不得不格式化并重新安装Ubuntu。我尝试恢复旧备份,但没有任何效果。而且,我没有Windows备份光盘(Dell并不总是随新笔记本电脑提供它,而且我也没有成功使用Windows 8备份服务)。但是我还是要感谢您的友善回答,并将您的回答设置为正确答案 :) - Kurt Bourbaki
就我所知,这个程序是唯一一个在Windows 10升级后解决Grub菜单崩溃问题的工具/方法。Boot-repair无法解决此问题,因为它需要新的分区,而GParted则无法创建新分区。我的设备命名方式与常规不同,使用了类似nvme0np1、p2、p3等晦涩难懂的名称,而不是sda1、sdb之类的。在打开Linux的live-CD会话后,尝试挂载这些设备时出现了“找不到/etc/fstab”错误。接下来的错误是“找不到EFI”分区,并且尝试从live-CD挂载现有的Linux文件系统失败。这个程序成功恢复了对Windows和Linux的访问权限,而其他所有方法都失败了。 - user26732

你可以按照以下步骤解决这个问题:
1. 启动 Gparted。 2. 找到引导分区。我的系统盘上的引导分区是前面的 16.00MiB。 3. 删除该分区(注意不要删除错误的分区并且丢失所有数据!如果你不知道自己在做什么,请停止操作)。 4. 创建一个新的分区(不要格式化为任何文件系统),应用设置。 5. 使用“管理标志”选项将新分区标记为 bios_grub。
现在,再次尝试使用 boot-repair。

我刚刚这样做了,但是引导修复仍然无法识别bios_grub分区...现在怎么办? - Magix
1我使用分区/dev/sda3,使用ntfs格式- WindowsDisk,并添加了标志"bios_grub"。我运行了"boot-repair"后,它起作用了。 - Revol89
1这个有效,其他的都没用,NTFS和bios_grub标志..赞美Cornholio! - Captain Fantastic