OpenCore(OC)是一种新的引导方式,目前也非常稳定,而且众多黑苹果驱动的作者已经停止对Clover的兼容支持,改向Opencore的兼容。所以也许在未来的某一天,Clover也许会越来越难用了。提前了解了解OpenCore,还是很有必要的。今天小编讲解一下比较主流的OC配置文件 config.plist 可视化编辑器 OpenCore Configurator ,虽然软件支持中文,但参数配置及开关功能没有中文注释,OpenCore的大部分配置跟CLOVER实际上是差不多的,所以如果你熟悉CLOVER的话,当然如果你都不熟悉,那也没关系,看完这篇教程讲解,相信对你会有很大的帮助。
OC引导目录:
ACPI文件夹内的DSDT补丁文件这里就不介绍了,这个需要根据自己的电脑配置去定制,当然通用的也有,但非常少且不一定对自己的硬件起作用,最好还是自己定制。
OC必备驱动:
Kexts文件夹内放的就是OC引导的驱动文件。跟四叶草的一样,这里讲一下基本必备的驱动,有线网卡可能有所不同,这里自己斟酌自己的有线网卡去放驱动进去。
- Lilu.kext ———- Acidanthera驱动全家桶的底层依赖/下载地址
- Applealc.kext ———- 声卡驱动/下载地址
- VirtualSMC.kext ——— 传感器驱动依赖 /下载地址
- SMCProcessor.kext ———- CPU核传感器/同上
- SMCSuperIO.kext ———- IO传感器/同上
- WhateverGreen.kext ———- 核显&显卡驱动/下载地址
- IntelMausi.kext ———- Intel类千兆网卡驱动/下载地址
- USBInjectAll.kext ———- USB驱动 (你也可以定制自己的USB补丁)/下载地址
- NVMeFix.kext ———- 为NVME硬盘增加ASPT属性来保证节电,虽然对台式机没啥用,但是官方推荐所有NVME用户都使用此补丁/下载地址
OC引导补丁:
Drivers文件夹下我们把常用的一些.efi文件放进去,一般情况下你需要放如下补丁:
- MemoryAllocation.efi ———- 帮助主板空出第一个512MB内存,为后面的内存注入做铺垫,若要使用hibernation功能请不要使用它/下载地址
- OpenRuntime.efi ———- 内存寻址补丁/ 在Opencore的程序包的drivers文件夹下。
- HFSPlus.efi ———- HFS格式支持,在安装MAC或者更新时必须使用此补丁,并且此补丁的效率显然高于官方的vboxhfs.efi/下载地址
- OpenUsbKbDxe.efi ———- 键盘组合键的使用,在Opencore的程序包的drivers文件夹下。
- OpenCanopy.efi ———— 如果你想使用第三方主题,请加载此项, 在Opencore的程序包的drivers文件夹下。
Config.plist 修改
这个就是今天教程重点,这一章会把config的各个大项目分开来,内容会写的繁琐一点,为了让小白明白各个选项的用途。我这里 使用的 OpenCore Configurator 来编辑的,软件本站有下载,其他的编辑软大神请随意,小白最好用这个,简单易懂。
Config——ACPI设置:
这部分主要填写我们使用的SSDT以及DSDT文件,如果您没有请把0-8的ssdt全部删除。如果你有修改的SSDT或者DSDT文件,请先将文件放入EFI/OC/ACPI下,然后再在此处勾选启用,关于SSDT及DSDT补丁的制作及作用不在此文赘述。
在此目录下有五项可以选择勾选的内容,选择与解释如下:
Quirks | Value | 解释 |
FadtEnableReset | NO | 一些旧的主板需要对FADT进行标记来激活电脑的开机和关机功能,这里我们不许要启动它(如果你遇到关机变重启,可以打开试试,我们之后也会在nvram中将这个问题修复) |
NormalizeHeaders | YES | 清理ACPI头,一些主板的ACPI表需要打开这个修复启动。但如果补丁点亮系统,请试试NO |
RebaseRegions | NO | 换硬件、升级BIOS等对硬件的操作会对ACPI表产生影响,一般不需要打开,若发现卡PCI Configuraion Begin,请尝试打开 |
ResetHwSig | NO | 休眠相关项,台式机不需要 |
ResetLogoStatus | NO | 顾名思义了,关了 |
Config—–Booter启动设置:
这一部分是关于内存相关选项设置,主要讲一下放Quirks可勾选的选项含义,这里的选项需要格外注意。
- AvoidRuntimeDefrag:大部分UEFI都会写入时间、电源管理等信息,这个所有黑苹果主板都应该选择YES。
- DevirtualiseMmio:内存注入方式包括KASLR方式(分布式注射到各个内存地址中)以及连续性方式。在使用KASLR时,PCIE加载到内存,可能会占据所有avaliable值而导致OC的内核以及内核缓存无法注入,导致启动失败。此项目前建议选择YES,并且在下一项
ProtectUefiServices
中也选择yes。 - DisableSingleUser:这里关乎主机是否能开启单用户模式。如果你觉得有用就开启它,我选择NO,我不需要。
- DisableVariableWrite:非原生NVRAM主板需要模拟nvram.plist进而写入variable值,因此我们要禁止此项来防止其他程序对nvram进行写入,我们这里选YES。需要注意一点,如果你的主板支持原生nvram,请选择NO!
- DiscardHibernateMap:当电脑从休眠(hibernation)中唤醒时,硬盘里的资料会恢复到内存中去,但这个时候OC的内核以及内核缓存等也会写入,这样可能导致冲突,这个选项是帮助我们解决这个问题的。而目前来看,除了原生NVRAM都无法进行休眠(注意睡眠sleep和休眠hibernation是两个概念),台式机的话就更不需要休眠功能了,这里我选择NO。这里我们也不讨论如何休眠。
- EnableSafeModeSlide:安全模式下是否启用连续性的内存注入方式。我就选择YES,与正常情况下保持一致。
- EnableWriteUnprotector:保证nvram能正常写入而不受到UEFI内的一些服务的影响,无论什么主板都要选择YES。
- ForceExitBootServices:这个选项是让那些非常老旧的主板也能使用内存寻址,正常情况下选NO。
- ProtectMemoryRegions:官方对此项目的解释与AvoidRuntimeDefrag类似,除非你明白这是什么,不然选择NO,其实我也不明白。
- ProtectSecureBoot:保护uefi安全启动被写入,我选择YES。
- ProtectUefiServices:解决Z390系列主板卡开机卡++++的问题,这个功能从字面意思是与我提供的memoryallocation.efi功能类似。
-
ProvideCustomSlide: 此选项执行固件的内存映射分析并检查所有的 slide 值(1 – 255)是否可用。由于 boot.efi 生成的这个值是利用 rdrand 指令随机生成的或者伪随机指令 rdtsc 随机生成的,因此当其选择了 一个冲突的 slide 值时有可能启动失败。由于这种潜在的冲突存在,此选项强制 macOS 在可用的值中使用一个伪随机值,这也确保了 slide= 启动参数不会因为安全原因传递给操作系统。
是否需要此选项由信息 OCABC (Only N/256 slide values are usable!) 是否存在于调试日 志中决定。如果存在此信息,则需要启用此 Quriks 选项。我选择YES。如果你对KASLR有一定的认知并会运用,请注意这个值。内容从@套陆 摘抄。 - RebuildAppleMemoryMap:重新生成内存地图来匹配苹果系统。苹果的内核有很多缺陷,比如单张的内存地图不能超过4K,一旦超过就可能无法开机;又比如一些硬件会直接把读写权限写进内存里,而苹果却不能给与写入权限。如果你遇到此类的问题,请尝试开启它。注意此项目与EnableWriteUnprotector存在冲突关系,确保开启这个的时候,另一个是关闭的。另外,此项又需要与SyncRuntimePermissions项搭配使用。一般情况下请选择NO。
- SetupVirtualMap:是否建立虚拟内存并对物理内存进行映射。我们在开机时,OC的程序需要一块连续性的内存进行存放内核等东西,而实际的物理内存一般都是分散的。因此,我们通过虚拟内存建立连续性内存供OC使用,并映射到分散的物理内存中。这里我们选择YES。
- SignalAppleOS: 通知同一台电脑上的设备mac上的硬件选择,此项应该是给白苹果用的。如果你的mac开启了核显,但是win下核显不能开启,请打开。我选择NO。
- SyncRuntimePermissions:修正硬件在注入内存时无法注入权限的问题。一般此类问题存在2018年后的主板。一般我们选择NO。
Config—–DeviceProperties注入设备设置:
此项是用来注入你的设备的,主要是显卡和声卡两部分。同样你也可以定制一些设备到你的关于本机–系统报告–PCI列表中,尽但是没有多大的意义。
Config—–Kernel内核设置:
这里我们需要填写kexts的相关资料。值得注意的是OC的kexts填写必须注意顺序,比如appleALC的依赖是Lilu,那么lilu必须填在第一个;SMCProcessor.kext依赖于Virtualsmc.kext。那virtualsmc必须放在SMCProcessor.kext之前。当你添加驱动时,需要在此处勾选启动,同理删除或禁用某些驱动也需要在此处把启用勾掉或删除此行。
下边Quirks是关于内核相关的快捷选项,比较重要,请注意看!
- AppleCpuPmCfgLock:四代之前的CPU,如果未解锁CFG(即MSR0xE2)请选择YES。如果你不会解这个锁,你就选择YES,解锁的情况下选择NO。
- AppleXcpmCfgLock: 四代之后的CPU若未解锁CFG(即MSR0xE2)请选择YES。
- AppleXcpmExtraMsrs: 主要在没有原生电源管理的CPU上启用,一般是Haswell-E, Broadwell-E, Skylake-X这三种CPU需要填写YES。除此之外的CPU选择NO。
- AppleXcpmForceBoost:选择yes时将电脑的cpu频率锁定为最高频率,不建议开启,我选择NO。
- CustomSMBIOSGuid: 戴尔笔记本专用项,我们选择NO。
- DisableIoMapper: 禁用vt-d,我们在BIOS里已经禁用vt-d了,这里我们选择NO就行了。
- DisableRtcChecksum:越过两条rtc检查(0x58及0x59)。一般情况下,卡RTC我们会更多地使用
RTCMemoryFixup.kext
来防止它。我们一般情况下选择NO。 - DummyPowerManagement:替代NullCpuPowerManagement.kext,如果你使用此补丁,请删除并选择yes。我们一般选择no。
- ExternalDiskIcons: 修复苹果系统把内部硬盘识别为外置硬盘时(黄色图标的硬盘)开启,我们一般选择NO。
- IncreasePciBarSize:解决卡PCI configuration,如果碰到请选择yes, 我们选择no。注意,一般卡pci configuration都是因为自己错误的设置和硬件问题。
- LapicKernelPanic: 适用于HP笔记本的内核奔溃选项,我们选择NO。
- PanicNoKextDump: 防止kext出错打报告而让我们看不到真正的panic原因,这个随便选,我选择NO。
- PowerTimeoutKernelPanic: 10.15系统中存在一些设备自身的电源管理无法让系统进入睡眠而超时,导致内核奔溃,如果有这个问题请选择YES。
- ThirdPartyDrives: 开启Sata类SSD的trim功能,我没有sata类的ssd,我选择NO。自行根据情况选择。
- XhciPortLimit: 解除15个端口限制,我选择YES。
Config——Misc其他设置:
这里都是一些开机引导类的设置,首先将一下 Boot 菜单下的功能含义:
- ConsoleAttributes: 设置开机选择界面的颜色,默认直接填0。
- HibernateMode: 检测休眠模式。我们的机器一般都不支持休眠,选none。如果你的主板支持原生nvram、并想测试休眠,可以考虑填auto。
- HideAuxiliary:在开机选择画面隐藏一些辅助项目,比如recovery盘,clean NVRAM等。一般我们选择NO。
- PickerAttributes:当你使用OC主题时,你可以通过计算以下数值之和来配合使用OC主题,默认填0。
- PickerAudioAssist:是否开启开机朗读文字功能,一般选择NO。
- PickerMode: 是否使用OC的开机启动盘选项,如果我们填Builtin就是不使用任何主题;如果我们填External就会调用第三方主题。
- PollAppleHotKeys:是否开启一些热键功能,包括Cmd+K;Cmd+S。我选的是yes。如果你开机发现键盘无法选择,也选NO,并且删除OC/Drivers下的AppleUsbKbDxe.efi 。
- ShowPicker: 是否显示开机启动盘选项,比如MAC,WINDOWS那些。我们选择YES。
- TakeoffDelay:开机热键延时,如果你按热键老是老不急按,你可以设置5000到10000之间的值让你有更多时间按热键。
- Timeout: 倒计时进入指定硬盘,这里我们按需求填写,我填写5,代表5秒钟进入指定硬盘。
Debug菜单是关于是否开启debug模式,这里我们暂时不需要,全部忽略过。Security 菜单是设置开机后黑苹果系统功能的选项,比较重要,请看仔细些!
- AllowNvramReset: 是否在开机引导项中加入重置nvram缓存功能的选项,我们选YES。
- AllowSetDefault:选择yes后即可在开机选择系统页面中通过Ctrl+enter键设置默认启动盘。
- AuthRestart:filevault相关项,选择NO。
- BlacklistAppleUpdate:是否禁用苹果系统中的设备固件更新(比如网卡,雷电卡等固件)。
- BootProtect:请填写Bootstrap。此选项能保证OPENCORE.EFI的永久性而免遭到其他操作系统对开机顺位的破坏。在填写此项后,你同样需要保证RequestBootVarRouting是开启的。
- ExposeSensitiveData: 因为要使用到模拟nvram,这个数值我们必须填3。如果我们是原生nvram,填写2。
- HaltLevel: 按默认设置即可。
- ScanPolicy: 这里暂时填0。
- Vault: 黑苹果的vault加密方式,我们不需要这个功能,填Optional。
Config——NVRAM随机访问存储设置:
这是关于nvram的选项卡,不用做什么操作全部默认即可,这一部分主要讲解一下下边几个快速选择按钮的功能含义:
- LegacyEnable:如果你的主板不支持原生NVRAM,请一定要选择YES! 如果你的主板支持原生nvram的,选no。
- LegacySchema:这里是nvram的变量设置,大部分默认已经填好,我们只需添加两个变量即可。
打开7C436110-AB2A-4BBB-A880-FE41995C9F82这一栏,添加两个item如下:
item 11 String efi-boot-device item 12 String efi-boot-device-data
- WriteFlash:如果你的主板bios因为nvram导入垃圾内容,请关闭它,一般都是选择no。
Config——PlatformInfo机型平台设置:
这里我们填合适的机型。对于最近一代的主板来说,一般的原则,只有核显的机器我们选Macmini8,1;只有独显的机器我们选择iMac Pro 1,1;有核显和独显的我们选择iMac 19,1。此项最底部的快速选择部分要全部选择YES!
- 自动:选择YES
- UpdateDataHub:选择YES
- UpdateNVRAM:选择YES
- UpdateSMBIOS:选择YES
- UpdateSMBIOSMode:选择Create
另外这里还是填写白果三码进行洗白,解决iMessage、FaceTime、iCloud 无法登录问题的地方,注入教程基本同四叶草洗白一样,可以查看此处,另外也可以快速选择机型免得手动输入,但是这里只能修改机型,不能洗白,还是无法正常登录使用iMessage、FaceTime。
Config——UEFI设置:
这里我们需要填写UEFI相关的设置,先讲一下底部 Quirks 快捷选择功能的含义:
- ExitBootServicesDelay:旧主板需要给予主板退出时间(单位为微秒),较新的主板直接填0。旧的主板比如Z87pro,填3000000-5000000
- IgnoreInvalidFlexRatio:如果你没有在bios中解锁MSR0x194,一定要选YES。
- ReleaseUsbOwnership:大部分的主板都有自动释放USB所有权的功能,我们选NO。如果你开机键盘鼠标卡死了,或者USB失灵,试试选Yes。
- RequestBootVarFallback:一些固件会主动扫描系统启动盘的位置而阻止OC扫描,如果碰到这样的问题选择YES,一般这个BUG在华硕的主板中比较常见。
- RequestBootVarRouting: 增加”启动磁盘” 的可靠性,这里选择YES。
- TscSyncTimeout:帮助一些X99 X299的主板开启全核同步功能。此选项旨在代替TSCAdjustReset.kext等类似补丁,推荐的值是500000。但是此选项并不能在睡眠唤醒后生效,所以请填写默认值0,并使用TSCAdjustReset.kext来做全核同步。
- UnblockFsConnect:惠普笔记本可能会让OC无法扫描到启动项,一般选择NO,如果你是惠普笔记本,请选择YES。
按菜单顺序先讲解 嵌入式APFS 菜单下的快捷选择功能的含义:
- EnableJumpstart: 从APFS容器中加载内置APFS驱动,建议开启YES。此选项仍然依据你的Scanpolicy来做出决定,请确保在Scanpolicy中放开APFS格式。
- HideVerbose:是否隐藏啰嗦模式,一般我们需要看日志的时候才开启,所以我们选择隐藏,选择YES。
- JumpstartHotPlug:是否加载APFS格式的热插设备,一般我们选择YES。
- MinDate:加载最低发行的APFS格式。一些旧的apfs可能会危害电脑,我们填0。如果你想加载旧的发行日期的APFS格式硬盘,请填-1。
- MinVersion:加载最低版本的APFS格式。填0代表从HIGH SIERRA开始加载。填-1代表所有版本,建议填0。
Config—–UEFI——开机音频:这里是否开启黑苹果的开机提示音支持,没什么用,此项忽略。
Config—–UEFI——UEFI驱动: 把我们之前放在OC/EFI/Drivers下面的驱动一一填上,这里我们也注意一下填入的顺序以及文件名的大小写。
Config—–UEFI——apple快捷键相关:此选项是原生apple开机热键的选项,需要配合我们之前设置的PollAppleHotKeys=yes以及AppleUsbKbDxe.efi补丁一起用。下面的设置完全按照默认情况就行了。因为我的键盘是苹果原生键盘,不支持这个功能,所以我直接PollAppleHotKeys里填了NO,这里也不会生效的。有一点需要说,如果你是华硕的z87或者z97,你需要打开PointerSupport这个选项。
Config—–UEFI——显示输出:
- ClearScreenOnModeSwitch:消除开机时从图形模式转换到文本时出现残影的问题,如果没有这个问题我们选择NO。
- ConsoleMode:这里填主机的输出方式,一般情况下填MAX,或者留空
- DirectGopRendering:是否使用内置显卡直接渲染开机画面,建议选择no。
- IgnoreTextInGraphics: 修复在不使用-v跑马模式时候,开机日志导致的苹果logo显示不正确的问题。如果有这种情况选择YES,一般我们选择NO。
- ProvideConsoleGop:调用显卡gop,我选择YES。
- ReconnectOnResChange: 一些固件在 GOP 分辨率改变后会重新连接显示器才能输出,一般情况下选择NO。
- ReplaceTabWithSpace:一些固件在UEFI Shell下TAB功能键不生效。开启这个会用空格键代替。一般我们选择NO。
- Resolution:开机分辨率。比如我的显示器是4K、16:9的,我就填写3840×2160。这个你根据情况填写或者不填。
- SanitiseClearScreen: 修复4k及以上显示器的输出问题,选择YES。
- TextRenderer:OC开机代码字体渲染方式,我这里填BuiltinGraphics
Config—–UEFI——协议覆盖:
- AppleAudio: 如果你想要开启如同白苹果一样的开机DUANG的声音等,请开启它,并且还需要配合UEFI—-Audio的正确设置。
- AppleBootPolicy: 虚拟机的mac需要用的,我们选择NO。
- AppleDebugLog:重新安装苹果错误日志界面,一般选择NO。
- AppleEvent: 虚拟机并具有vault的mac需要用的,我们选择NO。
- AppleImageConversion: 重建apple图标,选择NO。
- AppleKeyMap: 重建苹果功能键,选择NO。
- AppleRtcRam:重装applertc协议。一般选择NO。
- AppleSmcIo:代替之前的VirtualSMC.efi,请选择YES
- AppleUserInterfaceTheme: 重新安装 Apple User Interface Theme 协议,选择NO。
- DataHub:重建datahub,这里我们选NO。
- DeviceProperties: 虚拟机或者老款的电脑需要选择YES才能注入device property,我们选NO。如果你发现你注入device property无效,请选择YES。
- FirmwareVolume: VAULT相关项,我们选NO。
- HashServices: VAULT相关项,我们选NO。
- OSInfo: 通知主板以及一些程序关于MAC引导的信息,一般情况选择NO。
- UnicodeCollation: 旧的主板需要,我们选NO。
Config—–UEFI——保留内存:此项为保留内存所用。一些硬件会把硬件EFI写进内存过程中占据必要的UEFI运行空间,所以我们可以通过此项来预留内存来保证UEFI的运行。一般情况下,此项我们并不需要理会。
写一篇教程要花费很多功夫和时间,初次接触黑苹果的用户大多又都是小白,很多又是伸手党,即使教程写的也会问,解答过的问题也会问,总之以后会多出一些接地气的教程,对很多想入门或已经入门的黑苹果用户还是能够起到一些帮助作用的,也能减少一些无必要的问答,也请大家多多支持!