我在尝试将 Ubuntu 安装到外部硬盘上时,意外将 grub 放在了硬盘 MBR 上

我在尝试将 Ubuntu 安装到外部硬盘上时,意外将 grub 放在了硬盘 MBR 上

我试图将 Ubuntu 安装到外部硬盘上,但在安装程序中我意外地选择将 Grub 放在内部硬盘 MBR 上而不是外部硬盘的 MBR 上。

我真的不想要这样,所以我尝试重写 Windows 引导加载程序,但到目前为止我还没有成功。

我可以通过 grub 启动 Windows 和 Ubuntu,但如果没有插入外部硬盘驱动器(这可能是因为 /boot 在那里),Grub 就会进入终端模式。

我创建了一个恢复驱动器,bootrec /fixbootbootrec /fixmbr在命令提示符下运行。它说操作已成功完成,但似乎没有任何变化。

我进入了 BIOS 中的启动顺序(在本例中实际上是 UEFI),Ubuntu顶部有一个叫做 的东西,Windows Boot Manager下面是笔记本电脑中的设备。我将其向下移动并保存退出,但退出后它似乎又恢复了原样。

如果有人知道如何删除 grub,请告诉我。

谢谢。

答案1

如果您在固件的启动管理器中看到名为ubuntu和 的条目Windows Boot Manager,则 Ubuntu 和 Windows 均以 EFI 模式安装,而不是以 BIOS 模式安装。在 EFI 模式下,引导加载程序驻留在EFI 系统分区 (ESP),不在硬盘的 MBR 上。为确保这一点,请查找名为/sys/firmware/efiUbuntu 的目录。如果存在,则 Ubuntu 安装在 EFI 模式下;如果不存在,则 Ubuntu 安装在 BIOS 模式下。Windows 将其启动模式与分区表类型绑定,因此如果内部磁盘使用 GPT,则 Windows 安装在 EFI 模式下。

如果我没记错的话,那么将 GRUB 移动到外部磁盘将需要在该磁盘上创建 ESP 并复制启动文件。您可能需要使用实时 CD 中的 GParted 来缩小外部磁盘分区之一,以便创建 ESP。将其设为 FAT32 并在 GParted 中为其添加“启动标志”。

您的内部磁盘上的 ESP 有可能当前安装在/boot/efi,因此如果您在外部磁盘上创建 ESP 并将其安装在/mnt,您可以执行以下操作:

sudo mkdir -p /mnt/EFI
sudo cp -r /boot/efi/EFI/ubuntu /mnt/EFI/BOOT
sudo mv /mnt/EFI/BOOT/shimx64.efi /mnt/EFI/BOOT/bootx64.efi

应该在任何基于 EFI 的计算机上使外部磁盘可启动。您应该在另一台计算机上测试此操作,或使用内置启动管理器从外部磁盘启动,然后再继续。如果此时遇到问题,请回复详细信息。

复制 GRUB 后,您可以使用efibootmgrUbuntu 中的 调整启动顺序。首先,输入sudo efibootmgr以查看条目。然后,您可以使用选项调整启动顺序-o,例如sudo efibootmgr -o 2,3设置Boot0002第一个(默认)项和Boot0003第二个(非默认项)。正确的启动顺序取决于您在系统上看到的条目。

您还可以从 ESP 中删除 GRUB 文件——/boot/efi/EFI/ubuntu假设内部磁盘的 ESP 仍安装在/boot/efi。只有当您 100% 确定可以从外部磁盘上的引导加载程序启动时才可以执行此操作。说到这,您应该编辑文件/etc/fstab以使其将 ESP 安装在外部磁盘上而不是内部磁盘上。

请注意,GRUB 更新往往会将 GRUB 重置为默认引导加载程序,因此您可能需要再次修复此问题。或者,您可以卸载 GRUB,但这可能很麻烦,因为 Ubuntu 会尝试重新安装它。有办法解决这个问题,但我不记得细节了。(我使用了一个虚拟 GRUB 包,但这不太优雅。)

相关内容