Hackintosh 安装

黑苹果安装

安装记录

各个 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设备)

常见问题

  1. 安装卡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 说明

睡眠类

购买指南

  • 独立显卡 dGpu

    • Needed kexts:

      1. NVIDIA’s Web Drivers(opens new window)
      2. Lilu.kext(opens new window)
      3. WhateverGreen.kext(opens new window)
    • Extras:

      1. shikigva=40 boot flag: Swaps boardID to iMac14,2 for better Nvidia Support and whitelists patches
      2. nvda_drv_vrl=1 boot flag: Used for enabling the Web Drivers
  • [iGPU]

参考