OpenCore 引导安装 macOS Ventura 教程

从零开始安装黑苹果记录

Apr 5, 2023
6000
#黑苹果#OpenCore#Hackintosh#Ventura

本文最近一次更新于 1 年 7 个月前,其中的内容很可能已经有所发展或是发生改变。

https://cdn.blog.itswincer.net/img/open-core-boot-macos-ventura-tutorial.webp

几年前,我专门组过一台电脑折腾黑苹果与 Windows 双系统,之后便一直稳定用到现在(没有手贱乱升级)。最近发现硬盘已经快占满了,500G 的空间还要分一半给 Windows 用,也真是难为它了。正赶上固态价格大幅跳水,于是我买了一块 2T 的固态来升级硬件配置,正好心里也想顺便升级一下软件来体验最新版的 macOS Ventura,是以写下这篇文章作为记录。

我的黑苹果配置见之前的文章,只有固态更新成了梵想 2T PCIe 4.0。

准备工作

BIOS 配置

请按照 OpenCore 官方教程推荐的设置来更新你的 BIOS,如果 BIOS 缺失上述某项,可以忽略。比如我的主板就缺失 CFG Lock 这一项,不过使用下来也没有遇到什么问题。

下载 macOS 镜像

这一步可以直接从 App Store 下载最新版操作系统,比如我这里需要安装 Ventura 就直接打开搜索 macOS Ventura 即可。

如果你手头没有 macOS 设备,可以参考 OpenCore 官方文档:如何使用 Windows 来刻录启动盘

不过有的驱动或者补丁与最新版系统可能会有兼容性问题,因此可以选择下载稍微早一点的系统。不过早一点的系统就不能从 App Store 下载来,只能用其他方式了,在终端运行:

>>> softwareupdate --list-full-installers
Finding available software
Software Update found the following full installers:
* Title: macOS Ventura, Version: 13.3, Size: 11776013236K
* Title: macOS Ventura, Version: 13.2.1, Size: 12555992911K
* Title: macOS Ventura, Version: 13.2, Size: 12555703258K
.

这里会列出所有可下载的macOS 版本,如果你不想使用 Ventura,可以选择 Monterey 或者 BigSur。

选定版本之后,比如我这里选择的是 13.1:

softwareupdate --fetch-full-installer --full-installer-version 13.1

命令执行完成之后,应用程序的文件夹里就能看到 Install macOS Ventura 安装程序了。

刻录启动盘

插入 U 盘,打开磁盘工具,定位到 U 盘的物理磁盘(而不是宗卷)选择抹除:名称随便设置(我设置的是 Ventura),一会刻录的时候安装程序会重新命名。格式必须选择 macOS 扩展格式(日志),方案选择 GUID 分区图。

注意,如果这里的抹除弹窗中没有出现分区方案的选择,请在磁盘工具顶部的 显示 菜单栏中选择显示所有设备。因为如果没有分区方案的选择,证明你格式化的是分区而不是整块设备!

随后将刚下载的操作系统刻录到此 U 盘中:

sudo /Applications/Install\ macOS\ Ventura.app/Contents/Resources/createinstallmedia --volume /Volumes/Ventura

这条命令有两个需要根据具体情况修改的地方:

  1. 如果你这里不是安装的 Ventura 版本,请将路径名称替换成你安装的版本;
  2. volume 参数是你刚刚抹掉的磁盘是设置的名字

这个过程会比用其他软件的刻录镜像慢一些,耐心等待完成。

刻录完成后,我们正式开始进行 OpenCore 相关的配置。

挂载 EFI 分区

我们接下来的所有动作都是在 U 盘的 EFI 分区上进行,目的就是为了让刚刚刻录的系统能正确地从 EFI 分区引导。

使用 diskutil 命令来查看 EFI 分区和挂载,如果你觉得太麻烦,可以试下 MountEFI这个更方便一点的方案:

  #######################################################
 #                      MountEFI                       #
#######################################################

1. EFI                   | 209.7 MB | EFI                         | disk0s1
2. Core                  | 249.3 GB | Microsoft basic data        | disk0s3
3. macOS                 |   250 GB | APFS                        | disk1s5s1
4. Install macOS Ventura |  15.8 GB | Mac OS Extended (Journaled) | disk2s1
5. Shared Support        |  12.2 GB | Apple HFS+                  | disk3s2

S. Switch to Full Output
B. Mount the Boot Drive's EFI
L. Show diskutil list Output

D. Pick Default Disk (None Set)
M. After Mounting: None
R. Toggle Window Resizing (Currently Enabled)
Q. Quit

Pick the drive containing your EFI:  4

