如何管理两个不同的 ubuntu 安装的两个 efi 分区?

如何管理两个不同的 ubuntu 安装的两个 efi 分区?

最近我的硬盘出现了一些坏扇区。就在几天前,数据损坏了。所以看起来我的硬盘快要报废了。

因此,一个选择是购买新硬盘,但我将在未来 5-6 个月内更换笔记本电脑,所以我不想增加开支。所以我在外部硬盘上安装了 Ubuntu。安装时,外部 Ubuntu 更改了内部硬盘的 EFI 分区。现在我需要连接外部硬盘来启动。

我想分离两个 EFI 分区。我想要一个可以在没有外部驱动器的情况下打开内置硬盘 ubuntu 的 EFI 分区,并且如果内置硬盘发生故障,我还想在外部启动。所以我想要两个不同的 EFI,一个在内置,一个在外部。

我尝试从内部 ubuntu 运行 update-grub。它显示它可以检测内部的 Windows 以及外部的 ubuntu。但它不会修改 EFI 分区。此外,如何为外部驱动器配置单独的 EFI 分区?我已经在外部驱动器中创建了 200MB 的 EFI fat32 分区。我将整个 EFI 从内部复制到外部。我测试了它是否从我在 bios 中创建的自定义条目启动。所以现在我想知道如何从内部硬盘驱动器启动内部 grub,以及除了 /etc/default/grub 中的 EFI 路径之外,我还需要在外部进行哪些更改才能使一切正常运行。

答案1

Launchpad 错误 #1396379(安装过程中,用户输入的 bootloader 位置被忽略,并使用找到的第一个 EFI)是导致此类问题的原因。如果您曾经安装到第二个磁盘,请将自己添加到错误上的“这会影响我吗?”。在安装程序之外,grub 工作正常,并且可以与适当的选项一起使用来指定安装它的位置。

安装到第二个磁盘的结果是第一个磁盘的 EFI 已更新并且仍可启动 grub,但现在 grub 的附加文件位于第二个磁盘上。只要连接了第二个磁盘,此方法便可行。如果不连接第二个磁盘,grub 就无法找到继续启动所需的文件。将第一个磁盘的 EFI 文件复制到第二个磁盘的 EFI 将使第二个磁盘可以正常启动。选择/将磁盘作为启动顺序中的第一个进行启动。

第一个 EFI 的修复方法是编辑 EFI/ubuntu/grub.cfg 文件(只有几行)以将磁盘/分区引用改回第一个磁盘,并使用第一个磁盘上的 Ubuntu 的 UUID(通过在终端中运行 sudo blkid 提供)。此更改允许 grub 从第一个磁盘启动。您(可能)需要的唯一其他更改是将 Windows 引导加载程序恢复为设备的默认设置。文件 /EFI/Boot/bootx64.efi 最初是 Windows 引导加载程序,但它可能被重命名为 /EFI/Boot/bckbootx64.efi(或可能是 bootx64.efi.bup)。检查 /EFI/Microsoft/Boot/bootmgfw.efi 中 Windows 引导加载程序的大小,以确保 bckbootloader.efi 确实是 Windows 引导加载程序。然后只需将其(或 /EFI/Microsoft/Boot/bootmgfw.efi)复制回 /EFI/Boot/bootx64.efi。将设备或 /EFI/Microsoft/Boot/bootmgfw.efi 放在启动顺序的第二位,这样如果未连接第二个磁盘,它将启动第二个条目。

相关内容