本文最近一次更新于 1 年 7 个月前,其中的内容很可能已经有所发展或是发生改变。
从大一暑假开始,我便一直使用 Linux 作为日常所用的系统,这三年要说我用 Linux 如何顺心,那绝对是鬼话;可要说我使用得特别难受,那也不至于。因为它的确提升了我的开发体验和编程技能。它的优点我很喜欢、它的缺点我一开始就知道并能接受——这便是我能坚持使用 Linux 三年的原因。
虽然坚持使用了这么久,可我还是要说一句 Linux 作为日常使用的系统真的很不方便,而不方便就会想要去折腾,折腾来折腾去发现时间都浪费了,它还是老样子;可使用 Windows 吧,看着丑哭的字体渲染和残废的命令行工具,感觉自己写代码都没什么动力了,所以当我第一次见到 macOS 时,我在心里就默默地种草了。
种草容易拔草难啊,这一拔就拔了三年。
说起来是有些奇怪,明明我这么想用 macOS,为什么不直接买一台 Mac 呢,其实是因为我对 Windows 还有需要:闲暇时我也会打打游戏,而购置一台用于打游戏顺畅的 Mac,恐怕就只能从 (i)Mac Pro 起步了——我肯定是不会买的。于是,我选择了黑苹果。
配置单
按照 Tonymacx86 的说法,黑苹果最好选用八代或九代的 Intel CPU ➕ AMD 的显卡配合 Z390 芯片的主板。
本节的撰写时间是 2019 年 9 月,以下是当时的价格,仅供参考:
配件 | 型号 | 价格(¥) |
---|---|---|
CPU | Intel 9700KF | 2499 |
显卡 | AMD Vega 56 | 1600 |
固态 | 西部数据黑盘 512G | 614 |
散热 | ID-COOLING CHROMAFLOW 240 | 359 |
电源 | 全汗 MS600 | 599 |
主板 | 技嘉 Z390 I AORUS PRO WIFI | 1319 |
内存 | 海盗船 DDR4 3000 | 718 |
机箱 | Sunmilo T03(定制) | 939 |
合计 | 8647 |
在本文发布时候,我已经使用基于 Clover 引导的黑苹果半年时间了,最近突然手贱升级了 Catalina 导致系统挂了,所以才想干脆放弃 Clover,转向 OpenCore,于是便有了这篇文章。
⚠️:如果你是 OpenCore 纯新手,强烈建议先读读我新写的这篇这篇博客,是一篇更详细的黑苹果安装教程,同时包含了一些术语的解释,否则可能无法理解本文提到的一些术语。
ACPI 相关
ACPI 的补丁会被 patched 到 OpenCore 引导的所有系统,因此某些非必须的补丁(比如 SSDT-USBX.aml)不建议在 ACPI 中加入,不然可能会造成其他系统无法启动等情况。
DSDT 提取
目前比较推崇的提取 DSDT 的方式是采用 Clover 来提取,因为这种方法能提取出原生的未曾被 patched 过的 ACPI,但这对从未安装过 Clover 引导的人有些麻烦:需要在 U 盘上创建一个 Clover 的 EFI 分区。
由于 ACPI 的补丁范围并非针对单一的操作系统,因此在使用 OpenCore 引导的系统中提取到的 DSDT 可能并非原生的,不过如果你未曾修补过你的 ACPI,也没使用过黑苹果,可以考虑使用 SSDTTime工具来提取 DSDT(支持 Windows 和 Linux,不支持 macOS):双击 SSDTTime.bat(需要 Python 3 环境),选 4 来提取 DSDT:
#######################################################
# SSDT Time #
#######################################################
Current DSDT: None
1. FixHPET - Patch out IRQ Conflicts
2. FakeEC - OS-aware Fake EC
3. PluginType - Sets plugin-type = 1 on CPU0/PR00
4. Dump DSDT - Automatically dump the system DSDT
D. Select DSDT or origin folder
Q. Quit
Please make a selection: 4
DSDT.aml 会被提取到脚本目录的 Results 目录下。
注入原生电源管理
SSDT-PLUG.aml(名字并无限制) 补丁是用于支持原生的 CPU 电源管理。使用 SSDTTime 进行生成:
运行 ./SSDTTime.command(SSDTTime.bat)
##################################################### # SSDT Time # ##################################################### Current DSDT: None 1. FixHPET - Patch out IRQ Conflicts 2. FakeEC - OS-aware Fake EC 3. PluginType - Sets plugin-type = 1 on CPU0/PR00 D. Select DSDT or origin folder Q. Quit Please make a selection:
输入 「3」后,将 DSDT.aml 拖入当前终端窗口,并 Enter :
##################################################### # Select DSDT # ##################################################### M. Main Q. Quit Please drag and drop a DSDT.aml or origin folder here:
SSDT-PLUG.aml 会自动生成在 Results 文件夹:
##################################################### # Plugin Type # ##################################################### Determining CPU name scheme... - Found PR00 Determining CPU parent name scheme... - Found _SB_ Creating SSDT-PLUG... Compiling... Done. Press [enter] to return...
开启原生 NVRAM
SSDT-PMC.aml(名字并无限制)补丁是用于开启主板原生的 NVRAM 支持。
使用方法见 xjn 这篇文章的 3.12 节。如果你的主板和我的一样,可以直接使用我的 SSDT-PMC.aml 文件。
加载了 SSDT-PMC.aml 之后,「系统偏好设置-节能」里面能看到五个选项——未加载 PMC.aml 之前只有 4 项;未加载 PLUG.aml 之前只有两项。
如果没有开启(模拟或者原生)的 NVRAM,系统可能会出现以下问题:
- 关机或者重启非常慢且功能错位:明明点了关机,却触发了重启;
- 睡眠唤醒之后屏幕在鼠标键盘失灵,屏幕冻住(freezing),然后重启。
定制 USB 端口
由于 OpenCore 的配置比较追求轻量化,因此一些人在将 Clover 换成 OpenCore 的时候可能会出现一些 USB 设备失灵的问题:鼠标和键盘的指示灯都没有亮,显示没有通电。
这里可以使用 SSDT-USBX.aml 来解决这个问题,但是并不推荐,原因之前也说过了,ACPI 的补丁对 Windows 也是适用的,而 Windows 压根不需要这个 USBX 的补丁,并且这个补丁有一个 bug(feature?):它会将所有的 USB 设备识别成内置的接口,即使你插入的是 U 盘。一旦系统将 U 盘识别成内置的硬盘,就无法使用 Mac 自带的「启动转换助理」来刻录 Windwos 系统盘了(这一点下一节会详细讲)。
除了使用 ACPI 补丁之外,还可以使用 macOS 内核扩展(kext)来解决这个问题:首先使用 USBInjectAll.kext 来设置所有 USB 接口为外置 USB,确保系统能正常使用;然后打开 Hackintool 的 USB 选项卡,随后将主板的所有 USB 逐个插一遍,将非活动端口删掉,并使用连接器定制每个端口的类型。
随后点击导出图标,会导出 USBPorts.kext 和几个 ACPI 补丁到桌面,在 config.plist 里面加载 USBPorts.kext,并停掉 USBInjectAll.kext 就可以了。
双系统引导
戳这里观看双系统使用 Bootcamp 引导的视频。
在使用 Clover 引导的时候,需要将 CLOVERX64.efi 设置为默认的引导,在使用 OpenCore 的时候稍稍有点不一样,不需要且不能在 Windows 直接使用 bcdedit 命令更改 Path 为 OpenCore 自带 BOOTx64.efi 的值。
安装 Windows
如果你电脑目前已经安装了 Windows,直接看下一节。
下载 Windows 10 ISO 镜像,插入 U 盘,打开「启动转换助理」,将三个勾全部选上,点击继续。
如果启动转换助理没有报错的话,会让你选择分给 Windows 的硬盘空间。选择完了之后会重启。
如果在下载 Windows 支持软件的时候,提示无法连接到服务器的话,依次选择左上角的 操作菜单 -> 下载 Windows 支持软件,路径选择 U 盘。此时也需手动使用磁盘工具分区出一块 Windows 所用的硬盘。
重启后,一定要继续使用 OpenCore 引导,而不要按 F12 直接进入 U 盘的引导。
在 OpenCore 引导选择界面应该会看到名为「 U 盘的名称(external)」的引导项。选择它,就会进入系统安装的界面了。
安装完 Windows 之后,系统会自动重启,重新进入引导选择界面的时候,会看到多了一个名为 Windows 的引导项(排名应该只在 U 盘名称的后面一位),选择它。
Windows 修复引导
如果在选择 Windows 启动时提示「ocb-startimage-failed-already-started」,别慌,这是因为 OpenCore 不知道从哪引导 Windows,你需要手动指定一下:进入 macOS,在 config.plist 的 Misc -> BlessOverride 添加一项:「\EFI\Microsoft\Boot\bootmgfw.efi」。这时再重启,应该就可以正常进入 Windows 了。
正常进入系统之后,将 U 盘里刚刚下载的 Windows 支持软件安装(文件夹名称应该是 WindowsSupport,文件是 setup.exe,双击安装),安装后会要求重启。
重启时在 OpenCore 引导菜单时选择进入 Windows,进入系统后,右下角应该会显示 Bootcamp 的运行图标,选择重启到 macOS,应该就能正常重启到 macOS 了。
需要注意的是:如果没有开启 NVRAM,是没办法做到这一点的:Windows 使用 Bootcamp 重启到 Mac,Mac 使用启动磁盘重启到 Windows,因为无法使用 NVRAM 来指定开机时的启动项。
参考: