如何使用 UEFI 在单个硬盘驱动器上安装两个独立的 Ubuntu 安装?

ger*_*ijk 11 grub2 dual-boot uefi grub-efi

出于安全原因,我想在使用 UEFI 的单硬盘计算机上安装一个辅助的完全独立的操作系统。两种安装都应该能够使用不同的 LUKS 加密分区作为根设备(加密之上的 LVM)并且需要能够使用自己的内核。

使用两个不同的操作系统进行双启动并不是什么大问题。Ubuntu 和 Fedora 不会干扰并且可以共享 EFI 系统分区,但是两个 Ubuntu 安装会相互竞争,因为它们都希望在同一个 EFI 位置安装它们的 Grub 实例。

  • 有没有办法更改 Ubuntu 以将 Grub 安装在与安装/boot/efi/EFI/ubuntu期间不同的位置?我需要一种持久的方式,以便软件包更新和内核/grub 更新仍然安装在该路径中。就像 Fedora 的 Grub 在/boot/efi/EFI/fedora. 我在 Grub 中找不到那个配置选项。如果可以,我的戴尔 UEFI 启动菜单将允许我选择要加载的操作系统。也许我在这里缺少 efibootmgr 和 grub-efi 之间的一些胶水。

  • 或者,是否可以从两个 Ubuntu 安装之一中使用单个 Grub 安装并让它自动检测正确的启动设置?我的意思是,我知道os-prober会找到/boot带有内核的另一个分区,但是它如何知道该操作系统的正确引导参数(例如,锁定加密卷中的 LVM 卷作为根文件系统)?我可以理解它可以与未加密的单分区安装一起使用,但它无法/boot与其对应的根文件系统匹配,对吗?如果加密,这是完全不可能的。因此,这需要对 grub 配置文件进行大量手动调整。我也不喜欢这种单一共享引导加载程序配置的选项,这在某种程度上降低了两个操作系统的隔离度。

顺便说一下,我对基于服务器文本的专家安装很好。还有一些自定义配置,只要我不必为每个内核/Grub 更新重复这些步骤。

Rod*_*ith 7

我有两个建议...

选项 #1:单独的 ESP

在 EFI 下,引导加载程序驻留在“该” EFI 系统分区 (ESP) 上。我把“the”这个词放在引号中,因为没有规定说你只能使用一个 ESP。如果您在硬盘上创建了两个 ESP,您可以在第一次安装时使用其中一个,在第二次安装时使用第二个 ESP。这应该非常无缝地工作,尽管您必须手动创建分区(在安装过程中使用“其他”选项),至少对于您的第二个 Ubuntu 安装。

这种方法的一个问题是,尽管 EFI 规范明确指出您可以创建任意数量的 ESP,但某些软件可能会被它混淆。一个突出的例子是 Windows 安装程序,至少通过 Windows 7(我不知道 Windows 8 或更高版本);当 Windows 7 安装程序看到一个带有两个 ESP 的磁盘时,它会剥落并做一些奇怪的事情。IIRC,它没有正确完成自己的安装。可以想象,Windows 修复工具也会遇到同样的问题。如果您不在此系统上启动 Windows,这应该没什么大不了的。如果你使用 Windows 启动时,您应该简单地意识到这个问题,因为如果遇到问题,您可以通过临时更改非 Windows ESP 的类型代码来轻松克服它。请注意,Windows 将在具有多个 ESP 的磁盘上正常启动;它只是安装程序在这些磁盘上窒息。

另一个问题是如何在两个发行版之间切换。您可能需要使用GRUB Customizer 之类的工具自定义一个或两个安装的 GRUB 设置另一个(但不是不兼容)选项是使用固件自己的引导管理器在两个 GRUB 安装之间切换,并使用每个安装来引导它自己的 Ubuntu 版本。

选项#2:放弃 GRUB(或至少是 Ubuntu 的 GRUB 工具)

对于您的情况,GRUB 的问题在于您有两个安装,并且 GRUB 维护工具可能会被该配置混淆。这种观察导致明显的解决方案,即您不应该使用这些工具。还有其他几个适用于 Linux 的 EFI 引导加载程序,其中大多数比 GRUB 更易于手动维护。您可以设置 ELILO、SYSLINUX、Fedora 打补丁的 GRUB Legacy、gummiboot 或 rEFInd 并手动管理这两个安装。事实上,因为 rEFInd 每次启动时都会检测内核,所以一旦设置,rEFInd 应该接近免维护。或者,但以类似的方式,您可以手动编辑grub.cfg文件以执行您想要的操作,而不是依赖 GRUB 安装脚本。

除了 rEFInd,所有这些工具都需要您在更新内核时进行配置更改,这将是一个拖累。还有一个问题是何时以及如何安装额外的引导程序。我可能会将它推迟到您第二次安装 Ubuntu 之后,因为每次安装都会将自己的 GRUB 副本注册为默认引导加载程序,而您想要覆盖该默认值。

另请注意,这些工具都不能从加密文件系统或 LVM 读取内核,因此您需要/boot为每个 Ubuntu 安装创建一个单独的未加密分区。这是我见过的大多数说明都说要设置加密的 Ubuntu 安装的方式,所以这可能没什么大不了的,除非你想在磁盘加密的“流血边缘”上玩。

某些 EFI 引导加载程序具有额外的特定分区或文件系统要求。最值得注意的是,ELILO、SYSLINUX 和 gunmiboot 都要求内核驻留在 FAT 分区上,而 ESP 最适合这一点。您可以通过在 上安装 ESP 来实现/boot,但在 Ubuntu 中这是一个不确定的解决方案,因为某些软件包更新需要符号链接。您在使用两个单独的 Ubuntu 安装时也会遇到问题,因为它们都试图声明相同的文件。(在这种情况下,“ESP”实际上是指“引导加载程序运行所在的分区”,因此在这种情况下您可以只有一个 ESP。)GRUB Legacy 和 rEFInd 在这方面更加灵活。

我的推荐

就我个人而言,我会为此使用 rEFInd——但是当我维护 rEFInd 时,我并不是完全公正的。事实上,我有一台可以在三个 Ubuntu 安装之间进行多重引导的计算机,并且 rEFInd 在它们之间切换就好了。这个特定的系统不使用加密,但我怀疑从 rEFInd 的角度来看这是否会导致任何新问题。

也就是说,单独的 ESP 也应该可以正常工作,但需要注意的是,您可能需要使用 GRUB 定制器来调整至少其中一个 GRUB 副本的设置。