一、 OC配置的基本条件与工具软件
1.1、 准备Mac平台,包括实体机平台和虚拟机平台。
1.2、 下载最新镜像并核对MD5,制作安装U盘。
1.3、 工具软件:
OpenCore Configurator(持续更新中),
Hackintool(综合工具),
PlistEdit Pro(Plist文件工具),
IORegistryExplorer(路径工具),
BetterZip(解压软件)。
1.4、基本流程:

1.6、OpenCore基本架构

二、 配置准备:
2.0、 Mac平台准备
没有Mac平台的,可以参阅Windows10下Vmware15.5虚拟机安装苹果macOS Catalina 10.15.4,建立Mac平台,已有Mac平台可以跳过此步。
2.1、 下载最新镜像,核对MD5
利用下载的最新镜像,制作安装U盘。(用磁盘工具抹掉U盘,扩展日志式/GUID)
2.2、OC-EFI包
放到桌面。里面包含Docs与Utilities后面将会用到。并改名为OC-EFI,便于识别。
2.3、ACPI文件(SSDT)
将下载的SSDT包里面的DSDT/SSDT拷贝到
OC-EFI-
OC-
ACPI`里面。注意,除非你清楚这些DSDT/SSDT的明确作用,否则,能不用就不要用!
2.4、驱动转移
将下载的Kext包里面所有驱动全部拷贝到
OC-EFI-
OC-
Kexts`里面。同样道理,除非你清楚这些驱动的用途,否则删除不明用途的驱动
2.6、config.plist文件
将OC包/Docs里面的范例Sample.plist或SampleFull.plist之一拷贝到OC-EFI-OC里面,并改名为config.plist。
2.7、config.plist文件处理
分别用相应的配置工具打开OC-config.plist。
三、 开始配置OC-config.plist
3.1、Config-ACPI设置:
3.1.1、config-ACPI-添加(Add):
先删除范例里面所有DSDT/SSDT,点浏览,到OC-EFI/OC/ACPI,选取所有你使用的DSDT/SSDT。(再次建议:,特别是台式机,能不用DSDT/SSDT的,就不要用,除非你精通且清楚了解DSDT/SSDT的作用!
)参阅面向小白的OC快速无脑配置-基于OpenCore-0.5.8-04-23编译版
3.1.2、config-ACPI-阻止(Block)Delete(05-17改名):
除非你明白确切意义,一般不用。
3.1.3、config-ACPI-补丁(Patch):
建议,逐个调试删除,保留最少的、必要的热补丁。我已经遇到不止一个例子,由于乱用热补丁且不明白这些热补丁的明确作用,导致无法正常引导。特别是笔记本。
下面是10.15.x常用的2个补丁:
更改控制器EC0名称
Comment:EC0 to EC Find:4543305F Replace:45435F5F
解决RTC问题:
Comment:Fix AsRock Z390 BIOS DSDT Device(RTC) bug Find:A00A9353 54415301 Replace:A00A910A FF0BFFFF

3.1.4、config-ACPI-Quirks:
- FadtEnableReset:主要用于老旧主板的开关机功能,如果你关机变重启,可以勾选,一般情况下
不勾选
。 - ReseHwSig:与休眠有关的选项,台式机一般不用,
不勾选
- NormalizeHeaders:清理ACPI头,一般
勾选
,如果有相应的热补丁,可以不勾选
。 - RebaseRegions:更换硬件或升级BIOS可能对ACPI产生影响,一般
不勾选
。如果遇到卡PCI Configuration Begin,就勾选试试。 - Resetlogstatus:重置日志,一般
不勾选
。

3.2、Config-Booter设置
3.2.1、config-Booter-MmioWhitelist(内存映射IO白名单)
默认第一项是为Haswell芯片
提供内存寻址修复,此类芯片如果遇到内存相关问题,就勾选启用。 默认第二项是开机卡PCI Configuration。ACPI、PCI device同时释放到内存时发生0x1000内存地址被占用而卡在PCI Configuration,则勾选,否则无视!
3.2.2、config-Booter-Quirks:
此设置与OpenRuntime.efi
有密切关系,OpenRuntime.efi
将一些功能与OC合并、模块化。对于300系列等无法原生nvram的主板来说,此处的选项需要格外关注!
- AvoidRuntimeDefrag:绝大部分UEFI都会写入时间、电源管理等信息,只要是苹果,此项必须
勾选
。 - DevirtualiseMmio:一般情况下,采用slide=1的方式进行连续性内存注入,故一般
不勾选
,除非你的机器用了KASLR方式。(台式机基本没有)。 - DisableSingleUser:是否开启单用户模式(-s)。一般
不勾选
。 - DisableVariableWrite:非原生nvram主板需要模拟nvram.plist写入variable值,所以
非原生nvram主板
必须勾选
,原生nvram主板
则不勾选
。经过测试非原生nvram主板
(主要是300系列主板)使用SSDT-PMC以后,就可以当原生nvram主板使用,不用勾选此项。 - DiscardHibernateMap:这个选项帮助我们解决下面的冲突:当电脑从休眠中唤醒时,硬盘里面的资料会恢复到内存中去,此时OC内核以及内核缓存也要写入,二者可能产生冲突。就目前而言,台式机无视休眠功能,故,
不勾选
! - EnableSafeModeSlide:安全模式下(-x)是否用连续性的内存注入方式,一般
勾选
。 - EnableWriteUnprotector:允许对UEFI服务代码的写入,该选项通过删除写保护(WP)来绕过UEFI运行时服务的代码页中的RX权限。一般是
勾选
- ForceExitBootServices:为让老旧主板也能使用内存寻址,正常情况下,
不勾选
,除非你的额主板很老很旧。至于何为老旧主板,自己根据实践摸索试验。 - ProtectMemoryRegions:确保CSM内存区域标记为ACPI NVS,以防止boot.efi或XNU重新定位或使用它们。但是由于AvoidRuntimeDefrag解决了类似的问题。默认
不勾选
(false)除非一些老旧主板可能需要勾选,需要测试。 - ProtectSecureBoot:保护UEFI安全引导变量写入参数时不被干扰而引起冲突,默