几年前,我专门组过一台电脑折腾黑苹果与 Windows 双系统,之后便一直稳定用到现在(没有手贱乱升级)。最近发现硬盘已经快占满了,500G 的空间还要分一半给 Windows 用,也真是难为它了。正赶上固态价格大幅跳水,于是我买了一块 2T 的固态来升级硬件配置,正好心里也想顺便升级一下软件来体验最新版的 macOS Ventura,是以写下这篇文章作为记录。
我的黑苹果配置见 之前的文章 ,只有固态更新成了梵想 2T PCIe 4.0。
请按照 OpenCore 官方教程 推荐的设置来更新你的 BIOS,如果 BIOS 缺失上述某项,可以忽略。比如我的主板就缺失 CFG Lock 这一项,不过使用下来也没有遇到什么问题。
这一步可以直接从 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
这条命令有两个需要根据具体情况修改的地方:
这个过程会比用其他软件的刻录镜像慢一些,耐心等待完成。
刻录完成后,我们正式开始进行 OpenCore 相关的配置。
我们接下来的所有动作都是在 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 分区已经建立,但是还有许多东西需要针对我们自己的情况作出调整。
打开 EFI/OC/Drives 目录,可以看到 OpenCore 自带了很多 .efi 文件,这些大部分对于黑苹果友好的硬件都是多余的,只需要两个 .efi 文件就行;
其他的都删掉。
OpenCore 的 kexts 文件夹( EFI/OC/Drives)是空的,需要自己添加以下这些:
我在几年前安装黑苹果的时候没有配置无线网卡相关的 Kexts,因为当时 Intel 的网卡没办法在macOS 上驱动,现在发现居然有大佬移植了 Intel 网卡的驱动(终于不用去买不知道转了多少手性能还差的拆机网卡了)。这种造福大家的 kexts 值得单独列一下:
很多 OpenCore 的初接触者对 ACPI、SSDT、DSDT 等名词不太了解,简单来说:
在我们日常使用的 Windows,其实也是遵循 ACPI 标准的,在 Windows 安装的过程中,会自动向 BIOS 请求获取 ACPI 文件并加载。而因为黑苹果是在非苹果硬件设备下运行,BIOS 并不会向苹果的安装程序提供 ACPI 文件,因此需要自己手动来提取并在引导时加载。
对于我的硬件配置来说, EFI/OC/ACPI 中需要至少两个 SSDT 文件:
虽然 OpenCore 官方文档声称还需要 SSDT-AWAC(使用主板上的实时时钟)、SSDT-EC/USBX (虚拟嵌入控制器),不过我觉得这两个影响不大,加上我的 Windows 系统也是用的 OpenCore 引导,所以就没有加载这两个文件。
保留 OpenShell.efi 就行,在 OpenCore 引导菜单中添加命令行选项,在出现问题时调试能方便点(不过我从来没用过)。
OpenCore 图形化引导界面所需要的资源,如果你想以命令行方式引导,那就没啥用。
刚刚我们做的所有修改,都需要在 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,请参考 这个文档 :
Quirks 子项中:
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
Quirks 子项中:
Boot 子项中:
Debug 子项中:
Security 子项中:
Add - 7C436110-AB2A-4BBB-A880-FE41995C9F82 子项:
修改 MLB、SystemProductName、SystemSerialNumber、SystemUUID 这四项,可以用 这个工具 来生成。
Drivers 子项中:
分别添加 HfsPlus.efi 和 OpenRuntime.efi。
无论是升级黑苹果还是首次安装,重做 EFI 都是一件麻烦事,难免会犯一些错误。我们需要开启一些调试的功能,能更好地帮助我们解决问题。
在根据我们的具体需求修改完 config.plist 之后,如果直接重启大概率是无法引导的,我们可以用工具来验证一下。进入下载的 OpenCore 源码的 Utilities/ocvalidate 文件夹,我们使用它来验证我们的 config.plist 是否是正确的:
>>> ./ocvalidate /Volumes/EFI/EFI/OC/config.plist
然后按照给出的错误信息进行修改即可。
后续如果想要通过自带的软件更新来安装新版的 macOS,请一定一定要先更新 EFI 分区的内容:
不要担心 OpenCore 更新后,会不兼容旧的 macOS 引导,OpenCore 团队会做好向后兼容的。当你使用新版的 OpenCore 以及 kexts 也能正确引导当前的 macOS 系统之后,就可以开始使用系统自带的软件更新来升级了。
虽然我在 之前的文章 里已经比较详细地介绍过双系统,不过这次可能是因为升级的原因,操作起来的步骤略有不同。不过大体的操作逻辑是一样的。
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 安装程序拷贝文件完成之后,会自动重启,并修改 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 分区没有变化,但是引导项被改了的情况:
第二种情况需要进入 Windows 后,下载 EasyUEFI 或者 DiskGenius 重新给 EFI 分区的 boot 分区下的 bootx64.efi 添加回来。DiskGenius 可以 参考这个教程 。
OpenCore 新版里需要在 OC/Drivers 文件夹中保留 ResetNvramEntry.efi 文件并在 config.plist 中加载,在 OpenCore 引导菜单中才会出现这个选项。
OpenCore 的配置请一切从简:从零开始慢慢加,而不要从网上找了个同样配置的成品,开始在上面一点点调整。
比如我就没有使用 OpenCore 官方推荐的 USBX 和 AWAC 等 SSDT,只保留了 PLUG 和 PMC 这两个;USB 定制的 kext 也一直用的是几年前就定制好的,没有在用 USBToolBox 来重新定制;以及虽然我用的 Radeon Vega56 显卡,但是我发现没有 SMCRadeonGPU 等 kext 也是可以正常显示 GPU 温度,因此我也没有加载这个。
其实在本次更新 Ventura 之前,我的黑苹果就已经工作的比较完美了,除了无线网卡没有驱动外,其他的比如睡眠、NVRAM、USB 等功能都正常工作,这次有了大佬移植的驱动,蓝牙,Wi-Fi,隔空投送与接力,剪贴板等全都正常工作:
唯一可惜的是,iMessage 和 FaceTime 无法登陆。
写这篇文章的一个目的就是为了方便后续自己的查阅,避免以后每次安装黑苹果都要重新搜一下怎么动手(因为我这次就是这样又在网上搜了一圈),写了这篇文章后,自己要是遇到重装或者更新的时候也有个参考。
参考: