在不使用rEFInd的情况下,将OS X或macOS与Linux双启动

我觉得标题已经很好地总结了这篇文章的内容。我想在不使用第三方引导程序的情况下,将Macbook Pro 13寸设置为双系统启动。我找到的所有教程都是使用rEFIt或rEFInd来成功引导Linux安装后的启动,但我对覆盖默认苹果引导程序的想法感到不舒服,因为对我来说,它是我见过的最好的引导程序。
有没有办法实现这个呢?
谢谢!

可以让苹果的 EFI 直接加载 Ubuntu 的 EFI 桩,而无需使用 rEFInd 或 GRUB 2。请参考此问题中的说明。 - Tanner
2个回答

Ubuntu在Mac电脑上将grub和其他文件安装在第一个EFI系统分区中。通常,这是Mac电脑上的第一个分区。使Ubuntu出现在启动管理器上的过程相当简单。以下是具体步骤。
注意:从Ubuntu 18开始,安装程序应自动创建启动Ubuntu所需的文件。因此,Ubuntu 18及更高版本的用户应该可以跳过第5和第6步。
  1. 安装Ubuntu。

  2. 完成后,重新启动并按住 option 键,调用启动管理器。选择从OS X(或macOS)卷启动。

  3. 打开终端应用窗口。

  4. 通过输入下面给出的命令挂载EFI系统分区。

    diskutil mount disk0s1
    
  5. 在文件夹/Volumes/EFI/EFI中创建一个名为Boot的文件夹。您可以使用Finder应用程序或输入下面给出的命令。

    mkdir /Volumes/EFI/EFI/Boot
    
  6. 将文件grubx64.efi从文件夹/Volumes/EFI/EFI/ubuntu复制到文件夹/Volumes/EFI/EFI/Boot。接下来,将此文件重命名为bootx64.efi。这一步可以通过使用Finder应用程序或输入下面给出的命令来完成。

    cp /Volumes/EFI/EFI/ubuntu/grubx64.efi /Volumes/EFI/EFI/Boot/bootx64.efi
    
  7. (可选)从sourceforge网站Mac icns下载图标集。使用Finder应用程序打开已下载的文件mac-icns.dmg,然后输入下面的命令将Ubuntu图标文件os_ubuntu.icns复制到EFI系统分区。

    cp /Volumes/mac-icns/OSX10.11.6/os_ubuntu.icns /Volumes/EFI/.VolumeIcon.icns
    

    这将在启动菜单中添加以下Ubuntu图标。

    os_ubuntu.png

    注意:完成后,您可以使用Finder应用程序弹出mac-icns卷。

  8. 使用Finder应用程序或输入下面给出的命令卸载标记为EFI的EFI系统分区。

    diskutil unmount disk0s1
    

1+1 对我来说完美地运行了,我在我的2014款Macbook Air上使用macOS Sierra安装了Linux Mint 18作为双系统。 - setholopolus
第7步是如何工作的?为什么只会更改Ubuntu分区的图标?我能否也更改Macintosh HD的图标,以便在启动菜单中,Mac分区有一个Sierra的标志,Linux分区有一个Ubuntu的标志? - Arc676
好的,现在我已经按照你指定的位置放置了Ubuntu图标,并且在我的Sierra分区的根目录下放置了Mac图标。Mac图标显示为Mac HD,而Ubuntu图标则显示为另一个分区。然而,我有一种感觉,将图标放置在你指定的位置只是将其设置为默认图标,因为将图标放置在Ubuntu分区的根目录中并没有起作用。如果我要安装第三个操作系统会怎样呢? - Arc676
1@Arc676:安装第三个操作系统可能需要一个第二个EFI分区。你可以拥有无限数量的EFI分区。关于第二个EFI分区的示例可以在这个答案中找到。 - David Anderson
这个答案救了我一命。我花了至少4天的时间,试图解决我的iMac的问题。 基本上,rEFInd 损坏了iMac的原生显示驱动程序。不知道是怎么回事,它会将默认分辨率设置为最低分辨率。 解决这个问题的方法是删除 rEFInd。重新安装 rEFInd 会再次损坏驱动程序,如此循环。 感谢 @DavidAnderson。 - jnkrois
哈...我喜欢这个 - "1. 安装Ubuntu"。要是对我来说能那么简单就好了!我已经发布了两个问题,但至今没有得到答案(Q1Q2),但仍然没有解决方案。你能详细说明一下你的“第一步”吗? - Seamus
@Seamus:问题不是关于如何安装Ubuntu。你的Q1和Q2链接指向同一个问题,目前有两个答案发布。我已经在如何安装Ubuntu的问题上发布了答案,例如这里 - David Anderson
@DavidAnderson:我在Q2的URL上搞错了,对此表示抱歉。 - Seamus
@DavidAnderson:是的-对于Q1有两个答案,但自从我评论了japhwil的回答后,又有一个新的答案发布了。5月25日的那个答案对我没有帮助,并且提问者也没有回复我的澄清请求。 - Seamus
@DavidAnderson:关于你在这里的回答:我记得看到过这个答案,但是你提到使用VirtualBox image让我感到困惑。我不使用VirtualBox,当时我认为这是另一个“兔子洞”。我想我的先入为主的观念是,如果它不使用从Ubuntu下载的ISO,则对我没有帮助。我刚刚重新阅读了答案,仍然不明白你在这里做了什么。让我进一步研究一下,如果有问题,我会在那里发布的。 - Seamus
1我在Mac上安装了Ubuntu。当我准备发布步骤时,我想要包含图片。为了做到这一点,我在虚拟机中安装了Ubuntu。这使我能够捕捉图片并在我的回答中使用。这些说明是用于在实际的Mac上安装Ubuntu的。回答中给出的步骤从提问者在发布问题时停下的地方开始。我不认为你在阅读我的回答之前阅读了问题。 - David Anderson
@DavidAnderson:你说得对 - 我已经看到光明了!:) +1 - Seamus

