在最新的10.12 macOS上使用Ubuntu双启动Mac的最佳方法是什么?

我花了最近3个晚上搜索网络的每个角落,以便直接指导如何使用Ubuntu双重启动最新的macOS 10.12 Sierra,但似乎有很多人推荐做的方式,在其他论坛中人们建议反对。 我理想的情况当然是通过Apple标准引导加载程序中的alt-Key选择macOS或Linux。 大卫安德森发表了一篇关于这一点的post,这似乎对我很有吸引力,但我有点怀疑,因为他的方法没有评论或答案(不质疑他的能力),大多数人建议使用rEFInd。

在已安装macOS和Windows的Mac上安装Ubuntu

我当然对此很好,我已经阅读了Rod Smiths网站上的相关论文,但是因为每个新版本的macOS(特别是因为在El Capitan中集成SIP)似乎改变了它处理启动过程的方式和大多数关于这个主题的文章比10.11还要早,这让我感到有点失落。 我对rEFInd的最大担忧是其他用户抱怨的hibernatefunction出现故障。

我的设置包括在macOS 10.12.3上运行的2012年中期非视网膜Macbook Pro。 据我所知,我计划:

  • 使用磁盘实用程序在macOS中创建三个新的hfs + partions作为占位符(一个小的用于refind,一个用于Ubuntu的主根分区和一个交换分区)
  • 安装Ubuntu,重新格式化主Linux分区并选择交换分区(我是否必须更改引导加载程序安装的位置?)
  • 重新启动进入恢复模式并安装rEFInd ./refind-install --ownhfs /dev/disk0sX ,以便能够在启动时找到现有的Ubuntu并跳过GRUB

我已经读过在单独的hfs分区上安装rEFInd会解决hibernate问题。 在这种情况下,我是否必须在Linux安装期间选择/重新格式化小hfs分区作为EFI系统分区(如David Anderson建议的那样)? 我为引导加载程序安装设置了哪个卷?

在另一个线程中,用户表示,自从El Capitan以来我们最好安装不在单独的hfs上安装rEFInd,但没有陈述原因。 此外,此声明的支持性参数当然是rEFInd在其较新版本中默认安装在标准EFI分区上的事实。 即使我会以默认方式执行所有操作(包括hibernate问题的风险),安装Ubuntu时正确的分区选择是什么? 在这种情况下,我是否需要定义新的EFI系统分区,或者根本不需要?

您可能已经注意到,我有很多问题,如果这篇文章让您感到困惑,我会提前道歉。 我会感激任何帮助。

亲切的问候,蒂姆

我花了最近3个晚上搜索网络的每个角落,以便直接指导如何使用Ubuntu双重启动最新的macOS 10.12 Sierra,但似乎有很多人推荐做的方式,在其他论坛中人们建议反对。

你陷入了选择的悖论 – 在这个问题上有太多的选择会造成混乱。 实际上,很难说这个特定问题中的任何一个选项实际上都比任何其他选项更好,除了适合某些非常具体的目标,其中大部分都没有提及任何偏好,除了:

我理想的情况当然是通过Apple标准引导加载程序中的alt-Key选择macOS或Linux。

在这种情况下,您链接的解决方案是有道理的,虽然我怀疑它可能在某些方面有点过于复杂。 (不过,我并非100%肯定。)

但请注意,在启动Mac时按住Alt / Option键时看到的屏幕不是引导加载程序; 这是一个启动管理器。 您仍然依靠单独的引导加载程序(Apple的boot.efi文件来引导macOS或GRUB来引导Linux)来引导计算机。 从某种意义上说,这是术语的一个小问题; 但重要的是要了解引导管理器是用户界面工具,而引导加载程序将内核加载到内存中并执行它们,因为在某些情况下,这种区别非常重要。 不幸的是,人们往往对这种区别很草率。

每个新版本的macOS(特别是因为在El Capitan中集成了SIP)似乎改变了它处理启动过程的方式,而且关于这个主题的大多数文章都比10.11更早了,这让我感到有点失落。