我这里选择 4,代表刚刚刻录了 macOS 的 U 盘,可以看到 U 盘名字被安装程序自动更改成了 Install macOS Ventura。随后打开 Finde 就能看到 EFI 分区被挂载上了。

然后下载 OpenCore 的最新版,建议下载 DEBUG 版本。解压后,进入 X64 文件夹,然后把文件夹中的 EFI 目录,整个拷贝到刚刚挂载 EFI 分区内,注意这里的目录结构:EFI 分区里存在 EFI 目录:

>>> pwd                          
/Volumes/EFI
>>> tree -L 3
.
└── EFI
    ├── BOOT
    │   └── BOOTx64.efi
    └── OC
        ├── ACPI
        ├── Drivers
        ├── Kexts
        ├── OpenCore.efi
        ├── Resources
        └── Tools

9 directories, 2 files

虽然 EFI 分区已经建立,但是还有许多东西需要针对我们自己的情况作出调整。

Drivers 相关

打开 EFI/OC/Drives 目录,可以看到 OpenCore 自带了很多 .efi 文件,这些大部分对于黑苹果友好的硬件都是多余的,只需要两个 .efi 文件就行;

  1. HfsPlus.efi:从这里下载,可以从 HFS+ 格式的宗卷引导操作系统启动。这里的 HFS+ 格式也就是我们的刻录 U 盘时选择的 macOS 扩展格式。
  2. OpenRuntime.efi:OpenCore 自带,看名字就知道很重要,主要是对 boot.efi 的补丁,修补 NVRAM 和内存管理。

其他的都删掉。

Kexts 相关

OpenCore 的 kexts 文件夹( EFI/OC/Drives)是空的,需要自己添加以下这些:

  1. Lilu:这应该是黑苹果最重要的内核驱动了,很多其他的 patch 或者 Kext 都依赖于它
  2. SMC 相关:可以虚拟出一块 SMC 芯片,启动系统时需要,它自带了很多扩展,只需要用到其中几个就行:
    1. VirtualSMC.kext
    2. SMCProcessor.kext
    3. SMCSuperIO.kext
  3. 显卡相关:OpenCore 官方称可以用来获取 Raedon 系显卡温度,不过我的 Vega56 没有用也可以显示温度:
    1. RadeonSensor.kext
    2. SMCRadeonGPU.kext
  4. WhateverGreen:显示 Kext
  5. AppleALC:音频 Kext
  6. IntelMausi:网卡 Kext
  7. USBPorts:我根据 OpenCore 最新的官方教程发现他们推荐使用 USBToolBox 这个工具来定制接口,但是我几年前用 Hackintool 定制的 USBPorts 也是仍然可用的,就没有再使用 USBToolBox 折腾了,如果没有可用的 USBPorts,需要自己定制的话,可以参考我文末的国光黑苹果教程。

无线网卡 Kexts

我在几年前安装黑苹果的时候没有配置无线网卡相关的 Kexts,因为当时 Intel 的网卡没办法在macOS 上驱动,现在发现居然有大佬移植了 Intel 网卡的驱动(终于不用去买不知道转了多少手性能还差的拆机网卡了)。这种造福大家的 kexts 值得单独列一下:

  1. AirportItlwm:这个是用来驱动 Wi-Fi 的,从这里下载
  2. IntelBTPatcher、IntelBluetoothFirmware:这两个是用来驱动蓝牙的,在这里下载
  3. BlueToolFixup:这个需要搭配前两个一起使用,在这里下载

ACPI 相关

很多 OpenCore 的初接触者对 ACPI、SSDT、DSDT 等名词不太了解,简单来说:

  • ACPI 是一套开放接口标准,为操作系统提供电源管理和硬件设备配置的一致接口;
  • DSDT 是这个接口标准的一部分,描述了计算机基础硬件设备的配置以及电源管理等设定;
  • SSDT 也是这个接口标准的一部分,会比 DSDT 更加细致地补充或者修改 DSDT 中的描述设定。

在我们日常使用的 Windows,其实也是遵循 ACPI 标准的,在 Windows 安装的过程中,会自动向 BIOS 请求获取 ACPI 文件并加载。而因为黑苹果是在非苹果硬件设备下运行,BIOS 并不会向苹果的安装程序提供 ACPI 文件,因此需要自己手动来提取并在引导时加载。

对于我的硬件配置来说, EFI/OC/ACPI 中需要至少两个 SSDT 文件:

  1. SSDT-PLUG:给 macOS 操作系统内核提供电源管理
  2. SSDT-PMC:给 macOS 提供 NVRAM 支持

