在 Mac 上安装 Linux 时应该注意什么?

10 linux osx system-installation

我有一台 Macbook Pro,我很喜欢它,虽然我仍然想念我的 Linux 盒子,但我需要很多东西,它们与 Mac OS X 并不完全兼容。我听说过很多关于在 Mac OS 上安装 Linux 的故事,有人说它是不是问题,但其他一些人倾向于不同的说法。

我的问题是,在 Mac OS 机器上安装 Linux 好还是不好?优缺点都有什么?

我非常了解虚拟机,但老实说,在物理硬件上运行时,它们的运行效果并不好。

str*_*gee 6

tl;dr:这是可行的,但你必须工作一点。如果您没有使用以太网的能力,并且正在从 netinst 媒体安装,那么您基本上就完蛋了(尽管如果您真的下定决心可以让它工作)。

当我最初写这个答案时,我只做过一次,但现在我又在另一台 Mac 上做了,所以我把帖子分成了两部分。

MacBook Pro 上的 Debian Jessie

2011 年初,我已在我的 MacBook Pro 上成功安装了 Debian Jessie(目前也称为 Debian Testing)。

我马上要说:如果你有一台 MacBook Air 和/或没有以太网线,如果你使用基于网络安装的发行版(例如 Arch Linux 或推荐的 Debian 映像),那么你在很大程度上会被搞砸,或其中一张 Ubuntu 备用 CD)。您基本上必须下载所有固件文件,以防止网络配置的方式启动安装媒体,手动安装固件,然后尝试获取固件。然后让它做网络配置。老实说,我从来没有让它起作用,也不完全确定这是一个合理的计划。

除此之外,安装很顺利。如果你打算保留 OS X,你应该使用 OS X 的内置磁盘工具来调整大小,因为 GNU/Linux 目前没有对默认 Mac 文件系统配置的写支持(HFS+ 带日志,对于那些好奇的人;只支持写无需日记即可工作)。请注意,您不必启动到恢复分区来执行此操作 - HFS+ 可以在线调整大小 - 但您可能会看到磁盘工具或整个计算机冻结. 别担心,这在我身上发生过几次,你只需要让它做它的事情,但是在这个过程发生时你将无法使用 Mac。我听说磁盘实用程序在创建空分区时有错误(您必须为磁盘实用程序执行此操作才能调整大小)。因此,我建议在新分区上创建一个 FAT 文件系统。欢迎您尝试选择“无”选项,但我很安全。

由于我使用了 Debian 安装程序,我不确定它是如何安装 GRUB 的(我很快就会用 Arch 替换 Debian,所以我将用我的结果编辑这个答案)。它似乎已安装到 Mac 的 EFI 分区中,但我不确定除此之外它是否有任何魔力。大概不是,但谁知道呢。安装 GRUB 后,您需要重新启动到 Mac OS X。 打开终端,挂载 EFI 分区(用于diskutil list转储有关磁盘的信息;它类似于 OS X 的blkid或版本lsblk),然后使用该bless实用程序直到您到达 GRUB重新启动时的菜单。(我不知道具体的步骤,因为我同时尝试了很多东西,因为我不想等待 OS X 漫长的重启时间)。有关man bless此实用程序的详细信息,请参阅OS X。

请注意,是的,成功后您将直接进入 GRUB 引导菜单(假设您使用的是 GRUB)。我不确定它是如何工作的内部结构,尤其是在 Apple 的 Moon-man EFI 实现中,但您可以通过以下方式选择要启动的操作系统:

  1. 如果你想要 GNU/Linux,什么都不做。将出现 GRUB 引导菜单(同样,假设您正在使用 GRUB)。

  2. 如果您想要 Mac OS X,请等待启动音,然后按住 Option 直到出现磁盘选择器菜单。应该出现两个磁盘选项:Macintosh HD 和 EFI Boot。选择 Macintosh HD。注意:GRUB 中的 Mac OS X 选项似乎除了挂起什么也不做。

  3. 如果您想要 Mac OS X 恢复,请等待启动音,然后按住 Option 直到出现磁盘选择器菜单。这与启动常规 OS X 完全相同,除了您选择 EFI 启动而不是 Macintosh HD。

Xorg 中的触摸板驱动程序非常缺乏。Xorg 将为您选择 Synaptics 驱动程序,这在 Apple 触摸板上简直就是废话。因此,谷歌搜索直到你找到一个合适的驱动程序,然后在你的xorg.conf(或者xorg.conf.d,取决于发行版)中用它覆盖 Synaptics 驱动程序,尽管我从来没有找到一个可以在 Apple 触控板上右击的驱动程序,这很好颈部疼痛。我会告诉你我的配置的确切细节,但我有一个初始的 Time Machine 备份正在运行,并且无法重新启动到 Debian。不过,当我这样做时,我会编辑这个答案。

除了无线(需要固件但只要你有以太网电缆就很容易引导)之外最大的事情是,如果我合上盖子,屏幕就无法唤醒。键盘背光会打开,但屏幕不会。初步谷歌搜索说这是一个内核错误,但我还没有研究确切的修复方法。我已经开始尝试使用pm-*公用事业系列(例如pm-suspend) 但没有做任何深入的事情。此问题的解决方法是切换到虚拟控制台,以“散焦”Xorg。这样,当您合上盖子时,您的计算机根本不会尝试挂起。请注意,这意味着背面的 Apple 标志将继续点亮,尽管调低屏幕亮度也会影响 Apple 标志。但是请注意,您只能在 Xorg 处于“焦点”状态时才能使用功能键。这让我巧妙地进入我的下一个主题......

