无法从 GRUB 链式加载 OS X Clover 引导加载程序

Pol*_*les 8 boot grub2 dual-boot macosx uefi

所以我有一个三重引导设置,其中我刚刚将 OS X (Hackintosh) 更新到最新版本和一个新的引导加载程序(从 Chimera 到 Clover)。它看起来像这样:

  • /dev/sda ( hd0 )上的 Ubuntu 14.04 LTS
  • /dev/sdb ( hd3 )上的 Windows 10 专业版
  • /dev/sdd ( hd2 )上的 OS X 10.11 El Capitan ,具有以下分区:
    • GPT1为EFI引导程序三叶草(67E5-17ED是UUID此卷)
    • 主 OS X 磁盘的gpt2

一切正常,我可以毫无问题地从 BIOS 启动到每个操作系统。但是,我喜欢使用 GRUB 作为我的主要引导程序。


以前,通过有这样的事情:

menuentry "OS X 10.10" {
    insmod hfsplus
    set root=(hd2,gpt2)
    multiboot /boot
}
Run Code Online (Sandbox Code Playgroud)

我能够毫无问题地从 GRUB链式加载到Chimera引导加载程序,并从那里引导 OS X。


但是,使用新的基于 UEFI 的Clover引导加载程序,无论我尝试:

menuentry "OS X 10.11" {
    insmod chain
    insmod part_gpt
    set root=(hd2,gpt1)
    chainloader /efi/boot/bootx64.efi
}
Run Code Online (Sandbox Code Playgroud)

或者

menuentry "OS X 10.11" {
    insmod part_gpt
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --no-floppy --set=root 67E5-17ED
    chainloader ($root)/efi/boot/bootx64.efi
}
Run Code Online (Sandbox Code Playgroud)

正如这里这里所建议的那样,

invalid signature当我选择“OS X 10.11”时,我不断收到来自 GRUB的错误消息。

我什至试过:

menuentry "OS X 10.11" {
    insmod chain
    insmod part_gpt
    set root=(hd2,gpt2)
    chainloader +1
}
Run Code Online (Sandbox Code Playgroud)

这会导致一个空白屏幕,顶部有一些随机字符。


这个问题似乎是相同的这个。但是,我在 BIOS 首选项中禁用了安全启动。

无论如何,我的问题是我是否可以尝试将这些引导加载程序链式加载在一起以像 Chimera 一样工作,或者是否有另一种方法可以从 GRUB 直接引导到 OS X。

提前致谢,

Rod*_*ith 7

必须注意您的启动模式:BIOS/CSM/legacy 或 EFI/UEFI。

我最后一次检查时,Chimera 严格来说是一个 BIOS 模式引导加载程序。因为 GRUB 无法从 EFI 模式更改为 BIOS 模式(或反之亦然),这意味着您的 GRUB 也(或至少曾经)安装在 BIOS 模式下。如果您已将 GRUB 从 BIOS 模式切换到 EFI 模式,这是一个关键细节。

三叶草,OTOH,更复杂。它的核心是作为一个 EFI 模式启动管理器来启动 OS X 的 EFI 模式启动加载程序;然而,Clover 包括一个完整的 EFI 实现,它像 BIOS 模式引导加载程序一样运行——本质上,一个 EFI 在 BIOS 模式计算机上作为软件运行,而不是作为固件运行。因此,Clover 可以在 BIOS 模式计算机或基于 EFI 的计算机上运行。如果您没有对 GRUB 进行任何更改,则只有在您还安装了 Clover 的 BIOS 模式 EFI“模拟器”软件时,您才能从 GRUB 启动 Clover;然后您需要像启动 Chameleon 一样启动 Clover。你的前几个 Clover 示例(那些引用了bootx64.efi) 可以在运行 EFI 模式版本的 GRUB 的基于 EFI 的计算机上工作,但如果您使用的是 BIOS 模式计算机,则无法工作。您的最后一个示例(带有该chainloader +1行)用于 BIOS 模式启动,如果您安装了 Clover 的 BIOS 模式组件,可能会起作用。

