大家好。我正在尝试尽可能缩短 iMac 双启动 OS-X 和 Ubuntu 的启动过程。到目前为止,我设法通过 Apple 的 EFI 引导管理器直接引导 grub(以及之后的 Ubuntu)。我通过伪装(通过硬链接、别名、文件夹树等)grub 二进制文件来实现这一点,就像 Apple 的固件所期望的那样来引导 OsX 本身。(例子:
$>sudo ln EFI/ubuntu/grubx64.efi System/Library/CoreServices/boot.efi
)
现在我正在尝试更进一步,即消除 GRUB。我知道现代 Linux 发行版确实在内核中包含 EFI 存根,因此原则上,可以直接引导到内核(通过 EFI/UEFI 固件),而不需要(辅助)引导管理器,例如 GRUB2 , 例如。(像这样:
$>sudo ln vmlinuz System/Library/CoreSerivces/boot.efi
) Apple 的问题在于它的“特殊”EFI 实现。为了让 Linux 内核的 EFI 存根工作,必须能够将参数传递给它(根路径、初始 ram 磁盘等)。这很容易使用辅助引导管理器(GRUB、rEFInd、ELILO 等)完成。他们确实将命令行字符串传递给 EFI 二进制文件),但这正是我想要绕过的。有没有办法将参数传递给由 Apple 的 EFI 固件加载的任意 EFI 二进制文件?(我已经尝试使用 com.apple.Boot.plist 但无济于事。)或者,有没有办法在引导过程中在没有命令行的情况下将参数传递给 linux 内核(可能通过一些文本文件)?