虽然 OpenCore 官方文档声称还需要 SSDT-AWAC(使用主板上的实时时钟)、SSDT-EC/USBX (虚拟嵌入控制器),不过我觉得这两个影响不大,加上我的 Windows 系统也是用的 OpenCore 引导,所以就没有加载这两个文件。

Tools 文件夹

保留 OpenShell.efi 就行,在 OpenCore 引导菜单中添加命令行选项,在出现问题时调试能方便点(不过我从来没用过)。

Resources 文件夹

OpenCore 图形化引导界面所需要的资源,如果你想以命令行方式引导,那就没啥用。

整合 config.plist

刚刚我们做的所有修改,都需要在 config.plist 文件中体现,它相当于启动引导的入口文件。

把 OpenCore 仓库里Docs文件夹下面的 Sample.plist 拷贝一份到 EFI 分区的 EFI/OC 文件夹并重命名为 config.plist。

ProperTree加载这个 config.plist 文件,然后按 Cmd/Ctrl + Shift + R(OC Clean Snapshot),在弹窗选择 OC 文件夹,会自动把 ACPI 目录的文件以及 kexts 目录的文件在 config.plist 里对应位置填充好。

此外,针对我的 9700KF CPU(Coffee Lake),还需要修改如下项,如果你是其他的 CPU,请参考这个文档

Booter

Quirks 子项中:

  • DevirtualiseMmio:改为 true
  • EnableWriteUnprotector:改为 false
  • ProtectUefiServices:改为 true
  • RebuildAppleMemoryMap:改为 true
  • SyncRuntimePermissions: 改为 true

DeviceProperties

Add 子项:

如果你的 CPU有 iGPU,也就是 CPU 带有内置的 GPU 芯片,需要在 Add 子项中添加 PciRoot(0x0)/Pci(0x2,0x0) 子项,具体添加内容可以参考这里

我的 9700KF 处理器不带 iGPU,所以这部分保持不变只需要有 PciRoot(0x0)/Pci(0x1b,0x0) 子项(默认)即可。

PciRoot(0x0)/Pci(0x2,0x0)
	AAPL,ig-platform-id

Kernel

Quirks 子项中:

  • AppleXcpmCfgLock:改为 true
  • AppleCpuPmCfgLock:改为 true
  • DisableIoMapper:改为 true
  • PanicNoKextDump:改为 true
  • PowerTimeoutKernelPanic:改为 true
  • XhciPortLimit:改为 false,使用 USBToolBox 或者 USBPorts的方式来解决 USB 问题

Misc

Boot 子项中:

  • HideAuxiliary:改为 false,可以显示其他的启动项,比如恢复模式、ResetNVRAM 等
  • PickerMode:我不想用图形界面,所以保持 builtin

Debug 子项中:

  • AppleDebug:改为 true
  • ApplePanic:改为 true
  • Target:改为 6

Security 子项中:

  • ScanPolicy:改为0,
  • Vault:改成 Optional

NVRAM

Add - 7C436110-AB2A-4BBB-A880-FE41995C9F82 子项:

  • boot-args:改为 -v keepsyms=1 debug=0x100 alcid=1,参数的释义
  • prev-lang:kbd:改为空

PlatformInfo

修改 MLB、SystemProductName、SystemSerialNumber、SystemUUID 这四项,可以用这个工具来生成。

UEFI

Drivers 子项中:

分别添加 HfsPlus.efi 和 OpenRuntime.efi。

调试

无论是升级黑苹果还是首次安装,重做 EFI 都是一件麻烦事,难免会犯一些错误。我们需要开启一些调试的功能,能更好地帮助我们解决问题。

  1. 使用 DEBUG 版本的 OpenCore,虽然启动会比 RELEASE 版本的慢不少,不过附带的调试信息更多,在调试完成后,再切换成 RELEASE 版本即可;
  2. 在 boot-args 参数中,加上 -v 参数,会显示启动时具体的执行步骤,而不是一个 Logo + 进度条;
  3. Debug - Target 改为 67

验证

在根据我们的具体需求修改完 config.plist 之后,如果直接重启大概率是无法引导的,我们可以用工具来验证一下。进入下载的 OpenCore 源码的 Utilities/ocvalidate 文件夹,我们使用它来验证我们的 config.plist 是否是正确的:

>>> ./ocvalidate /Volumes/EFI/EFI/OC/config.plist

然后按照给出的错误信息进行修改即可。

更新 macOS