键盘基本正常。Option 的工作原理与您期望的 alt 完全一样。命令是超级键。唯一让我失望的事情——虽然时间不长——是不需要按下 Fn 的功能键是硬件问题,而不是软件问题。因此,按例如提高亮度的工作方式与在 OS X 中相同 - 当您按 F2 时,它会调高亮度,而当您按 Fn+F2 时,它会发送 F2 键。

我应该提到的最后一件事是我从来没有让 3D 加速工作。GLX Gears 演示与(我认为)台面一起工作,但我被引导到 GNOME Fallback,所以显然真正的加速不起作用。我找到的解决方案让我在启动时挂起(请参阅我博客中有关 Debian 安装的最后一篇文章),所以我认为实际上没有解决方案,至少在linux-firmware-nonfree包被拆分得更多之前。

如果您对所有血腥细节感兴趣,您应该阅读我关于此事的博客文章(只需单击下一步,直到您到达名为“我已修复一切”的那篇文章)。他们还可能提到了一些我一时想不起来的细节(比如那个触摸板驱动程序的名字!)。

iMac 上的 Arch Linux(2013 年 9 月图像)

我为 OS X 中的 Arch 安装分配了空间(有关其背后的推理,请参阅 Debian 部分的开头),/home/.

CD 启动正常 - 只需按住 option,然后选择标有“EFI Boot”的 CD 图标。键盘工作正常,直到您在“启动 Arch”选项上按回车键,此时大概 Arch 会从 EFI 接管,因此 EFI 蓝牙键盘驱动程序。因此,您需要一个 USB 键盘来实际完成安装。

启动后我做的第一件事是使用 连接到互联网wifi-menu,这出乎意料地顺利运行。接下来,我弄乱了我为 Arch 分配的分区大小cgdisk,因为我改变了主意——这显然没问题,我能够毫无问题地重新启动到 OS X。我遇到的一个问题是我做的分区太小了,想切入OS X分区来扩展它。但是,当我使用“磁盘工具”缩小 OS X 分区时,它说“正在准备分区...”然后就再也没有了。尝试从恢复分区执行此操作(安装和卸载 Macintosh HD):结果相同。所以这个故事的寓意是:安装之前确定你的分区布局!

从那时起,安装就没有问题了。当我到引导加载器安装,我安装了grubefibootmgr并且dosfstools从拱包,所推荐的维基。我还安装了os-prober,虽然根据包描述这仅适用于 BIOS 系统。我安装了 EFI 系统分区/boot/efi(按照维基,我将在$esp下面引用它)。请注意(至少在我的计算机上)EFI 系统分区是第一个分区,使其/dev/sda1在 GNU/Linux 和/dev/disk0s1OS X/Darwin 下。我使用以下命令安装了 GRUB:

grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --recheck --debug
Run Code Online (Sandbox Code Playgroud)

如果您懒得看,这几乎是 wiki 为轻松安装所推荐的内容(不是将所有内容都保留在 EFI 分区中,因此有些东西会进入/boot)。最后它说“此系统不支持 EFI 变量”,但它似乎仍然安装正常(ls /boot/efi/EFI除了“APPLE”之外还返回“grub”)。

接下来,我生成了grub.cfg

grub-mkconfig -o /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

我会注意到它似乎在正确的分区上找到了 OS X,尽管根据我在 Debian 中的经验,我敢打赌菜单项不起作用。我们拭目以待。接下来,我重新启动到 OS X - 我似乎没有破坏任何东西,尽管 EFI 固件似乎需要更长的时间才能到达 Apple 标志,而不仅仅是灰屏(可能只是我,不确定)。

在准备使用时,bless我在 OS X 中安装了 EFI 分区:

sudo mkdir /mnt
sudo mount -t msdos /dev/disk0s1 /mnt
cd /mnt
Run Code Online (Sandbox Code Playgroud)

接下来,我执行了这个确切的命令序列,在每个命令之间重新启动以检查它是否有效(并在每次重新启动时重新安装):

sudo bless --folder /mnt/ --bootefi EFI/grub/grubx64.efi
Run Code Online (Sandbox Code Playgroud)

与我在 Debian 上的尝试相比,这产生了不同的、可以说是更好的结果。这次发生的事情是,当您按住 Option 时,现在提供“EFI Boot”作为选项,以及“Macintosh HD”和“Recovery-$YOUR_INSTALLED_OS_X_VERSION”。

GRUB 成功加载了 Arch,但我掉到了 initrd shell。这是因为我错误地配置了它,因此 LUKS 设备从未被创建,虽然不是由于特定于 Mac 的问题。

这就是我所得到的,但稍后我会回来进行更多编辑。

  • 这里有几件事要注意,对于 15 岁的孩子,我必须说,请继续遵循您所遵循的路径 ;-) 还请告诉我 Arch,它是我的“母亲”发行版,是我唯一使用的,也是我唯一使用的想在我的 Mac 上安装它。干杯! (2认同)