AMD Ryzen 黑苹果 OpenCore EFI
目录
软件兼容性
- Sonoma (14.x)
- Ventura (13.x)
- Monterey (12.x)
- Big Sur (11.x)
- Catalina (10.15.x)
- Mojave (10.14.x)
- High Sierra (10.13.x)
使用的 OpenCore 版本: 1.0.0
硬件兼容性
中央处理器 (CPU)
此 EFI 与所有 Ryzen 和 Athlon 2xxGE 处理器兼容,需搭配macOS 兼容的外围设备。
不包括对 15h (FX 系列)、16h (A 系列) 和 Threadripper CPU 的支持。
图形处理器 (GPU)
型号 | 是否兼容 |
---|---|
集成显卡 | 否 |
Nvidia | 部分兼容 1 |
AMD | 是 2 3 |
1 Nvidia GPU 的支持在 Monterey Beta 7 中被移除,唯一恢复支持的方法是使用 OpenCore Legacy Patcher。Kepler 系列需要正确的 PAT 补丁。其他型号需要 WebDrivers,仅在 High Sierra 中工作或不受支持。更多详情请参阅 Dortania。
2 某些 R7 和 R9 GPU 需要 FakeID。更多详情在此
3 Lexa 系列 GPU 不受支持。7000 系列之前的型号支持到 High Sierra (10.13),此处不涉及其支持。
对于 AMD Navi 10 和 20 系列 GPU (RX 5000 和 RX 6000),你需要在 boot-args
中添加 agdpmod=pikera
以修复黑屏问题。
默认使用 Shaneee 制作的 PAT 补丁。它可以提高 GPU 性能,但有一些缺点。通过 HDMI 或 DisplayPort 传输的音频可能无法工作或不稳定。它也可能不适用于 Nvidia GPU。
如果你想控制显示器亮度或 HDMI/DP 音频音量,你需要使用 MonitorControl。
笔记本电脑
由于集成 GPU 不兼容,所有搭载 AMD CPU 的笔记本电脑均不受支持。
主板
SSDT-CPUR
按照以下步骤正确安装 SSDT-CPUR。
- 从这里下载。
- 将其安装到你的
OC/ACPI
目录。 - 将其添加到你的配置文件中。为简单起见,可使用 ProperTree。
AM5 插槽
在带有板载 Thunderbolt/USB4 的 AM5 主板上,当板载 WiFi 和板载 Thunderbolt 都启用时,macOS Ventura 可能无法正确枚举 PCI 总线上的设备。补丁 CaseySJ | IOPCIIsHotplugPort | Fix PCI bus enumeration on AM5 | 13.0+
可绕过此问题。该补丁默认禁用。如果你遇到所描述的问题,你必须启用此补丁。
禁用 SetupVirtualMap
要禁用 SetupVirtualMap
,只需在你的配置文件中转到 Booter -> Quirks -> SetupVirtualMap
并禁用它。(应为 false
)。
PCI Express
如果你的 BIOS 设置中有 Above 4G Decoding
选项,启用它并从 boot-args
(NVRAM 部分) 中移除 npci=0x2000
参数。
可调整大小的 BAR
如果你的 BIOS 设置中有 Resizable BAR
选项且你的 GPU 支持它,你可以启用它以获得更好的 GPU 性能。然后,将 Booter -> Quirks -> ResizeAppleGpuBars
设置为 0
。
SecureBootModel
如果你在 macOS 安装程序中遇到与安全启动相关的问题,将 Misc -> Security -> SecureBootModel
设置为 Disabled
。安装完成后,你可以将其设置为与使用的 SMBIOS 相对应的值。查看这里获取更多信息。
音频
如果你的音频芯片组与规格中指定的不同,请按照以下步骤操作。
- 前往此处查找你的音频芯片组编解码器。(在 Codec 下)
- 如果你在列表中找不到你的编解码器,那么你可能需要使用 VoodooHDA。本仓库不涉及或支持 VoodooHDA 的使用。
- 在 Revisions and layouts 下你会看到一堆数字和布局 ID。
- 找到你的
boot-args
设置并查找alcid=11
。 - 逐一尝试每个布局 ID (除了 0x 值),直到找到可用的。
- 示例:如果是
layout 10
,则使用alcid=10
- 示例:如果是
注意事项:
- 外部 (USB) 音频卡应该可以开箱即用。
- 如果你的 CPU 带有集成 GPU (即使你不使用它),你的音频可能会损坏或不稳定。你可以尝试使用 SpeedKeeper,但不能保证能解决你的问题。最好的解决方案是使用外部 (USB) 音频卡。
网络
如果你的网络连接出现任何问题,最好的办法是安装不同的 kext,最好是从这里选择。
如果你使用 High Sierra 和 Realtek 8111 以太网卡,则应使用旧版本的 kext。
如果你在 Monterey 或更新版本上遇到网卡问题,请尝试在 boots-args
中添加 e1000=0
。
SmallTree kext 目前在 Monterey 上不工作。你可以尝试 AppleIGB kext,它在某些系统上有效。如果它不起作用,你必须停留在 Big Sur 上并等待 SmallTree 的更新。
WiFi 和蓝牙
只有 Apple Airport 和 Fenvi 卡可以开箱即用。这里有所有支持的卡和所需 kext 的列表。
请记住,AirDrop、Handoff 等功能只在使用 Broadcom 芯片的卡上工作。
BIOS 设置
选项 | 状态 |
---|---|
SATA 模式 | AHCI |
Above 4G Decoding | 启用 1 |
EHCI/XHCI Hand-off | 启用 |
SVM | 启用 |
CSM | 禁用 |
Secure Boot | 禁用 |
Serial Port | 禁用 |
Parallel Port | 禁用 |
1 如果你的 BIOS 中有此选项,你还必须从配置文件中的 boot-args
中移除 npci=0x2000
。
你的固件中可能没有这些选项中的一些,只需尽可能接近匹配即可。
在启动 macOS 之前,请记得将 BIOS 更新到最新版本。
安装
可启动 USB
-
按照此指南创建你的可启动 USB。
-
克隆此仓库并将 "BOOT" 和 "OC" 目录复制到你可启动 USB 上的 "EFI" 目录。结构应该类似这样:
EFI -> BOOT, OC
。
修改内核补丁
- 修改核心数量补丁以匹配你的 CPU 核心数。
-
在你的配置文件中的
Kernel -> Patch
下找到四个algrey - Force cpuid_cores_per_package
补丁。 -
根据你的 CPU 物理核心数修改这些补丁。将这些补丁
Replace
中的第一对00
更改为下表中的十六进制值
。- 例如,对于 8 核心的 Ryzen 7 1700,三个修改后的补丁应该看起来像这样:
- B8 00 0000 0000 -> B8 08 0000 0000
- BA 00 0000 0000 -> BA 08 0000 0000
- BA 00 0000 0090 -> BA 08 0000 0090
- BA 00 0000 00 -> BA 08 0000 00
- 例如,对于 8 核心的 Ryzen 7 1700,三个修改后的补丁应该看起来像这样:
CPU 物理核心数 | 十六进制值 |
---|---|
4 核心 | 04 |
6 核心 | 06 |
8 核心 | 08 |
12 核心 | 0C |
16 核心 | 10 |
24 核心 | 18 |
32 核心 | 20 |
SMBIOS
- 使用这个工具生成你的唯一 SMBIOS 信息。
-
SMBIOS 必须是唯一的,你不能使用本仓库中已有的。
-
运行工具并选择
Generate SMBIOS
。 -
使用下表选择适合你硬件的型号。
-
前往 Apple Coverage 并粘贴生成的 序列号。你需要看到 "无效序列号" 或 "购买日期未验证" 的消息。如果你得到其他消息,你必须重新生成 SMBIOS 数据并再次检查。
-
打开 config.plist 并搜索
PlatformInfo -> Generic
,替换这些值:- SystemProductName - 型号
- MLB - 主板序列号
- SystemSerialNumber - 序列号
- SystemUUID - SmUUID
-
ROM 条目应设置为你的网卡 MAC 地址,不带分隔符 (如
:
,-
)。
GPU 系列 | 型号 |
---|---|
AMD Navi 系列 | iMacPro1,1 |
要切换到另一个补丁,请在 config.plist 中查找 mtrr_update_action 。然后将要使用的补丁的 Enabled 设置为 true 。记得将另一个 PAT 补丁的 Enabled 设置为 false 。不要尝试同时启用两个补丁,相信我,这不会起作用。 |
MKL 和 Intel 快速 Memset 补丁
macOS 的一些应用程序使用 MKL - 数学核心库。不幸的是,它在 AMD CPU 上无法原生工作 - 我们需要用这个脚本来修补它。
还有 intel_fast_memset
指令,显然在 AMD 系统上不存在。它在 Adobe 软件中很常见 - 你可以通过运行这个脚本来简单修复它。旧版本的 Adobe 软件(例如 Photoshop 22.3.1 及以下版本)需要使用其旧版本。有关 Adobe 修补的详细信息,请查看 macos86.it 上的帖子。
如果从文件运行脚本时遇到问题,请尝试将其代码复制并粘贴到终端。
DRM 支持
默认情况下,DRM 只在 Big Sur 及更新版本中修复。对于较旧的版本,你必须:
- 从配置文件中的
boot-args
中删除unfairgva=1
。 - 前往此处查找适合你系统的正确值。
- 将图表中的 Mode 参数添加到配置文件的
boot-args
中。- 如果图表中的参数不起作用,请尝试
shikigva=80
或shikigva=16
- 即使图表显示其他内容,这些通常也能工作。
- 如果图表中的参数不起作用,请尝试
- 使用 Safari 中的 Netflix 或 Apple TV+ 测试 DRM。
睡眠
首先,检查你的睡眠是否开箱即用。如果可以,你可以跳过阅读本节。
AMD 系统上睡眠问题最常见的原因是 USB 问题。
你必须映射 USB 端口。如果你有正常工作的 Windows 实例,我推荐这个工具,否则你必须手动完成。
映射后记得在配置文件中禁用 Kernel -> Quriks -> XhciPortLimit
。
如果 USB 修复无效,可能是其他问题。你可以在 Dortania 上阅读更详细的指南。
虚拟化
先决条件
- 确保在 BIOS 设置中启用了
SVM
。
软件 | 兼容性 |
---|---|
Parallels Desktop | 最高 13.1,除非使用 AppleHV。1 2 3 |
VirtualBox | 性能大幅下降。 |
VMWare Fusion 10 | 仅 Catalina 及更早版本,Catalina 需要此补丁。 |
Docker | 仅 VirtualBox 中的 Docker 或 Docker Toolbox。 |
Android 模拟器 | 仅使用兼容的虚拟机软件运行 Android-x86。 |
iOS 模拟器 | 开箱即用。 |
1 Parallels 默认在 Big Sur 及更新版本上不工作,你需要使用 SYSTEM_VERSION_COMPAT=1
环境变量。
2 使用此启动器包简化 Parallels 的使用。
3 仅 Windows 10 周年更新(版本 1607)或更早系统可用。
资源管理
不应为虚拟机分配过多资源,因为无论硬件如何,这都会导致性能问题。
使用以下配置可获得最佳结果。
- Parallels Desktop 13.1
- 4 个 CPU 核心
- 4GB - 8GB RAM
- 1GB VRAM
- 3D 加速: DirectX 9
- 操作系统: Windows 7 (SP1, 版本 7601),禁用 Aero 主题。
指南和故障排除
首先尝试禁用 AMDRyzenCPUPowerManagement 和 SMCAMDProcessor kexts - 某些硬件配置可能会导致随机内核崩溃。
如果你有任何其他问题或疑问,请随时在 AMD-OSX Discord 或论坛上询问。
由于配置的多样性,我无法协助解决特定计算机规格相关的问题。对于故障排除,我建议从 AMD-OSX Discord 上的询问开始。
请主要针对更一般性问题在 GitHub 上创建 Issue。
致谢
- Apple for macOS
- AMD-OSX Developers for kernel patches for AMD CPUs
- Acidanthera for OpenCore and most of used kexts
- Trulyspinach for Ryzen power management and monitoring kexts
- Mieze for RealtekRTL8111 kext
- DhinakG for USBToolBox
- XLNC for Adobe patches for AMD CPUs and AppleMCEReportedDisabler kext
- Pavo for research about AppleMCEReportedDisabler in Monterey
- tomnic for libfakeintel.dylib used by Adobe patches
- Dortania for OpenCore configuration guides
- AMD-OSX Community for support while making my Hackintosh
- SocketByte for README maintenance and being a great friend :)