后续如果想要通过自带的软件更新来安装新版的 macOS,请一定一定要先更新 EFI 分区的内容:

  1. 下载新版本的 OpenCore Debug 版,替换这三个文件:
    1. EFI/BOOT/BOOTx64.efi
    2. EFI/OC/OpenCore.efi
    3. EFI/OC/Drivers/OpenRuntime.efi
  2. 用工具(可以使用 diff 或者 OCConfigCompare)来查看新版 OpenCore 的 config.plist 文件与当前使用的文件的区别;如果版本比较接近的话,你可以直接查阅 Differences.pdf来查看更改,确保我们的 config.plist 文件结构与官方的文件结构一致(补全缺失的 key);
  3. 更新一下你使用的 kexts 以及 .efi 文件,确保和 OpenCore 不会出现兼容问题;
  4. 开启调试信息,并使用 ocvalidate 来验证配置文件是否有问题。

不要担心 OpenCore 更新后,会不兼容旧的 macOS 引导,OpenCore 团队会做好向后兼容的。当你使用新版的 OpenCore 以及 kexts 也能正确引导当前的 macOS 系统之后,就可以开始使用系统自带的软件更新来升级了。

Windows 11 双系统

虽然我在之前的文章里已经比较详细地介绍过双系统,不过这次可能是因为升级的原因,操作起来的步骤略有不同。不过大体的操作逻辑是一样的。

制作 Windows 11 镜像

macOS 下,确实没有一个像 Rufus 一样好用工具来制作镜像,像 Etcher 这种工具是无法用来制作 Windows 11 的安装镜像的。

这篇教程提供了一个比较好的方法。总结下就是:给 U 盘格式化成 MS-DOS(FAT)格式带 GUID 分区表,然后把 Windows 11 镜像的 sources/install.wim 这个超大的文件用工具切割成两个小一点的文件,不然就超过了 FAT 最大文件 4G 的限制。

启动转换助理

打开启动转换助理,接下来选择镜像以及配置 Windows 分区大小(如果你插着 U 盘,可能会提示让你拔掉,暂时拔掉即可),在等安装完成后会重启电脑,目前 Windows 11 的镜像没有自带可引导的分区,所以重启电脑后会发现找不到 Windows 的安装入口,这时选择进入 macOS 系统,如果这里出现了 Windows 安装分区,也不要进入!

再次打开启动转换助理,在左上角菜单操作菜单 -> 下载 Windows 支持软件,保存在 U 盘中。

分区 & 安装

打开 macOS 的磁盘工具,给现有的磁盘分出一块分区来,分区格式随便选,反正一会 Windows 安装的时候要把分区重建。如果上一步骤你已经通过启动转换助理做了分区,这里的分区步骤可以跳过。

分区完成后,重启电脑,关键的步骤来了:按 F12 进入 BIOS 的启动引导项,然后选择 U 盘,注意这里不要通过 OpenCore 的引导项选择 U 盘然后进入安装界面。

如果直接通过 OpenCore 的引导项选择 U 盘进入的安装界面,大概率会安装失败,原因猜测是 Windows 安装的时候从 BIOS 拿到的 ACPI 文件与 OpenCore 本身加载的 ACPI 文件冲突了。

为什么我会这么猜测呢,因为很明显从 OpenCore 进入 Windows 安装界面的话,分辨率是 4K 的,而如果从 BIOS 进入 Windows 安装界面的话,分辨率模糊的一塌糊涂。

Windows 11 的安装程序需要添加 BypassTPMCheck 和 BypassSecureBootCheck 这两项注册表才能运行,如果你有 Windows 设备的话,可以用 Rufus 来刻录 Windows 11 的镜像,他会自动帮你跳过这两个检测。随后在选择安装位置的时候,定位到刚刚的那块硬盘分区,把它删除掉,分区会显示成未分配,选择安装 Windows 到此分区即可。

Windows 支持软件

在 Windows 安装程序拷贝文件完成之后,会自动重启,并修改 BIOS 的启动项顺序,把 Windows 的启动引导放在第一位,所以这里会继续进入到 Windows 的安装界面(伴随着模糊的分辨率),等待安装完成后,这时不要急着装驱动,也不要运行我们的 Windows 支持软件,直接运行的话会失败。

这里同样还是因为 ACPI 的原因,因为我们直接通过 Windows 启动引导进入的系统,没有使用 OpenCore 中的 ACPI 文件,而 Windows 支持程序会检测当前操作系统是否使用的苹果的 ACPI 文件启动。

设置完成后会再次重启,这时可以进入 BIOS,调整一下启动项顺序,把 Windows 的启动项放在后面(或者直接禁用了),OpenCore 的放在第一位。然后重启就会进入到 OpenCore 的引导菜单了,这时就可以看到 Windows 的菜单项了,选择 Windows,然后进入系统后,打开 U 盘下载的 Windows 支持软件,进入到 BootCamp 文件夹,点击 Setup.exe 安装。

