「黑苹果」OpenCore引导安装笔记
# 前言
本次安装黑苹果过程基于远景论坛中网友分享的 EFI 文件并基于此进行更新、修改完成,原本使用 迪兰恒进 R9 280X 3G
作为免驱卡安装,在首次安装成功时,一切现实正常,但在一次休眠卡死之后,重启就无法进入系统了,在登录页面有鼠标并伴随间隔的黑、黄屏幕闪烁。
在尝试显卡仿冒成 R9 280 后成功进入系统,但系统没有毛玻璃效果,最大化、最小化窗口有明显卡顿,尝试过刷微星的 BIOS(三星颗粒只找到这个 BIOS)也无济于事,多次尝试后,最终选择了更换显卡为 迪兰恒进 RX570 4G
立马解决了。
EFI 文件:NipGeihou/Hackintosh_TB250-BTC_I3-9100F_RX570
# 参数
- CPU: i3-9100F(Coffee Lake)
- 主板: TB250-BTC 版本. 6.x
- 显卡:
迪兰恒进 R9 280X 3G迪兰恒进 RX 570 4G - 系统: 12.4
- OC: 0.8.0
# 下载镜像
可到黑果小兵的部落阁 (opens new window) 下载懒人镜像
本文使用的是【黑果小兵】【微信首发】macOS Monterey 12.1 21C52 Installer for OpenCore 0.7.6 and CLOVER 5143 and WEPE 三 EFI 分区原版镜像 | 黑果小兵的部落阁 (opens new window) 中的三分器,当时没看到有二分区的免费版,在微信公众号打赏后下的三分区版,实际上二分区就可以了,因为最后是需要把这个 EFI 分区覆盖掉的。
# 刻录 U 盘
使用 balenaEtcher (opens new window) 工具将下载好的镜像刻录到 16G 以上的 U 盘。
建议使用固态硬盘做的移动硬盘,真的快
# 定制 OpenCore 引导 EFI
- 方法一:如果是免驱的 A 卡,直接去远景或 GitHub 搜主板的 EFI 文件,再修改即可。
- 方法二:根据 OpenCore Install Guide (opens new window) 一步步挑选驱动即可,如果硬件不是很特殊的话,会很顺利。
定制好 OC 的 EFI 后,覆盖引导盘的 EFI 分区,开机安装即可。
# AMD 显卡仿冒
仅供参考
- 查询 AMD GPUs | GPU Buyers Guide (opens new window) A 卡免驱的显卡
- 在 PCI Devices (opens new window) 匹配一个相近的免驱显卡,用于仿冒
前面的 679a
就是要仿冒的 Device ID
在 VGA Bios Collection | TechPowerUp (opens new window) 查询一个蓝宝石 (Sapphire) 的Device ID
(OC 推荐蓝宝石的)下载 SSDT-GPU-SPOOF.dsl.zip (opens new window) ,解压编辑
SSDT-GPU-SPOOF.dsl
修改 device-id
修改 model
:修改成你实际设备的名称
"model",
Buffer ()
{
"AMD Radeon R9 280X"
}
- 编译 SSDT
使用 Windows Binary Tools (opens new window) 编译
测试结果
Sapphire R9 270X 2048 MB:画面正常,切换卡顿
Sapphire R9 280 3 GB:画面正常,切换卡顿
Sapphire R9 280X 3 GB:黄屏
Sapphire HD 7790 2048 MB:卡进度条
Sapphire HD 7970 3 GB:黄屏
参考资料
- Renaming GPUs (SSDT-GPU-SPOOF) | Getting Started With ACPI (opens new window)
- AMD R9/R7 系列 黑苹果仿冒显卡驱动教程 - 黑苹果显卡驱动 - 黑苹果论坛 | macOS|Mac 驱动 | 黑苹果驱动 | Mac 软件 | 黑苹果系统下载 | 麦创网 MemacX.com - (opens new window)
- Compiling and decompiling ACPI Tables | Getting Started With ACPI (opens new window)
- 黑苹果显卡硬件支持列表(持续更新中) - 小 C 博客 (opens new window)
# 完美苹果
参考黑苹果 - 国光的黑苹果安装教程:手把手教你配置 OpenCore (opens new window) 对完美黑苹果的定义
# 问题总结
1. OC 引导只能看到 reset nvram 和 clean nvram?
这个问题是因为 OC 扫描引导盘,将 Misc -> Security -> ScanPolicy
值设为 0
,表示扫描全部。
2. 开机有鼠标黄屏,开不了机
以 刷 BIOS,再不行换一张显卡。迪兰恒进280X
为例,会出现这个问题,需要仿冒解决。
# 参考资料
- OpenCore Install Guide (opens new window)
- 国光的黑苹果安装教程 (opens new window)
- 黑果小兵的部落阁 (opens new window)
- Biostar 映泰 TB250-BTC+i3 9100F+GT730 双 DP 安装 11.0.1 接近完美 EFI 分享 - 远景论坛 - 微软极客社区 (opens new window)
- Biostar 映泰 TB250-BTC+i3 9100F+RX574 安装 15.4 接近完美 EFI 分享 - 远景论坛 - 微软极客社区 (opens new window)
# 示例
# 华硕 F540U
EFI:https://github.com/NipGeihou/hackintosh_asus_x540up (opens new window)
# 配置信息
在 Windows 下通过 AIDA64
生成 硬件相关内容
配置报告,由报告可知:
主板:
处理器名称 DualCore Intel Core i5-7200U, 3100 MHz (31 x 100)
主板名称 Asus VivoBook X540UP
主板芯片组 Intel Sunrise Point-LP, Intel Kaby Lake-U
系统内存 12171 MB (DDR4 SDRAM)
显示适配器:
AMD Radeon HD 8500M
Intel(R) HD Graphics 620
多媒体:
音频适配器 Realtek ALC256 @ Intel Sunrise Point-LP PCH - High Definition Audio Controller [C1]
网络设备:
网络适配器 Realtek RTL8139/810x Fast Ethernet Adapter, Realtek RTS5286 PCI-E Card Reader
网络适配器 Realtek RTL8723BE Wireless LAN 802.11n PCI-E NIC
# 搜索 EFI
通过配置报告可知这款笔记本的主板名称为 Asus VivoBook X540UP
,尝试在搜索引擎查询以下关键字
X540UP EFI
X540UP mac
X540UP Hackintosh
经过一番搜索,很遗憾,并没有找到任何成功的案例,只有一些关于这个型号不了了之帖子,比如:
- Stuck at apple logo. | tonymacx86.com (opens new window)
- asus x540up - Olarila Images - Olarila (opens new window)
- Asus x540UP Catalina Kurulum Sorunu - osxinfo.net: Hackintosh Türkiye Destek Platformu (opens new window)
这并不是一件好事,这或许意味着,有人曾尝试过,而最终以失败告终。anyway,只好自己尝试一下。
# OpenCore
# 检查配置
翻阅 Getting started with OpenCore | OpenCore Install Guide (opens new window),在 Hardware Limitations
一文中可知:
- CPU:Kaby Lake,最低支持
10.11.0
,最新为当前
- GPU:带有独显的笔记本,90% 的独显都不能用,那我的会不会是剩下的 10% 呢?鉴于这个笔记本都没有成功案例,我就不赌这个了(即便这个独显是 AMD 的)。使用核显的最低支持
10.12.4
,最新为当前
- 有线网卡:几乎所有的网卡都被支持
- 无线网卡:Realtek 就别想了
# 禁用独显
参考:Disabling GPU | OpenCore Install Guide (opens new window)
文中提及三种禁用独显的方式,其中最简单的为「Boot Flag (引导标志)」的方式,即在启动参数: -wegnoegpu
,禁用除 iGPU 之外的所有 GPU。
笔记
至于启动参数加在哪里,至此我也不知道,先记着有这么回事。
# 下载镜像
由 检查配置
可知,镜像版本至少是 10.12.4
即可,避免最新版有坑,这里我选择了 macOS 12.4 Monterey 21F79
。
# 刻录 U 盘
略,参考上文
# 定制 EFI
参考:Adding The Base OpenCore Files | OpenCore Install Guide (opens new window)
使用的当前最新版
OpenCore-0.9.3-DEBUG.zip
下载解压后把
\X64
下的EFI
复制到 U 盘的 EFI 分区下,也就是 EFI 分区根目录下会有一个EFI
文件夹。打开 OC 文件夹:
- Drivers
- OpenRuntime.efi:必需的
- Tools
- OpenShell.efi:可能调试更清晰
- Drivers
这两个文件夹,除此以外的都删掉。
收集文件,参考:Gathering files | OpenCore Install Guide (opens new window)
- Drivers
- Kexts
- Lilu.kext (opens new window):必需
- VirtualSMC.kext (opens new window):必需
- SMCProcessor.kext:Intel CPU 温度监控,VirtualSMC 仓库文件中包含
- WhateverGreen (opens new window):必需
- VoodooPS2Controller.kext:键盘驱动,不然用不了
- VoodooI2C.kext:触控板驱动
- VoodooI2CHID.kext:触控板驱动插件
- ACPI:根据指南下载
SSDTs->Laptop
相对 CPU 平台的 SSDT 文件- SSDT-PLUG(SSDT-PLUG-DRTNIA.aml (opens new window))
- SSDT-EC-USBX(SSDT-EC-USBX-LAPTOP.aml (opens new window)):适用于 Skylake 及之后的平台
- SSDT-GPI0:这个文件需要手动编译,暂时使用 SSDT-XOSI.aml (opens new window)(来自 B 站教程的说法)
配置
config.plist
,参考:Laptop Kaby Lake & Amber Lake Y | OpenCore Install Guide (opens new window)- 这里使用官方推荐的 ProperTree (opens new window) 编辑器来编辑 plist 文件
- 将
OpenCore-0.9.3-DEBUG/Docs/Sample.plist
复制并重命名到EFI/OC/config.plist
- 在 ProperTree 中打开
- 在编辑器中,
File - OC Clean Snapshot
选中EFI/OC
,可将上面添加的各种驱动添加的 plist 文件配置中(来自 B 站教程的说法)
config.plist配置说明
ACPI
- Add:为系统添加 SSDT,如上面挑选的,
OC Clean Snapshot
功能已帮我们处理,所以这里不用动 - Delete:阻止加载某些 ACPI 表,暂不需要
- Patch:允许我们通过 OpenCore 动态修改 ACPI 的部分内容
- 由于我们上面使用的是
SSDT-XOSI.aml
而不是SSDT-GPI0
,因此根据文档的说法,需要进行调整。可参考文档中的截图 Patch 部分调整。
- 由于我们上面使用的是
- Quirks:默认即可
- Add:为系统添加 SSDT,如上面挑选的,
Booter:
DeviceProperties:
- PciRoot (0x0)/Pci (0x2,0x0):核显属性
- AAPL,ig-platform-id|Data|00001B59
- PciRoot (0x0)/Pci (0x1b,0x0):声卡属性,暂不需要,删除
- PciRoot (0x0)/Pci (0x2,0x0):核显属性
Kernel
- Add:默认即可
- Quirks:按照文档设置
Misc:按照文档设置
- Debug
- Target|67:显示更多调试信息,会在根目录生成日志文件
- Debug
NVRAM:
- 7C436110-AB2A-4BBB-A880-FE41995C9F82:
- boot-args|String|
-v keepsyms=1 debug=0x100 alcid=1 -wegnoegpu
(禁用独显的启动参数放在这里) - prev-lang:kbd|Data|<>:语言键盘,强制语言选择器在第一次启动时出现
- boot-args|String|
- 7C436110-AB2A-4BBB-A880-FE41995C9F82:
PlatformInfo(平台信息):安装文档修改
- Generic
- SystemProductName
- SystemSerialNumber
- MLB
- SystemUUID
- ROM
- Generic
UEFI
Drivers
- 1
- 默认
- 2
- Arguments|String|
- Comment|String|HFS+Driver
- Enabled|Boolean|True
- LoadEarly|Boolean||False
- Path|String|HfsPlus.efi
- 1
Quirks
- ReleaseUsbOwnership
# 安装
将配置好的 EFI 文件夹放到 U 盘 EFI 分区,开机,不出意外,就可以进入安装页面,这时候发现键盘、鼠标是不可用的,需要加上 VoodooPS2 (opens new window)、VoodooI2C (opens new window) 驱动(已在上面补充)
安装过程省略,类似于 Windows 安装,先将系统写入系统盘,再在系统盘安装,区别在于过程中都需要使用 U 盘中的 EFI 引导。
# 安装之后
完善驱动
参考:Gathering files | OpenCore Install Guide (opens new window)
继续完善驱动,由于笔记本目前仍未能上网,因此需要继续使用另一台电脑(或系统)操作。
为什么不在安装前一次性弄好?
安装过程应使用尽可能少的驱动,避免因驱动不兼容导致的意想不到的问题
- Kexts
- SMCSuperIO.kext:监控风扇速度
- SMCBatteryManager.kext:用于识别电池电量
- AppleALC.kext:声卡
- RealtekRTL8100.kext:网卡驱动,百兆
- ECEnabler.kext:修复读取电池状态
- BrightnessKeys.kext:自动亮度快捷键
注意
- 在添加后需要使用 ProperTree 编辑器重新
OC Clean Snapshot
- 同时需要注意,Kernel-Add 中的 Lilu.kext 始终在第 0 个
声卡参数:
在 Supported codecs・acidanthera/AppleALC Wiki (opens new window) 找到声卡型号 ALC256
,对应的参数有(layout 后面的数字)
0x100002, layout 5, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22, 23, 24, 28, 33, 56, 57, 66, 67, 68, 69, 70, 76, 77, 88, 95, 97, 99
然后修改启动参数 (boot-args) 中的 alcid={参数}
,如修改为 alcid=5
,依次尝试直至可用,本机试了一个 alcid=5
即可使用。
笔记
至此,黑苹果基本可用,在使用中寻找问题。
迁移 EFI
在 Mac 下下载 OpenCore Configurator (opens new window),挂载 Mac 系统盘下的 EFI 分区,将 U 盘中的 EFI 分区移动到系统盘中。
# 优化
# 显存 2048M
- 首先需要确定核显的真实设备 ID 是多少:
方法一(Windows),从配置报告中寻找:
图形处理器(GPU):
显示适配器 Intel Kaby Lake-U GT2 - Integrated Graphics Controller
GPU 代码名称 Kaby Lake-U GT2 (Integrated 8086 / 5916, Rev 02)
GPU 核心频率 300 MHz (原始频率: 300 MHz)
在配置报告中找到这样一段报告,其中的 8086
是供应商 ID, 5916
是设备 ID,在仿冒设备 ID 表中通常以 0x{设备ID}{供应商ID}
的形式存在,因此核显的设备 ID 为 0x59168086
方法二(mac),通过 Hackintool:
系统-IGPU
- 寻找可能的帧缓冲区
通过参考资料可知,我这个设备 ID 对应的帧缓冲区有 2 个,分别为 0x59160000
、 0x59160009
,其中第一个的参考机型为 MacBookPro14,2
- 修改启动参数
在启动参数 (boot-args) 添加: igfxframe={帧缓冲区}
,即 igfxframe=0x59160000
,重试启动,不行就下一个。
如何判断是否正常
- 显存大小正常,通常为 1536M
- 毛玻璃效果,找一个窗口往 dock 栏晃动,dock 背景变化即为正常
- 显示器 - 缩放,显示的不是分辨率(至少外接 4K 显示器的时候不是)
笔记
在教程中,这一步似乎是让显卡显存只有 几M
的变为正常显示,由于我本来就能显示 1536M
(应该算是正常),所以这一步对我没有明显变化,暂且理解 0x59160000
帧缓冲区是合适的。
- Hackintool 生成仿冒配置
- 在
引导 - 引导工具
,选中OpenCore
- 在
应用补丁 - CPU架构、平台ID
分别选择Kaby Lake
、0x59160000
(帧缓冲区)- 在
信息
即能看到要仿冒的设备型号为MacBookPro14,2
- 在
- 在
应用补丁 - 应用补丁 - 通用
,只勾选接口、图形卡、基本显存、设备属性、EDID、自动侦测变化
- 在
应用补丁 - 应用补丁 - 高级
,只勾选显存2048MB、禁用eGPU、启用HDMI20(4K)、将DP映射到HDMI、帧缓冲端口数限制:3、Inject Fake IGPU、仿冒图形卡ID:0x5916 ... 620
提示
这里不能勾选 DVMT 32MB 预分配
,会导致 HDMI 最高输出只有 2K 分辨率,但由于此笔记本接口是 HDMI1.4,去掉勾选后,使用 4K@30Hz 还不如 2K@60Hz 流畅,这就取决于使用时能接受画面糊还是帧率低。
点击
生成补丁
左上角
文件 - 导出 - 引导工具Config.plish
使用 OCC 打开此配置,再打开 EFI 中的配置,将
DeviceProperties
中的PciRoot(0x0)/Pci(0x2,0x0)
覆盖 EFI 中的配置删除启动参数 (boot-args) 中的
igfxframe=0x59160000
重启
重启后,显存成功显示 2048M
之后再通过 OCC 将序列号修改为
MacBookPro14,2
核显接口输出定制(暂时用不上)
在没有进行核显仿冒配置前,HDMI 是可以正常输出画面的,现在不行了。
打脸时刻
并不是仿冒出错,而是因为我照着教程来仿冒把 帧缓冲端口数限制
设为 2
,设置成 3
即可,但在 Hackintool 中显示 2 个 HDMI 接口,可能使用 VGA 接口还需要定制,由于我手上没有 VGA 用来测试,暂不处理。
在英特尔 ® 核芯显卡 常见问答 (opens new window) 一文中,可知
ID: 0x59160000, STOLEN: 34 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00000B0B
TOTAL STOLEN: 35 MB, TOTAL CURSOR: 1 MB (1572864 bytes), MAX STOLEN: 103 MB, MAX OVERALL: 104 MB (109588480 bytes)
Model name: Intel HD Graphics KBL CRB
Camelia: CameliaDisabled (0), Freq: 1388 Hz, FreqMax: 1388 Hz
Mobile: 1, PipeCount: 3, PortCount: 3, FBMemoryCount: 3
[0] busId: 0x00, pipe: 8, type: 0x00000002, flags: 0x00000098 - ConnectorLVDS
[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x00000187 - ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000800, flags: 0x00000187 - ConnectorHDMI
00000800 02000000 98000000
01050900 00040000 87010000
02040A00 00080000 87010000
平台详细信息中平台 0x59160000
有 3 个总线 ID,接口为 LVDS
、 DP
、 HDMI
,根据国光的说法,6 代以后的核显 VGA 接口是 DP 驱动的,因此是跟笔记本实际情况符合的,分别有内置显示器 (LVDS)、VGA (DP)、HDMI三个接口。
在平台详细信息中的最后三行,分别为这三个接口的一串编号
- 索引,从 0 开始,默认值即可
- 总线 ID,唯一的,大多数平台上的最大值为 06,逐个遍历测试
- 通道:默认值即可
- 接口类型:按实际修改
02000000
:LVDS 和 eDP 接口,一般用于驱动笔记本内置显示器00040000
:DP 接口,一般 USB-C 里面内置的就是 DP 接口的显示器,macOS 下 DP 接口一般是免驱的00080000
:HDMI 一般都不可以正常显示的,得需要定制下接口数据10000000
:VGA 接口,10.8 版本后默认是不支持 VGA 显示器的, 6 代以后的 CPU 实际上是 DP 接口驱动
- 标识符:默认值即可
值得一提
但在 Hackintool 中,平台 0x59160000
有四个接口,分别为 LVDS
、 HDMI
、 HDMI
、 不存在
。暂不清楚为什么不一样
测试用例
由于我只用到 HDMI 接口的输出,又没有 VGA 的接口测试,这里我只测试 HDMI 的接口,在平台详细信息中,三个接口暂且理解都是准确的,故只修改总线 ID 即可。
已知内置显示器是可用的,因此总线 ID 应
02010A00 00080000 87010000
02020A00 00080000 87010000
02030A00 00080000 87010000
02040A00 00080000 87010000
02050A00 00080000 87010000 // 默认值,已知无效
02060A00 00080000 87010000
开始测试
笔记
这里的类型均为 Data
修改 config.plist - DeviceProperties - PciRoot(0x0)/Pci(0x2,0x0)
,添加开启定制
framebuffer-patch-enable | Data | 01000000
// framebuffer-con{索引}-alldata = {编号}
// framebuffer-con{索引}-enable = 01000000 // 开启接口?
由于在上面的定制补丁时部分属性已经存在,故只需要添加
framebuffer-con2-alldata = 02010A00 00080000 87010000
参考资料:
- OpenCor_Clover 通用 Intel 英特尔核显驱动完整教程(英特尔集成显卡与核显仿冒 ID 速查表显卡驱动) - 黑苹果屋 (opens new window)
- 黑苹果必备:Intel 核显 platform ID 整理及 smbios 速查表 | 黑果小兵的部落阁 (opens new window)
- 核显接口输出定制 - 国光的黑苹果安装教程:手把手教你配置 OpenCore (opens new window)
# 禁用睡眠
笔记
在休眠问题未解决前的妥协处理
Hackintool - 电源
,点击 螺丝刀
修复
# 屏幕亮度调节
参考:Fixing Backlight (SSDT-PNLF) | Getting Started With ACPI (opens new window)
添加
刷新 config.plish
# 关闭 Debug
参考:Fixing Resolution and Verbose | OpenCore Post-Install (opens new window)
Misc
- Debug
- AppleDebug =
False
- ApplePanic =
NO
- Target =
0
- AppleDebug =
- Debug
NVRAM
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14
- UIScale|data|01:新增,GUI 缩放,01 :标准分辨率,02 :HiDPI
7C436110-AB2A-4BBB-A880-FE41995C9F82
- boot-args:删除
-v
- boot-args:删除
UEFI
- Output
- TextRenderer:BuiltinGraphics
- Resolution:Max
- ProvideConsoleGop:True
- Output
# 启动 GUI
参考:OpenCore beauty treatment | OpenCore Post-Install (opens new window)
- 下载素材:acidanthera/OcBinaryData ,复制到
\OC\
,合并、覆盖 - 从
OpenCore-0.9.3-DEBUG.zip
中找回\OC\Drivers\OpenCanopy.efi
文件,复制到\OC\Drivers\OpenCanopy.efi
- 刷新导入,再编辑
config.plish
- Misc
- Boot
- PickerMode: External
- PickerAttributes: 17
- PickerVariant: Acidanthera\GoldenGate 图标风格
Auto
— 根据默认背景颜色自动选择一组图标Acidanthera\Syrah
— 正常图标集Acidanthera\GoldenGate
— 新风格图标集Acidanthera\Chardonnay
— 复古图标集
- Boot
- Misc
# 存在的问题
- 长时间不使用,休眠后风扇狂转,机械硬盘关了又开,开了又关
- 触控板不支持多指