Linux 6.11 EFI新功能:解决双GPU Mac的启动问题

发表时间: 2024-07-19 08:46

开发中的 Linux 6.11 内核中,已经合并了 EFI 更改。在 EFI 方面,本周期值得注意的是删除了对 EFI 伪内存映射的支持,以及通过假装启动的是苹果 macOS 而不是 Linux,为一些基于 x86 的旧版苹果 MacBook Pro 提供双 GPU 支持的变通方法。

EFI 伪内存映射支持正在从 Linux 内核中移除,因为它目前还未被使用,而且会导致机密计算(CoCo)虚拟机、未接受内存处理和其他方面的复杂性。该功能在过去主要用于 EFI 调试。

另一个值得一提的变化是 SMBIOS 的"调整",它指示 x86 MacBook Pro 的固件同时启用集成和独立 GPU。Linux 内核已经支持基于 T2 的苹果 Mac 上的 MMIO GMUX,以便使用独立 GPU。不过,要防止固件禁用集成 GPU,需要采取特殊的处理方法。尤其是,固件需要在启动苹果 macOS 时才会禁用 iGPU,而只启用 dGPU。

因此,在 Linux 6.11 中,对于少数已知的苹果 MacBook Pro 型号,EFI SMBIOS 代码会报告"Mac OS X 10.9"正在从操作系统供应商"苹果公司"启动,以防止 iGPU 被禁用。目前设置为禁用 iGPU 的 MacBook Pro 型号有:MacBookPro11,3、MacBookPro11,5、MacBookPro13,3、MacBookPro14,3、MacBookPro15,1、MacBookPro15,3、MacBookPro16,1 和 MacBookPro16,4。

这是继2013年的GRUB补丁之后,某些MacBook机型在启动时会识别为Mac OS X,以应对固件对硬件的不同配置,如果启动时没有报告为"Mac OS X"的话。因此,如果你使用的是这些较旧的 x86 MacBook Pro 机型之一,Linux 6.11 在启动时识别为"Mac OS X"而不是 Linux,那么双 GPU(iGPU)支持就应该表现正常,而且不会出现任何其他固件/硬件行为差异。

有关本周期所有EFI功能更新的更多详情,请参阅昨天的 EFI合并到 Linux 6.11 Git。