是的,macOS启动的不断变化的本质可能是一个问题。 我建议你首先忽略任何暗示在BIOS / CSM /传统模式下安装Linux的事情。 虽然这样做有时是必要的,但今天的情况很少。 从广义上讲,你有两个选择:

  • 什么用作启动管理器 – 上面,你表达了对Mac的内置启动管理器的偏好。 此工具有限,但您知道它已经存在于计算机中。 两个主要的替代方案是GRUB 2(由Ubuntu安装,但我看到很少讨论使用它来启动macOS)和rEFInd(你显然知道它是Mac上的流行选择)。 rEFIt曾经是一个很好的选择,但它已经被放弃多年,所以rEFInd(我从rEFIt分叉)是一个更好的选择。
  • 什么用作引导加载程序 – 您引用的方法和使用GRUB作为引导管理器的任何方法都可能使用GRUB作为引导加载程序。 rEFInd也可以这样做,但rEFInd也可以使用EFI stub loader ,这是一个内核function,可以将Linux内核转换为自己的引导加载程序。

请注意,GRUB 既是引导管理器又是引导加载程序。 rEFInd,OTOH,技术上只是一个启动管理器; 但EFI存根加载器(技术上是引导加载程序但不是引导管理器)的存在使rEFInd能够像Linux内核的引导加载程序一样运行。

我对rEFInd的最大担忧是其他用户抱怨的hibernatefunction出现故障。

这是一个很大的问题,但我最近没有看到任何关于它的抱怨,所以我认为refind-install中的当前默认值可以解决这个问题。 正如您所建议的那样,将rEFInd安装到单独的HFS +分区是一种报告的解决方案,因此如果您将rEFInd安装到ESP然后遇到问题,您可以尝试使用它。

即使在安装了所有内容之后,也可以切换启动管理器和加载器。 在这个具体问题上,如果你决定使用rEFInd,你可以通过预留一个~200 MiB的分区来对冲你的赌注。 最初甚至不要在其上放置文件系统。 使用默认值安装rEFInd,它将把它放在ESP上。 如果遇到问题,可以在小备用分区上放置一个HFS +文件系统,然后重新安装rEFInd。 如果这解决了问题,那很好。 如果没有,您可以在您链接的页面中描述的方法的变体中将GRUB 2放在小HFS +分区上。

安装Ubuntu,重新格式化主Linux分区并选择交换分区(我是否必须更改引导加载程序安装的位置?)

如果Ubuntu安装程序在EFI模式下运行,它将把GRUB 2安装到ESP。 如果甚至提示安装引导加载程序的位置,则在EFI模式下会忽略它。

值得指出的是,如果您打算使用rEFInd和EFI存根加载器,您可以通过启动“安装前尝试”模式,打开终端窗口并输入ubiquity -b来启动Ubuntu安装程序。 -b选项告诉安装程序安装GRUB。 这样可以最大限度地降低将来启动策略的可能性,并且每当内核更新以修改其配置文件时,它都会阻止GRUB运行耗时的脚本(如果您不包含GRUB,则不会使用它启动过程)。

我已经读过在单独的hfs分区上安装rEFInd会解决hibernate问题。 在这种情况下,我是否必须在Linux安装期间选择/重新格式化小hfs分区作为EFI系统分区(如David Anderson建议的那样)?

从技术上讲,ESP 必须使用 FAT文件系统。 实际上,Mac的固件在启动引导加载程序时并不关心分区是标记为ESP还是标记为HFS +分区。

我还应该指出,我没有看到在您链接的说明中创建第二个ESP的重点。 也许我错过了一些东西。

即使我会以默认方式执行所有操作(包括hibernate问题的风险),安装Ubuntu时正确的分区选择是什么? 在这种情况下,我是否需要定义新的EFI系统分区,或者根本不需要?

不,ESP旨在由计算机上的所有操作系统共享。 但就Mac而言,Apple仅将其用于固件更新,AFAIK; 它的启动加载程序驻留在其Recovery HD卷上。

也就是说,你可以创建多个ESP; 这样做是合法的,AFAIK,所有EFI都支持这样的配置。 这样做很少或没有意义。