OpenCore(OC)是一种新的黑苹果引导方式。曾经 Clover 将变色龙淘汰,而现在 OC 又将代替 Clover 作为黑苹果的新的引导方式。
我们先只去关注 OpenCore 中的 EFI 目录。
目录结构
EFI ├── BOOT │ └── BOOTx64.efi └── OC ├── ACPI │ ├── DSDT.aml │ ├── MYTABLE.aml │ └── SSDT-1.aml ├── Bootstrap │ └── Bootstrap.efi ├── Drivers │ ├── MyDriver.efi │ └── OtherDriver.efi ├── Kexts │ ├── MyKext.kext │ └── OtherKext.kext ├── Resources │ ├── Audio │ ├── Font │ ├── Image │ └── Label ├── Tools │ ├── Tool1.efi │ └── Tool2.efi ├── config.plist └── OpenCore.efi
目录及文件作用
BOOT
:用于存放 BOOTx64.efi 文件的目录。BOOTx64.efi
是 UEFI 默认启动项,用于在传统 BIOS 固件上模拟 UEFI 环境并加载OpenCore.efi
文件OC
ACPI
:用于存放 ACPI 信息的目录Bootstrap
:用于存放 Bootstrap.efi 文件的目录。Bootstrap.efi
被注册为自定义启动项,避免因BOOTx64.efi
被其它操作系统(如 Windows)所覆盖而导致 OpenCore 无法启动。更多细节请参见 BootProtectDrivers
:用于存放 UEFI 驱动程序的目录Kexts
:用于存放 kext 内核补丁的目录Resources
:用于存放媒体资源(如开机语音文件、OC GUI 界面所使用的图片等)的目录Tools
:用于存放 OpenCore 相关工具的目录config.plist
:OpenCore 的配置文件OpenCore.efi
:主引导驱动程序,负责操作系统加载
ACPI 目录
ACPI 目录用于存放 ACPI 信息文件。
Drivers 目录
Drivers 用于存放 UEFI 驱动程序文件。此目录下默认已经包含了很多驱动程序文件。
AppleUsbKbDxe.efi
:给使用模拟 UEFI 的老主板在 OpenCore 界面正常输入用的,请勿在 Ivy Bridge(3 代酷睿)及以上的主板上使用AudioDxe.efi
:开机 UEFI 界面的音效驱动,若需要开机 UEFI 界面的声音效果则需加载AudioDxe
* — UEFI 固件中的 HDA 音频驱动程序,适用于大多数 Intel 和其他一些模拟音频控制器。参考 acidanthera/bugtracker#740 来了解 AudioDxe 的已知问题。CrScreenshotDxe.efi
:开机 UEFI 的截图工具。启用后,按下 F10 将能够截图并保存在 EFI 分区根目录下ExFatDxe.efi
— 用于 Bootcamp 支持的专有 ExFAT 文件系统驱动程序,通常可以在 Apple 固件中找到。 对于Sandy Bridge
和更早的 CPU,由于缺少RDRAND
指令支持,应使用ExFatDxeLegacy
驱动程序。HfsPlus.efi
:用于 HFS 格式文件系统,这是必须加载的。对于Sandy Bridge
及更早的 CPU,由于这些 CPU 缺少RDRAND
指令支持,应使用HfsPlusLegacy.efi
而不是HfsPlus.efi
。HiiDatabase.efi
:用于给 Ivy Bridge(3 代酷睿)或更老代主板上支持 UEFI 字体渲染,或 UEFI Shell 中文字渲染异常时使用,新主板不需要EnhancedFatDxe.efi
— 来自FatPkg
的 FAT 文件系统驱动程序。这个驱动程序已经被嵌入到所有 UEFI 固件中,无法为 OpenCore 使用。众所周知,许多固件的 FAT 支持实现都有错误,导致在尝试写操作时损坏文件系统。如果在引导过程中需要写入 EFI 分区,则可能需要将此驱动程序嵌入固件中。NvmExpressDxe.efi
:用于在 Haswell(4 代酷睿)或更老的主板上支持 NVMe 硬盘,新主板不需要OpenCanopy.efi
:OpenCore 插件之一,用于实现第三方图形引导界面(开机主题)。OpenRuntime.efi
:OpenCore 插件之一,通过支持只读、只写 NVRAM 变量,提升了 OpenCore 和 Lilu 的安全性。是内存运用等必要的插件,必须加载OpenUsbKbDxe.efi
:USB 键盘驱动,给使用模拟 UEFI 的老主板在 OpenCore 界面正常输入用的, 请勿在 Ivy Bridge(3 代酷睿)及以上的主板上使用PartitionDxe.efi
:一个专门的分区管理驱动程序,用于加载旧版 macOS 的 DMG 映像(如 macOS 10.9 的分区映像)。对于Sandy Bridge
或者更早的 CPU,由于缺少RDRAND
指令支持,应使用PartitionDxeLegacy.efi
驱动程序。Ps2KeyboardDxe.efi
:PS/2 键盘驱动Ps2MouseDxe.efi
:PS/2 鼠标驱动。一些非常老旧的笔记本需要依赖该驱动才能在引导界面使用触控板。UsbMouseDxe.efi
:USB 鼠标驱动。一般只有虚拟机(如 OVMF)的固件中可能不包含该驱动,这些虚拟机需要依赖该驱动才能在引导界面使用鼠标。VBoxHfs.efi
— 带有 Bless 支持的 HFS 文件系统驱动。是 Apple 固件中HfsPlus
驱动的开源替代。虽然功能完善,但是启动速度比HFSPlus
慢三倍,并且尚未经过安全审核。XhciDxe.efi
:这个驱动用于给 Sandy Bridge(2 代酷睿)或更老的主板上支持 XHCI 用于外部 USB 3.0 PCI 卡,新主板不需要
Kexts 目录
Kexts 目录用于存放 kext 内核补丁文件。此目录下默认无任何内核补丁文件。Kext 即 Kernel Extension 的简称,正确添加的 Kext 文件会在系统启动时加载,用于拓展 macOS 内核对于硬件的支持。macOS 无法正常驱动的声卡、USB 等都可以通过这种方式正常驱动。
Lilu.kext
:Acidanthera 全家桶的底层依赖Applealc.kext
:声卡驱动VirtualSMC.kext
:传感器驱动依赖(其他传感器都需要此依赖)SMCProcessor.kext
:CPU 传感器SMCSuperIO.kext
:IO 传感器WhateverGreen.kext
:显卡驱动IntelMausi.kext
:Intel 千兆网卡驱动RealtekRTL8111.kext
:螃蟹 8111 千兆网卡驱动Usbinjectall.kext
:USB 驱动(你也可以在后期定制自己的 USB)。定制 USB 端口后需禁用NVMeFix.kext
:改善非 Apple SSD 的兼容性,为 NVMe 硬盘增加 ASPT 属性来保证节电等功能,官方推荐所有 NVMe 用户都使用此补丁AirportBrcmFixup.kext
:博通 Broadcom 无线网卡驱动BrcmPatchRAM.kext
:博通 Broadcom USB 蓝牙设备驱动
常用 kext 补丁介绍及下载:
- 以太网卡驱动汇总 | 套陆的部落阁 (tlhub.cn)
- NVMeFix NVMe 修复驱动 | 套陆的部落阁 (tlhub.cn)
- IntelBluetoothFirmware 英特尔蓝牙驱动 | 套陆的部落阁 (tlhub.cn)
- BrcmPatchRAM Broadcom USB 无线蓝牙网卡驱动 | 套陆的部落阁 (tlhub.cn)
- Lilu 插件库汇总 | 套陆的部落阁 (tlhub.cn)
Tools 目录
Tools 目录用于存放 OpenCore 相关工具。
BootKicker.efi
:进入 Apple 的 BootPicker 菜单(仅 Mac 同款显卡才可以使用)。ChipTune.efi
:测试 BeepGen 协议,生成不同频率和长度的音频信号。CleanNvram.efi
:重置 NVRAM 的工具。OpenCore 自带的 NVRAM 清理功能(引导界面的重置 NVRAM)已经足够好了。一般不使用FwProtect.efi
:解锁和回锁 NVRAM 保护,让其他工具在从 OpenCore 启动时能够获得完整的 NVRAM 访问权限。GopStop.efi
:用一个 简单的场景 测试 GraphicOutput 协议。HdaCodecDump.efi
:解析和转储高清晰度音频编解码器(Codec)信息(需要AudioDxe
)。KeyTester.efi
:在SimpleText
模式下测试键盘输入。MemTest86.efi
— 内存测试工具。OpenShell.efi.efi
:由 OpenCore 配置的UEFI Shell
,与绝大部分固件兼容。PavpProvision.efi
:执行 EPID 配置(需要配置证书数据)。ResetSystem.efi
:用于执行系统重置的实用程序。以重置类型作为参数:ColdReset
,Firmware
,WarmReset
,Shutdown
。默认为ColdReset
。RtcRw.efi
:读取和写入 RTC (CMOS) 存储器的使用程序。VerifyMsrE2.efi
:检查CFG Lock
(MSR0xE2
写保护)在所有 CPU 核心之间的一致性。用于检查主板上 CFG 锁的状态。排错时使用
我们暂时只用去关注 EFI/OC 目录下的 ACPI
、Drivers
和 Kexts
这三个目录,其他目录暂时不用去管。
建议遵循从简原则,先确保能进系统再在后期来增加其它功能。所以我们先根据我们的 CPU、声卡、显卡等硬件,仅下载所需要最少的文件放于相应的目录下。