黑苹果安装
安装记录
各个 efi 驱动的作用
HfsPlus: Apple
固件中常见的具有 Bless 支持的专有 HFS 文件系统驱动程序。对于 Sandy Bridge 和更早的 CPU,由于这些 CPU 缺少 RDRAND 指令支持,应使用 HfsPlusLegacy 驱动程序。
OpenHfsPlus.efi
HFS 文件系统驱动。这个驱动是闭源的 HfsPlus 驱动的替代品,该驱动通常在苹果固件中发现。虽然功能完善,但是启动速度比 HFSPlus 慢三倍,并且尚未经过安全审核。推荐使用 HFSPlus.efi 若制作好启动盘,替换引导后读不到 macOS 的启动项,或许是该驱动没有启用。同时在 bigsur 之前的系统,recovery 分区也是需要该驱动,bigsur 的 recovery 现在是 apfs 的。
OpenRuntime.efi
原名 FwRuntimeServices.efi,用于实现 OC_FIRMWARE_RUNTIME 协议,通过支持只读、只写 NVRAM 变量,提升了 OpenCore 和 Lilu 的安全性。有些 Quirk 如 RequestBootVarRouting 依赖此驱动程序。由于 Runtime 驱动的性质(与目标操作系统并行运行),因此它不能在 OpenCore 本身实现,而是与 OpenCore 捆绑在一起。必须启用。
AudioDxe.efi
UEFI 固件中的 HDA 音频驱动程序。即在 OC 界面时加载的音频驱动,用于开机时的 duang~声和朗读当前选择的启动项名称。实用意义不大,不推荐使用,启用后电脑开机速度会变慢 3 秒左右。
OpenCanopy.efi
OC 的图像驱动。要启用 OC 的主题,就需要该驱动。
NvmExpressDxe.efi
NVMe 驱动程序。用于 4 代酷睿或更老的设备上,在安装了 nvme 协议的硬盘后 OC 读不到该硬盘启用。若在新平台上将 NVMe 转接至 PCIe,或许也需要该驱动。
CrScreenshotDxe.efi
截图驱动。启用后,按下 F10 将能够截图并保存在 EFI 分区根目录下。该驱动基于 Nikolaj Schlej 修改的 LongSoft 开发的 CrScreenshotDxe。
HiiDatabase.efi
UEFI 字体渲染驱动,适用于 3 代酷睿和之前更老的设备。在 UEFI Shell 中文字体渲染出错时启用,之后的电脑都不需要。
OpenPartitionDxe.efi
分区管理驱动程序。用于加载旧版 macOS 的 DMG 映像(如 macOS 10.9 的分区映像)。对于 2 代酷睿或者更早的 CPU,由于缺少 RDRAND 指令支持,应使用 PartitionDxeLegacy 驱动程序。
OpenUsbKbDxe.efi
USB 键盘驱动,在自定义 USB 键盘驱动程序的基础上新增了对 AppleKeyMapAggregator 协议的支持。这是内置的 KeySupport 的等效替代方案。根据固件不同,效果可能会更好或者更糟。启用苹果热键后需要该驱动,可能有些设备不用,未测试过。
UsbMouseDxe.efi
USB 鼠标驱动。一般只有虚拟机(如 OVMF)的固件中可能不包含该驱动,这些虚拟机需要依赖该驱动才能在引导界面使用鼠标。
Ps2KeyboardDxe.efi
PS/2 键盘驱动。OpenDuetPkg 和一些固件可能不包括这个驱动,但对于 PS/2 键盘来说该驱动是必须的。注意,和 OpenUsbKbDxe 不同,该驱动不提供对 AppleKeyMapAggregator 的支持、因此需要启用 KeySupport 这个 Quirk。
Ps2MouseDxe.efi
PS/2 鼠标驱动。一些非常老旧的笔记本的固件中可能不包含该驱动,但是这些笔记本需要依赖该驱动才能在引导界面使用触控板。
XhciDxe.efi
XHCI USB controller 驱动程序。从 2 代酷睿开始的大多数固件中都包含此驱动程序。在较早的固件或旧系统可以用于支持外部 USB 3.0 PCI 卡。
ExFatDxe.efi
用于 Bootcamp 支持的专有 ExFAT 文件系统驱动程序,通常可以在 Apple 固件中找到。 对于 Sandy Bridge 和更早的 CPU,由于缺少 RDRAND 指令支持,应使用 ExFatDxeLegacy 驱动程序。
BiosVideo.efi
基于 VESA 和传统 BIOS 接口实现图形输出协议的 CSM 视频驱动程序。用于支持脆弱 GOP 的 UEFI 固件(例如,低分辨率)。需要重新连接图形连接。包含在 OpenDuet 中,开箱即用。
ResetNvramEntry.efi
实现 OC_BOOT_ENTRY_PROTOCOL 的 OpenCore 插件,在启动选择器中添加了一个可配置的 Reset NVRAM 项。
OpenLinuxBoot.efi
实现 OC_BOOT_ENTRY_PROTOCOL 的 OpenCore 插件,允许直接检测和从 OpenCore 启动 Linux 发行版,无需通过 GRUB 进行链式加载。
OpenNtfsDxe.efi
New Technologies File System (NTFS) read-only 驱动程序。NTFS 是基于 Windows NT 的 Microsoft Windows 版本的主要文件系统。
OpenVariableRuntimeDxe.efi
OpenCore 插件(11.9 节的 OpenVariableRuntimeDxe)提供模拟 NVRAM 支持。OpenDuet 已经包含了这个驱动程序。
ToggleSipEntry.efi
实现 OC_BOOT_ENTRY_PROTOCOL 的 OpenCore 插件,在启动选择器菜单中添加了一个可配置的 Toggle SIP 项目到启动选择器菜单中。(译者注:这个插件用于关闭SIP)
EnhancedFatDxe.efi
来自 FatPkg 的 FAT 文件系统驱动程序。这个驱动程序已经被嵌入到所有 UEFI 固件中,无法为 OpenCore 使用。众所周知,许多固件的 FAT 支持实现都有错误,导致在尝试写操作时损坏文件系统。如果在引导过程中需要写入 EFI 分区,则可能需要将此驱动程序嵌入固件中。
btrfs_x64.efi
开源 BTRFS 文件系统驱动程序,需要从一个文件系统启动 OpenLinuxBoot,该文件系统在 Linux 非常常用。
ext4_x64.efi
开源 EXT4 文件系统驱动程序,需要用 OpenLinuxBoot 从 Linux 最常用的文件系统启动。
数据链路层:
1) driver efi
ArpDxe.efi
MnpDxe.efi
Dhcp4Dxe.efi
DnsDxe.efi
SnpDxe.efi
TcpDxe.efi
Udp4Dxe.efi
Ip4Dxe.efi
DpcDxe.efi
DPC全称Deferred Procedure Call。 Defer的意思是延迟,而这个DPC的作用就是注册函数,然后在之后的某个阶段调用。
- Ext4Dxe.efi
- HttpBootDxe.efi
- HttpDxe.efi
- HttpUtilitiesDxe.efi
ARP(Address Resolution Protocol):地址转换协议,将IP地址转换为物理的MAC地址;
MNP(Managed Network Protocol):提供异步数据包的I/O操作;
UNDI(Universal Network Device Interface):通用网络设备接口;
SNP(Simple Network Protocol):初始化和关闭网络接口,将网络数据帧交给网络接口传输到目的地址,从网络接口接收数据帧;
DPC(Deferred Procedure Call): 延迟过程调用,它用来解决UEFI网络栈中的TPL锁死问题;
2) 网络层:
IP(Internet Protocol): 用于点兑点的主机间传输数据;
3) 传输层:
- UDP(User Datagram Protocol): 提供无连接的、不可靠的数据报投递服务;
- TCP(Transmission Control Protocol): 面向连接的、可靠的数据传输协议;
4) 应用层:
- MTFTP(Multicast Trivial File Transfer Protocol): 多播小型文件传输协议;
- DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,提供发现网络启动服务器的服务;
- PXE(PreBoot eXecution Environment): 预启动执行环境,用来发现网络启动设备、下载启动文件;
- iSCSI(Internet Small Computer System Interface): 网络小型计算机系统接口,把原来用于本机的SCSI协议透过TCP/IP网络发送,是一种基于因特网和SCSI-3协议的存储技术;
对要开发的应用程序,主要使用TCP、UDP等传输层协议,以及MTFTP、DHCP等应用层协议。使用之前,需要先配置好网络测试环境。
SSDT
SSDT-PLUG
CPU加载X86原生电源管理所需的SSDT补丁,基本都需要,英特尔二三代不需要, 启用原生电源管理,必需要。文件来源,最好使用SSDTTime在自己电脑上提取,也可以下载通用版本
SSDT-EC
- 嵌入式控制器
- 非苹果的机型都在其 DSDT 中公开了一个 EC,但是通常与 macOS 不兼容,可能会导致恐慌,因此需要对 macOS 隐藏。
- 对于笔记本电脑,实际的嵌入式控制器仍然需要启用电池和热键才能工作,并且重命名 EC 还会导致 Windows 出现问题,因此最好在不禁用真正的嵌入式控制器的情况下创建假 EC。 处理EC用
SSDT-USBX
加载USBX供电用
SSDT-EC-USBX
上面两个的集合
SSDT-PNLF
背光修补
SSDT-AWAC:
如果300系及以上的主板BIOS中未含有切换AWAC/Legacy RTC时钟计时的选项,则需要使用该补丁,禁用AWAC,仿冒RTC(华硕一般都有,如果没有,使用这个可能还需要RTC Fix补丁,OCC中在ACPI下补丁处即可找到对应补丁)MacOS使用RTC时钟,目前不兼容AWAC系统时钟。搜索编译后的DSDT.DSL 关键字AWAC,如果有搜索到表示主板使用了AWAC时钟,那就需要使用AWAC.AML补丁来屏蔽,如果搜索不到AWAC关键字就不需要使用此补丁
SSDT-RTC0:和上面一起
SSDT-PMC
300系加载AppleEFINVRAM用,原生NVRAM 原生不支持nvram主板用来开启NVRAM支持的。十代主板 Z370都支持NVRAM所以不需要打此补丁
SSDT-SBUS
修复400系SBUS总线管理用,B360用了会无法睡眠
SSDT-EC-USBX.aml
MACOS不兼容EC控制器。所以此文件的作用是屏蔽主板ACPI表中的EC控制器。但是有些主板默认已经屏蔽了EC控制。查看方法:提取主板dsdt.aml,搜索PNP0C09, 显示return(zero)表示主板已经屏蔽EC控制器,无需使用此补丁。此补丁除了可以下载官方提代的通用版本,也可以通过使用Hackintool定制USB补丁生成。
SSDT-OC-XOSI.aml
由于Opencore是全局引导的,就是他不管你是MACOS还是WINDOWS引导。所使用的DSDT补丁都会生效。这样就可能会出现导致硬件识别或着其他问题(本人在华擎B460M pro4上如果不使用这个补丁,在windows下就会有一个不能识别的USB设备)
常见问题
- 安装卡exitbs:start主要是CFG锁的问题。
1#[EBILOG:EXITBS:STRRT] 2822-12-82T0B:39:32 2022.12.02 08:39
如下解决:
- 1.主板里有CFGlock项,一定要关闭。config.plist->Kernel->Quirks->AppleCpuPmCfgLock/AppleXcpmCfgLock->NO,这样就可以正产安装了。
- 2.主板里有没有CFGlock项,或无法关闭时,config.plist->Kernel->Quirks->AppleCpuPmCfgLock/AppleXcpmCfgLock->True/YES,也可以正常安装了。
驱动大神
- RehabMan
- OpenCore
- XHCI-unsupported
- FakePCIID.kext
- FakePCIID_AR9280_as_AR946x.kext
- FakePCIID_BCM57XX_as_BCM57765.kext
- FakePCIID_Broadcom_WiFi.kext
- FakePCIID_Intel_GbX.kext
- FakePCIID_Intel_HDMI_Audio.kext
- FakePCIID_Intel_HD_Graphics.kext
- FakePCIID_XHCIMux.kext
kext 说明
睡眠类
购买指南
Needed kexts:
- NVIDIA’s Web Drivers(opens new window)
- Lilu.kext(opens new window)
- WhateverGreen.kext(opens new window)
Extras:
shikigva=40
boot flag: Swaps boardID to iMac14,2 for better Nvidia Support and whitelists patchesnvda_drv_vrl=1
boot flag: Used for enabling the Web Drivers
[iGPU]
参考
- 官网安装文档
- macOS DMG下载
- AppleALC
- driver.efi
- USBMap
- USBToolBox 推荐使用USBMap
- OpenCore Configurator
- 工具列表
- MaciASL
- NVCAP old显卡 WebDriver
- 大神整理
- 国光黑苹果安装
- kext说明与注意事项