退后一步,您可能想要检查其他操作系统组件以及计算机的功能。如果您的计算机是在 2011 年年中或更晚推出的,则它可能是基于 EFI 的;但如果它更旧,它可能是一个只有 BIOS 的机器。Ubuntu 很容易在引导模式之间切换,只要您知道如何为每种模式安装合适的引导加载程序。Windows 有点棘手,因为它将其分区表类型与其引导模式联系起来——Windows 仅在 BIOS 模式下从 MBR 磁盘和 EFI 模式下仅从 GPT 磁盘引导。(我听说过此规则的一些例外情况,但它们非常奇特。)因此,切换 Windows 引导模式需要更改分区表安装新的引导加载程序。

在所有这些问题之间,您的三重引导设置有很多复杂性,您忽略了最重要的细节——即大多数操作系统的分区表类型和引导模式(尽管我已经推断出一些那个信息)。这使得很难提供具体的建议。不过有一点:Clover 的配置和设置远远超出了本站点的范围。但是,如果您想使用 GRUB 作为您的主要引导管理器,您必须注意您的引导模式并以与 GRUB 使用的相同模式(BIOS/CSM/legacy vs. EFi/UEFI)安装后续引导加载程序。


编辑:

根据您的新信息,有几种可能的方法可以继续。一种是,如您所建议的,将 Windows 和 Ubuntu 都转换为以 EFI 模式启动。另一种是混合设置。一种方法如下:

  1. 下载我的rEFInd 引导管理器的 USB 闪存驱动器或 CD-R 版本,并从中创建引导介质。
  2. 引导至 rEFInd。它应该显示一个适用于 Ubuntu 的选项,可能还有其他一些选项。(如果有 OS X 选项,请忽略它;它不会起作用。如果有 Clover 选项,它可能会起作用。)
  3. 启动 Ubuntu。
  4. 安装 rEFInd 的 PPA 或 Debian 软件包版本。
  5. 编辑/boot/efi/EFI/refind/refind.conf:取消注释该scanfor行并添加hdbios到选项列表中。
  6. 移除 rEFInd 外部引导介质并以 EFI 模式重新启动。rEFInd 应该会出现并使您能够启动 Ubuntu,也许还有 Clover(从那里开始,OS X)。还应该有一个或多个灰色菱形图标,其中之一应该可以启动 Windows。
  7. 如果您只看到一个灰色图标形状的图标并且它无法启动 Windows,您必须refind.conf再次编辑并取消对该uefi_deep_legacy_scan选项的注释。请注意,您可能需要手动安装 ESP,或者添加一个选项来/etc/fstab自动安装。

此时您可能需要进行更多调整,但这就是它的基本轮廓。在此配置中,rEFInd 将使您能够启动 Ubuntu(在 EFI 模式下)、Clover(在 EFI 模式下)或 Windows(在 BIOS 模式下);和 Clover 应该启动 OS X(并且可能会显示适用于 Windows 和/或 Linux 的选项)。

Clover 作为主引导管理器应该可以实现类似的功能;但是,通过此设置,Clover 将显示 OS X(在 EFI 模式下)、GRUB(在 BIOS 模式下;如果安装grub-efi软件包则在 EFI 模式下)和 Windows(在 BIOS 模式下)的选项。我不知道你设置这个的确切步骤。您更喜欢 Clover 还是 rEFInd 作为您的主要启动菜单取决于个人喜好。

您将所有内容转换为 EFI 模式的计划也是可行的,但在短期内需要付出更多努力,风险也略高。设置完成后,您可以使用 GRUB、Clover 或 rEFInd 作为主引导管理器。如果你使用 GRUB 或 rEFInd 作为主引导管理器,你仍然需要 Clover 来引导 OS X;如果您使用 Clover 作为主引导管理器,则需要使用 GRUB 或 rEFInd 来引导 Ubuntu。

您可以在 USB 闪存驱动器或 CD-R 上使用 rEFInd 来使用其中一些选项来查看它们是如何工作的,对您的配置的风险可以忽略不计,因为您不会对硬盘进行任何更改。

总而言之,您有很多关于如何进行的选择,在易用性或复杂性方面没有明显的赢家——它们都应该可以很好地工作,但是至少一个操作系统需要两个启动管理器引导路径。