带 Linux 的双启动 OS X 或 macOS,无需 rEFInd

23 mac dual-boot macosx bootloader refind

我认为标题很好地总结了这篇文章的内容。我想双引导 macbook pro 13' 而不必使用第三方引导加载程序。我发现的所有教程都使用 rEFIt 或 rEFInd 在安装后成功启动 Linux,但我对清除默认的 Apple 引导加载程序的想法不满意,对我来说,这是最好的事情到我见过的引导加载程序。

有没有办法做到这一点?

谢谢!

Dav*_*son 25

Ubuntu 在 Mac 计算机上的第一个 EFI 系统分区中安装 grub 和其他文件。通常,这是 Mac 计算机上的第一个分区。使 Ubuntu 出现在启动管理器上的过程相当简单。步骤如下。

注意:从 Ubuntu 18 开始,安装程序软件应自动创建在 Mac 上启动 Ubuntu 所需的文件。因此,Ubuntu 18 及更高版本的用户应该可以跳过步骤 5 和 6。

  1. 安装 Ubuntu。

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

  3. 打开终端应用程序窗口。

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

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

    mkdir /Volumes/EFI/EFI/Boot
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

    这会将以下 Ubuntu 图标添加到启动菜单。

    os_ubuntu.png

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

  8. 使用 Finder 应用程序或输入以下命令卸载标有EFI.

    diskutil unmount disk0s1
    
    Run Code Online (Sandbox Code Playgroud)


Rod*_*ith 18

请注意,rEFIt 和 rEFInd 都不会损坏,更不用说“清除”默认的 Apple 引导加载程序;实际上,rEFIt 和 rEFInd 都只是将自己插入到引导过程中,然后自己启动 Apple 的引导加载程序。

从根本上说,rEFIt 和 rEFInd 是引导管理器。启动管理器提供一个菜单或一些其他用户界面工具,使您能够选择要启动的操作系统。大多数 EFI,包括 Apple 的,都包含自己的启动管理器;然而,这些内置的引导管理器通常非常原始。在 Mac 上,您可以通过在计算机启动时(当启动铃声响起时)按住 Option(或 Alt)键来启动内置启动管理器。Mac 的内置启动管理器难以访问且功能有限。我想这就是 Christoph Pfisterer 创建 rEFIt 的动机。在 rEFIt 年久失修后,我将 rEFIt 分成了 rEFInd。我对基于 UEFI 的 PC 的启动问题更有动力,但 rEFInd 仍然是绕过 Apple 启动管理器限制的一种方法。

相比之下,引导加载程序将内核加载到内存中并将控制权转移给它。引导加载程序不需要直接与用户交互(尽管可以)。rEFIt 和 rEFInd 在技术上都不是引导加载程序,尽管 Linux 内核创建了一条模糊的界限,因为它包含一个功能(EFI 存根加载程序),使其能够作为自己的 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 的选项。实际上,我不确定这会起作用——Apple 做的每件事都有些不同,这样做的人太少了,我不能保证它会奏效。不过,您可以尝试一下,然后在事后解决您遇到的任何问题。不过,我建议您在开始之前了解有关 EFI 引导的更多信息,这样您就不会犯一些基本错误,例如在 BIOS 模式下引导安装程序或以错误的方式设置分区。您可以从这些页面开始:

如果您决定坚持使用 rEFInd 的更广泛路径,请务必检查您遵循的任何说明的日期。一些非常旧的页面仍然存在,它们通常无法解决系统完整性保护 (SIP)等新问题;或者他们描述使用废弃的 rEFIt 而不是更新的 rEFInd。(虽然 rEFIt 仍然可以与较新的 OS X 版本一起使用,但这样做可能需要跳过未记录的环节。)

  • @Seamus,除了您指定的选项之外,还有其他选项,但实际上,加载 Linux 内核需要 *something*,而“something”通常是 GRUB 2 或 rEFInd。理论上,带有 EFI 存根加载器的 Linux 内核可以由 Apple 的 EFI 直接加载,但这是一个非常尴尬的解决方案,很少或没有 Linux 发行版 AFAIK 正式支持。有关更多详细信息,请参阅我的回答中引用的有关在 EFI 系统上安装 Linux 的页面。 (2认同)