完成后,双系统就成功了,可以从 Windows 启动到 macOS,也可以从 macOS 启动到 Windows 而不需要在引导菜单的时候手动选择。

当然。开启了 NVRAM 的支持是前提。

注意事项

备份

所有 OpenCore 的配置完成后,苹果系统已能正常工作时,一定要把你的 EFI 分区备份一下。另外可以再准备一个 U 盘,格式化成什么格式无所谓,只需要带有 GUID 分区表即可,然后将目前黑苹果的 EFI 分区给备份到 U 盘上的 EFI 分区。

这样万一引导分区出现什么问题导致无法启动,重启电脑按 F12 从引导菜单选择 U 盘(这里需要从 BIOS 引导菜单选择 U 盘,而不是从 OpenCore 引导菜单选择 U 盘)也能进入系统及时修复。

引导丢失

如果你只是用 OpenCore 来安装黑苹果,不用来引导多个系统的话,一般不会出现引导丢失的情况。

引导的丢失分两种,一种是 EFI 分区被覆盖或者不小心删除了,另一种是 EFI 分区没变,但是引导项没了。这里只讨论第二种情况(第一种情况自己做好备份即可)。

我遇到过两种情况,出现了 EFI 分区没有变化,但是引导项被改了的情况:

  1. Windows 进行了一个大版本的更新,出现了引导菜单第一顺序被设置回了 Windows Boot Manager,也就导致了开机之后不经 OpenCore 的引导直接进入了 Windows,这种情况比较好处理,去 BIOS 里调整一下引导顺序就可;
  2. 重设了 NVRAM,会导致 OpenCore 引导项被删除,只留下了 Windows Boot Manager,这种情况稍微复杂一点,BIOS 里看引导菜单也没有 OpenCore 存在了;

第二种情况需要进入 Windows 后,下载 EasyUEFI 或者 DiskGenius 重新给 EFI 分区的 boot 分区下的 bootx64.efi 添加回来。DiskGenius 可以参考这个教程

Reset NVRAM

OpenCore 新版里需要在 OC/Drivers 文件夹中保留 ResetNvramEntry.efi 文件并在 config.plist 中加载,在 OpenCore 引导菜单中才会出现这个选项。

最简原则

OpenCore 的配置请一切从简:从零开始慢慢加,而不要从网上找了个同样配置的成品,开始在上面一点点调整。

  1. 如果你不知道某 kext 或者 SSDT 的作用,那么就不要把它加载到启动项里;
  2. 如果你的系统已经运行正常,就不要再把一些声称可以修复 xx 功能的补丁加载进来。

比如我就没有使用 OpenCore 官方推荐的 USBX 和 AWAC 等 SSDT,只保留了 PLUG 和 PMC 这两个;USB 定制的 kext 也一直用的是几年前就定制好的,没有在用 USBToolBox 来重新定制;以及虽然我用的 Radeon Vega56 显卡,但是我发现没有 SMCRadeonGPU 等 kext 也是可以正常显示 GPU 温度,因此我也没有加载这个。

成果

其实在本次更新 Ventura 之前,我的黑苹果就已经工作的比较完美了,除了无线网卡没有驱动外,其他的比如睡眠、NVRAM、USB 等功能都正常工作,这次有了大佬移植的驱动,蓝牙,Wi-Fi,隔空投送与接力,剪贴板等全都正常工作:

image

唯一可惜的是,iMessage 和 FaceTime 无法登陆。

总结

写这篇文章的一个目的就是为了方便后续自己的查阅,避免以后每次安装黑苹果都要重新搜一下怎么动手(因为我这次就是这样又在网上搜了一圈),写了这篇文章后,自己要是遇到重装或者更新的时候也有个参考。

参考:

OpenCore 引导安装 macOS Ventura 教程

https://blog.itswincer.com/posts/open-core-boot-macos-ventura-tutorial/

作者

Wincer

更新于

Apr 5, 2023

许可协议

CC BY-NC-ND 4.0
  1. Apr 22, 2020

    使用 OpenCore 引导黑苹果踩坑记录
  2. Nov 10, 2024

    个人网络相册搭建方案
  3. Dec 10, 2022

    我最近订阅的一些软件服务
  4. Jul 2, 2022

    从一次 DNS 流量测试说起
  5. Nov 27, 2021

    我的 FreeBSD 服务器配置
  6. Sep 29, 2020

    Python 并发之痛:线程,协程?