请注意,rEFIt和rEFInd都不会损坏,更不会“擦除”默认的苹果引导加载程序;事实上,rEFIt和rEFInd只是将自己插入到引导过程中,然后启动苹果的引导加载程序。
从根本上讲,rEFIt和rEFInd是引导管理器。引导管理器提供一个菜单或其他用户界面工具,使您可以选择要引导的操作系统。大多数EFI(包括苹果的EFI)都包含自己的引导管理器;然而,这些内置的引导管理器通常非常简陋。在Mac上,您可以通过按住Option(或Alt)键启动计算机时(启动音响起时)来启动内置的引导管理器。Mac的内置引导管理器使用起来很麻烦,并且功能有限。我想这就是Christoph Pfisterer创建rEFIt的原因。在rEFIt失修后,我将其分叉为rEFInd。我更多地受到UEFI-based PC上的引导问题的驱动,但rEFInd仍然是绕过苹果引导管理器限制的一种方法。
引导加载程序与引导程序不同,它将内核加载到内存中并将控制权转移给它。引导加载程序不需要直接与用户交互(尽管它可以)。rEFIt和rEFInd在技术上都不是引导加载程序,尽管Linux内核创建了一个模糊的界线,因为它包含了一个功能(EFI stub加载程序),使其能够作为自己的EFI引导加载程序运行。此外,一些引导加载程序,如流行于Linux发行版的GRUB 2引导加载程序,既充当引导加载程序又充当引导管理器。
如果您在Mac上双启动Ubuntu和OS X(或最近更名为macOS),则在引导过程中添加某种工具是必要的。您可以依赖于Apple的引导管理器来控制启动哪个操作系统,在这种情况下,启动OS X时不涉及非Apple工具。但是,您仍然需要某种工具(如GRUB、rEFInd或其他引导加载程序或引导管理器)来启动Linux内核。鉴于大多数这些工具比Apple内置的引导管理器更方便使用,大多数用户将它们设置在引导顺序中,以便在启动OS X之前调用它们。
如果你对rEFInd不感兴趣,那么你可以完全不使用它。你可以依赖GRUB 2的引导管理功能,或者安装另一个工具,比如gummiboot/systemd-boot。理论上,如果你以EFI模式安装Ubuntu,它应该会以一种使其成为默认引导管理器的方式安装GRUB 2,并提供引导Ubuntu和OS X的选项。实际上,我不确定这样做是否有效--苹果的做法与众不同,而且很少有人这样做,所以我不能保证它会起作用。不过你可以尝试一下,然后在遇到任何问题之后进行修复。我建议在开始之前先了解更多关于EFI引导的知识,这样你就不会犯一些基本错误,比如以BIOS模式启动安装程序或以错误的方式设置分区。你可以从以下页面开始学习:

如果你决定坚持使用更常见的rEFInd方法,一定要检查所遵循的指令的日期。一些非常陈旧的页面仍然存在,它们通常无法解决新问题,例如System Integrity Protection (SIP);或者它们描述的是使用已废弃的rEFIt而不是更新的rEFInd。(虽然rEFIt仍然可以与较新的OS X版本配合使用,但这可能需要一些未记录的步骤。)


据我理解,如果要在 macOS 和 Linux 上进行双启动,必须使用 rEFInd(或其他替代工具)或者 grub 来引导 Linux 内核。我的理解正确吗? - Seamus
2@Seamus,除了你所指定的选项之外,还有其他选择,但实际上,需要一些东西来加载Linux内核,而通常这个“东西”要么是GRUB 2,要么是rEFInd。理论上,一个带有EFI存根加载程序的Linux内核可以直接由苹果的EFI加载,但这是一个非常笨拙的解决方案,据我所知,官方支持的Linux发行版很少或没有支持这种方法。请参阅我在回答中提到的有关在EFI系统上安装Linux的页面,以获取更多详细信息。 - Rod Smith
rEFInd还能够在APFS分区内引导macOS吗?我之前有一个双启动设置,但是某次grub更新导致双启动失效。开机时按住Alt键只显示一个“Windows”图标,然后在黑屏中显示找不到操作系统。只有通过efibootmgr将Debian设置为启动顺序的第一项,才能直接引导进入Debian。 - hyiltiz