无法让 Ubuntu 在 Mac 上从 EFI 启动

无法让 Ubuntu 在 Mac 上从 EFI 启动

我想买一台 2006 年的旧 MacBook (技术规格请见此处)启动 Ubuntu 14.04.2 LTS。我已经使用第二天了,已经多次擦除硬盘并从磁盘重新安装了大约 8 次。我对 Linux 世界还很陌生。

我一直在关注此处的说明开始运行,经过一番努力,我终于开始运行grub-installhtfs-bless。这是为了使我的 Mac 上的启动过程能够在启动过程中识别 Ubuntu(这样我就不必手动从 GRUB 启动,这是我现在必须做的)。

我以 root 身份运行以下命令

grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id="$(lsb_release -ds)"

它返回以下内容:

Installing for x86_64-efi platform.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try: 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try: 'modprobe efivars' as root.
Installation finished.  No error reported.

因此它报告了致命错误(两次),但随后安装完成且没有任何错误。不知道。

它建议我尝试modprobe efivars从 root 运行,我当然照做了。它什么也没返回(它不应该返回),但再次运行会产生完全相同的错误。

我继续跑

hfs-bless "/boot/efi/EFI/$(lsb_release -ds)/System/Library/CoreServices/boot.efi"

它无注释地完成。它完成的事实表明grub-install在我的发行版文件夹下创建了正确的文件系统。所以这是一个好兆头。

说明中的下一步告诉我重新启动,以确保我直接启动到 Ubuntu。但这并没有发生。它还说我应该看到 Ubuntu 出现在 mac 引导加载程序屏幕下,但我没有看到。

从 GRUB 手动重新启动后,我重新进入并尝试继续执行说明,但在这里我遇到了瓶颈。我输入

efibootmgr

并遇到了同样的错误

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

因此我尝试modprobe efivars以 root 身份运行,当我再次运行时,再次出现相同的错误。

经过一番搜索,我发现问题在于我在 BIOS 中启动,而不是在 EFI 中启动。显然,解决方案是在 EFI 中启动,但我不知道该怎么做。我的机器上没有 BIOS 分区;只有一个 EFIBoot 分区。我的机器上不再有 Mac OSX 系统;只有 Ubuntu 14.04.2 LTS。

有时我能够启动 Ubuntu,有时我必须手动启动。我无法让 Ubuntu 磁盘映像显示在 Mac 引导加载程序中,也无法访问 EFI 变量。

如果我可以从命令行手动编辑某个文件以使我在 EFI 中启动,那么这可以帮助我解决这个问题。

任何帮助都将不胜感激。

答案1

我不是 100% 肯定,但这么老的 Mac 可能有一个 32 位 EFI,即使它有一个 64 位 CPU。(第一台基于 Intel 的 Mac 有 32 位 CPU 和 32 位 EFI。当 Apple 更新到 64 位 CPU 时,EFI 落后了一代左右,然后 EFI 才更新到 64 位。)对于原生 EFI 模式启动,使用与 EFI 位深度匹配的操作系统最容易在 EFI 模式下安装 - 换句话说,32 位操作系统在 32 位 EFI 上,或 64 位操作系统在 64 位 EFI 上。不幸的是,Ubuntu 的 32 位版本不提供 32 位 EFI 启动功能,因此使用 Ubuntu 执行此操作需要跳过一些重大环节,将 32 位 EFI 引导加载程序添加到可启动映像中。它可以做到(我已经做到了),但我没有参考精确的程序。(我曾经开始写这样一份文件,但涵盖所有可能性被证明是一项真正的挑战,所以我把它放在一边,再也没有回去。)

EFI 版本的 GRUB 确实能够交叉引导不匹配架构的内核 - 即在具有 32 位 EFI 的系统上引导 64 位内核,反之亦然(当然,前提是您的 CPU 是 64 位型号)。使用这种方法需要在 BIOS/CSM/旧模式下安装,然后在安装完成后安装 32 位 GRUB;或者破解 64 位安装程序以包含 32 位 GRUB。我不知道有哪个网站介绍如何在 Mac 上执行此操作,但是这个介绍了配备 64 位 CPU 和 32 位 EFI 的华硕平板电脑的流程。(在我撰写本文时,该网站已关闭;我希望这只是暂时的。)

尽管如此,特别是如果这是一台 64 位计算机,使用 EFI 模式进行 Ubuntu 单启动是比较困难的。很多将计算机视为具有传统 BIOS 的计算机更容易。创建 MBR 分区并以 BIOS 模式启动安装程序。您可以根据需要安装 32 位或 64 位 Ubuntu,而安装过程不会有太大偏差。当 Mac 的固件看到 MBR 分区表时,它将激活其 CSM,当它找不到任何可启动的 EFI 引导加载程序时,它将在 MBR 中启动 GRUB 的 BIOS 版本。这一切都应该顺利进行,就像具有基于 BIOS 的型号的计算机一样。主要的缺陷是控制安装程序的启动模式(BIOS 与 EFI)和使用 MBR(如果您使用 GPT,Mac 的固件将不会启用 BIOS 模式启动)。

主要缺点是更新固件会更困难,因为固件更新过程需要 EFI 模式启动。不过,在这么旧的电脑上,你更新固件的可能性有多大?此外,如果你以后决定使用 OS X 双启动,你必须从 MBR 转换为 GPT,并以某种方式重新安装 Linux 引导加载程序。

相关内容