如何从驱动器中删除 Grub?+ 如何修复奇怪的引导加载程序行为?

如何从驱动器中删除 Grub?+ 如何修复奇怪的引导加载程序行为?

简短版本:我每次安装 Ubuntu 时,引导加载程序都会转到我的 Windows 硬盘上,尽管我在安装过程中特意选择了单独的硬盘,但现在我的 UEFI 启动菜单(启动时按住 F8 启动)中只有一个选项,叫做“ubuntu”。这个启动选项显然位于我的 Windows 硬盘上。 不过,我可以通过选择 Windows 启动管理器选项顺利启动 Windows

以下是背景信息,可能有助于理解我是如何陷入这种情况的

我最近买了一台新的游戏电脑,它有一块 1TB 的 SSD,运行 Windows,还有一块 2TB 的硬盘。我以前是 Ubuntu 的忠实用户,所以我不得不在我的第二块 2TB 硬盘上安装 Ubuntu。我从 Xubuntu 开始,在我的空的 2TB 硬盘上添加了 3 个分区。一个用于启动,一个用于 root,一个用于 home。我还为引导加载程序选择了空的 2TB 硬盘。

由于安装过程中“rsyslog”错误填充了我的 usb,因此此方法无效,但在互联网的帮助下,我禁用它后再次尝试,格式化相同的 3 个分区并将它们用于相同的目的。使用 2TB 硬盘作为引导加载程序进行引导、Root 和 Home。

然后我需要使用“pci=noaer”设置来启动内核,因为一些 PCIE 总线错误阻止我启动或使其变得非常慢。

这招管用,但我意识到在这个大屏幕上我不太喜欢 Xubuntu,所以我决定切换到标准 Ubuntu,看看 Gnome 在这台机器上的运行情况。我按照完全相同的步骤正如我上面所述,并安装了 Ubuntu。

现在我们到达了我目前所在的位置: 我的 2TB 硬盘上安装了 Ubuntu,而引导加载程序显然(根据我电脑的启动菜单)安装在另一个装有 Windows 的硬盘上。Ubuntu 安装有很多奇怪的怪癖,比如每次我登录或使用终端时都会要求我输入 3 次密码。

这里出了什么问题,我该如何正确地从 Windows 驱动器中删除 Ubuntu 引导加载程序,以便它不再显示在我的启动菜单中,这样我就可以擦除第二个驱动器并尝试最终安装 Ubuntu。

下面是Windows下磁盘管理中驱动器的屏幕截图: r

答案1

请参阅启动板错误 # 1396379 和错误 # 1174357,以了解安装程序忽略用户输入的引导加载程序位置问题的解决方法。将自己添加到错误的“这会影响我吗?”。基本上建议从“试用 Ubuntu”桌面安装,启动终端,并在安装过程中及时从 Windows 磁盘卸载 /boot/efi 并从第二个磁盘重新安装 EFI。

如果您已经写入第一个磁盘的 EFI,只需将所有文件从第一个 EFI 复制到第二个 EFI。不需要 Windows 引导加载程序,但需要一个很好的备份。ubuntu 设置有一个 ...EFI/ubuntu.grub.cfg,它引用第二个磁盘上的 ubuntu 根目录,因此可以工作。第二个磁盘的 EFI 也应该有一个设备引导加载程序在 ...EFI/Boot/bootx64.efi 中,它应该是 shimx64.efi 或 grubx64.efi,具体取决于您是否在安全启动的情况下安装。检查大小以查看哪个 bootx64.efi。如果是 shimx64.efi,则需要在同一目录 (EFI/Boot) 中有一个 grubx64.efi 的副本。

通过选择设备成功启动第二个磁盘后,您可以使用 efibootmgr 删除 EFI 菜单中不需要的“ubuntu”条目。如果您愿意,只需删除 EFI/ubuntu... 目录和文件,但它们是第二个磁盘 EFI 的备份。


将第一个磁盘的 EFI 文件复制到第二个磁盘的 EFI。

假设您在第二个磁盘上设置或创建了 EFI 分区,并使用 FAT 文件系统对其进行了格式化,则无论您向安装程序指定了什么作为引导加载程序的位置,第二个 EFI 上都应该有一个空的文件系统。假设 EFI 分区是第二个磁盘上的第一个分区,因此我们在下面将其称为 /dev/sdb1——如果您使用不同的磁盘号或分区号,请进行调整。所有 UEFI 引导加载程序都只是文件,可以使用常规文件复制工具进行复制。您应该能够使用第一个磁盘的 EFI 引导加载程序在第二个磁盘上启动 ubuntu。正在运行的系统将在 /boot/efi 处挂载第一个磁盘的 EFI 分区——这是要复制的文件的源。要挂载第二个磁盘的 EFI,请使用 /mnt,或者如果 /mnt 已用于其他任何用途,请在 /mnt 中创建一个目录并将其用于挂载。

sudo mkdir /mnt/secondefi

挂载第二个磁盘的 EFI:

sudo mount -tvfat /dev/sdb1 /mnt/secondefi

将第一个 EFI 分区中的所有文件复制到第二个 EFI 分区

sudo cp -r /boot/efi/* /mnt/secondefi

第二个磁盘现在已完全填充 EFI 分区。EFI/ubuntu/grub.cfg 文件始终具有第二个磁盘上的 Ubuntu 根分区的 UUID(如果第二个磁盘不存在,则会导致 grub 失败),因此无需进行任何更改。

要完成第二个磁盘的设置,请编辑 /etc/fstab 中的 /boot/efi 条目,以使用第二个磁盘的 EFI 的 UUID。从输出中挑选出第二个磁盘的 EFI UUID(不是 PARTUUID):

sudo blkid

清理安装程序引导加载程序创建。安装程序可能做错了几件事:

1) 为 ubuntu 创建了一个指向第一个磁盘 EFI 的固件条目。启动(正确设置第二个磁盘)时不需要任何条目。您可以使用 efibootmgr 删除此条目,或者如果您将引导加载程序保留在第一个磁盘的 EFI 中,则可以保留它。

2) 第一个磁盘的 EFI 上的 EFI/ubuntu 目录可能会被删除。如果这样做,您还应该删除固件条目。

3) 第一个磁盘的 EFI 默认/设备引导加载程序 EFI/Boot/bootx64.efi 已被 grubx64.efi(或 shimx64.efi)取代。通常不应使用此引导加载程序,但在某些情况下可能会将其作为后备程序调用。原始 Windows 引导加载程序 EFI/Microsoft/Boot/bootmgfw.efi 可以简单地复制回 EFI/Boot/bootx64.efi,或者将备份文件 ...bkp 复制回 bootx64.efi。

答案2

运行:“MSConfig”==>>[启动]==>>单击“Grub Boot Loader”。[删除]。[保存]。

相关内容