这篇文章试图教育用户解决RTC(CMOS)记忆体相关的错误导致无法开机,卡F1,无法关机,时钟停止,无法唤醒等问题。此文章为《使用OpenCore引导黑苹果》的补充内容,因原文中RTC相关内容较为散乱,而特意补充。

 

特别提醒:在使用以下方式修复rtc的过程之前,强烈建议先短接主板CMOS以及清除NVRAM后再进行操作!NVRAM和CMOS存储位置不同,请确定两件事都做了!!

 

RTC的问题表现

  • 华硕等主板开机卡F1
  • 开机卡在PCI Configuration代码处
  • 睡眠后唤醒奔溃,得到的错误报告为:Sleep Wake Failure in EFI
  • 无法关机
  • 电脑时钟不走,或者睡眠唤醒后时钟不走

 

RTC如何工作

RTC为l2c下的从设备,rtc为系统提供时间,电源,硬件信息等指示数据,l2c主动联系从设备rtc获取信息,反馈给系统。这些信息都被注册在rtc的各个内存位置上,这些内存地址对应的数据可通过OC-liilte或者搜索自己主板型号的intel datasheet获得。

举例:

系统设定一个自动关机的时间,比如22:20分,此信息通过系统trigger到rtc,l2c扫到rtc信息,则自动关机。

 

苹果系统下RTC的问题如何产生?

问题主要是因为Apple。

  • Apple公司使用自己定义的Apple RTC,而普通主板可能引用了最新的AWAC装置来代替传统RTC而导致无法开机。
  • Apple公司使用自己定义的Apple RTC,Apple RTC记录的内存范围可能不被我们普通的主板所支持,超出了我们普通主板0x70-0x78范围而导致了错误。

 

如何解决上述问题

对于苹果系统下RTC的问题如何产生?》,第一个问题是这样的:一些具有AWAC的设备我们可能需要禁用AWAC来启用Legacy RTC。这里可通过OC-Little包中的禁用AWAC来实现。其中SSDT-AWAC.dsl更适用于主板DSDT代码特别多的主板,请根据情况二选一并转换成aml后使用。

 

 

 

对于第二个问题,它可能带来的影响包括时钟不走,关机不断电,开机卡f1,无法唤醒,唤醒崩溃等。这种问题就像我之前说的,是因为apple rtc写入到了普通主板rtc不支持的范围而导致的。

我之前在主文章有写到通过二进制补丁来解决开机卡F1,但这种方式其实是不妥当的,这是因为:

  • 这种补丁会因为系统版本的更新而失效
  • 并不能控制Efiboot来写入RTC
  • 卡F1的因素过多,而二进制补丁不可能具有通用性

 

因此,OC团队提供了三种方式来更好的解决RTC引起的各种问题。

  • 提供DisableRtcChecksum选项来忽略RTC地址中的0x58-0x59范围。但遗憾的是此quirk只适用于0x58-0x59地址损坏的rtc情况,并不具备通用性。

 

  • ACDT团队提供了RTCMemoryFixup.kext让用户可以自主选择所有你想屏蔽的地址。此kext需要用二分法来使用。

    将此kext放入OC/Kexts下面,并在config中加载它。

    一般来说,我们CMOS的总内存池是从00-FF(这个是16进制,换算成10进制就是从0-255),我们可以通过增加boot-args:rtcfx_exclude=00-FF来完全屏蔽cmos(当然这样写你完全失去了cmos记忆的功能了)

    我们需要通过二分法来定位你出错的cmos位置。把00-FF分成两部分,也就是00-7F以及80-FF。我们分别填一次rtcfx_exclude=00-7F以及rtcfx_exclude=80-FF,试试看问题有没有解决。比如说我使用的rtcfx_exclude=80-FF是解决了,那我们继续对80-FF进行拆分为:0x80-0xBF 和 0xC0-0xFF。以此类推,直到你拆分到最后的那一段位置为止。

 

  • ACDT团队提供了写入NVRAM的方式来屏蔽RTC地址。如图,RTC-blacklist中 8586878889 代表屏蔽85 86 87 89的RTC地址,如果屏蔽85以及86则填写8586。注16进制。      

 

 

特殊情况

有两个非常特殊的情况:

  • 一些主板本身的DSDT就把RTC的地址写错了,我们需要更正。比如,华硕299的主板没有对rtc的0x72以及0x73进行映射,源dsdt中的资源分配如下代码。0x70只加到了0x72之前,从0x74位开始加到了0x78之前,也就是0x72以及0x73被忽略。因此需要官方的ssdt对rtc的资源进行重新分配
Device (RTC)
{
    Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */)  // _HID: Hardware ID
    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
    {
        IO (Decode16,
            0x0070,             // Range Minimum
            0x0070,             // Range Maximum
            0x01,               // Alignment
            0x02,               // Length
            )
        IO (Decode16,
            0x0074,             // Range Minimum
            0x0074,             // Range Maximum
            0x01,               // Alignment
            0x04,               // Length
            )
        IRQNoFlags ()
            {8}
    })

 

 

  • Smbus是一种可能已经被淘汰的总线方式,此部件在很多新的机型中已经不再被需要。但经证实在过往的一些mac版本中需要激活它才能进入睡眠唤醒,这是一种很奇怪的现象,但是一般来说此补丁不该被需要。请注意原文中的0x57应该根据自己的主板来决定。比如我的x299主板应该搜索x299 intel datasheet,获得自己主板的datasheet后,得知自己Smbus串口的位置为0xc6。

 

 

References

Dortania Team, (2020).,<Fixing RTC write issues>. available at: https://dortania.github.io/OpenCore-Post-Install/misc/rtc.html#finding-our-bad-rtc-region, last accessed at 10 Oct 2020.

 

OC little, (2020)., <03-二进制更名与预置变量>. available at:https://github.com/daliansky/OC-little/tree/master/03-二进制更名与预置变量, last accessed at 10 Oct 2020.

 

Acidanthera (2020)., <AcpiSamples> available at: https://github.com/acidanthera/OpenCorePkg/tree/master/Docs/AcpiSamples , last accessed at 10 Oct 2020.

 

简介

OpenCore(OC)是一种新的引导方式,随着越来越多的kexts开始放弃Clover, 我相信提早使用OC会对你未来使用黑苹果会有很大的帮助。这是一个自然的现象,就像变色龙被Clover淘汰,而现在OC代替Clover也是大势所趋。你应该需要看一些相关的文章,来帮助你理解我的正文内容,同时也需要下载我推荐的软件:

 

 

 

帖子更新内容查询

2020-10-14:

1.Opencore 0.6.2正式版修改如下variables:

  • 增加ExtendBTFeatureFlags (章节2.4.6)
  • 移除DummyPowerManagement(章节2.4.6)
  • 增加LegacyCommpage(章节2.4.6)
  • 增加SystemMemoryStatus (章节2.7.2)
  • 增加ProcessorType(章节2.7.2)

 

2020-09-11:

1.Opencore 0.6.1正式版新增如下variables:

  • Force (章节2.4.4)
  • DisableLinkeditJettison (章节2.4.6)
  • Scheme (章节2.4.7)
  • Security下新增内容(章节2.5.5)
  • AppleImg4Verification (章节2.8.5)
  • AppleSecureBoot(章节2.8.5)

 

2.考虑到稳定性,提供官方的Opencore稳定版链接,同时注明BAT的工厂版链接。感谢BAT一直以来提供的稳定持久的编译服务。

 

2020-07-23:

1.大家似乎对macos 11的测试版有点急迫,我这里半路更新Opencore0.60的内容。

2.增加ProvideMaxSlide (章节2.2.2)

3.增加GlobalConnect (章节2.8.8)

4.增加AppleFramebufferInfo (章节2.8.5)

5.增加UgaPassThrough (章节2.8.4)

6.删除BlacklistAppleUpdate (章节2.5.5)

7.增加boot-args:vsmcgen=1 用以暴露smc来安装macOS 11(章节2.6.1)

8.增加以及修改3.8.1/3.8.2/3.11.1章节讨论关于rtc的问题,以便于安装MacOS 11。

9.修改章节3.9关于核心显卡加速。

 

 

 

2020-06-14:

以下是opencore 0.5.9正式版的更新内容:

1.Block更名Delete(章节2.1.2标题;章节2.3.3标题;章节2.6.2标题)

2.删除Hideself (章节2.5.2)

3.增加BlacklistAppleUpdate以及BootProtect(章节2.5.5)

4.删除DirectGopCacheMode (章节2.8.4)

5.增加DeduplicateBootOrder以及TscSyncTimeout (章节2.8.6)

 

2020-05-05:

1.最近BAT哥要考试,小兵的精解OPENCORE会停更一段时间,所以就我来写了,以后我只会在正式发行版中更新。这次更新的是0.5.8正式版,晚点写完。

2. 删除ApfsDriverLoader.efi (章节1.0) ;增加APFS章节(章节2.8.8)。

3.增加DisableRtcChecksum(章节2.4.5)。

4.Protocol更名ProtocolOverrides (章节2.8.5)。

5.增加RTC屏蔽选项(章节2.6.1)以及AppleRtcRam(章节2.8.5)。

6.增加ReservedMemory Properties (章节2.8.9)。

 

 

0.0 BIOS设置

直接抄袭@黑果小兵了~嘻嘻嘻

禁用如下:

英文 中文
Fast Boot 快速启动
CFG Lock (MSR 0xE2 write protection) CFG 锁 (MSR 0xE2 写入保护)
VT-d VT-d
CSM 兼容性支持模块

 

启用如下:

英文 中文
VT-x VT-x
Above 4G decoding 大于 4G 地址空间解码
Hyper Threading 处理器超线程
Execute Disable Bit 执行禁止位
EHCI/XHCI Hand-off 接手 EHCI/XHCI 控制
OS type: other types 操作系统类型: 其他

 

1.0 整理OPENCORE目录

  • 打开下载好的最新版OC(0.5.1),把Doc文件夹下面的SampleFull.plist改名为config.plist,并把此文件移动到EFI目录下面。
  • 打开EFI—Kexts,我们把常用的一些kexts先放进去,一般情况下你需要放如下Kexts:

               *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用户都使用此补丁/下载地址

 

  • 注意,一些机型用了1820A,1560,1830等网卡,需要自己放对应驱动;有线螃蟹卡也自己放一下驱动;笔记本类需要更多传感器的,请自行补齐VirtualSMC的那些传感器补丁; 

 

  • 打开EFI—Drivers,我们把常用的一些.efi文件放进去,一般情况下你需要放如下补丁:

               *MemoryAllocation.efi                          ———- 帮助主板空出第一个512MB内存,为后面的内存注入做铺垫,若要使用hibernation功能请不要使用它/下载地址

               *OpenRuntime.efi                                ———- 内存寻址补丁/ 在Opencore的程序包的drivers文件夹下。

               *HFSPlus.efi                                        ———- HFS格式支持,在安装MAC或者更新时必须使用此补丁,并且此补丁的效率显然高于官方的vboxhfs.efi/下载地址

               *OpenUsbKbDxe.efi                            ———- 键盘组合键的使用,在Opencore的程序包的drivers文件夹下。

                 *OpenCanopy.efi                                     ———— 如果你想使用第三方主题,请加载此项, 在Opencore的程序包的drivers文件夹下

 

下载完成后,我们的整个EFI文件夹如下图所示:

 

 

2.0 Config.plist 修改

这一章会把config的各个大项目分开来,内容会写的繁琐一点,为了让小白明白各个选项的用途,当然有能力的人可以直接看我最前面的几个链接来配置config.plist。我这里强制要求你使用XCode 10或者Propertree来编辑Config.plist,其他的任何软件我都不建议使用,包括Plistedit pro。

 

2.1 Config—-ACPI

ACPI包括了四个部分:Add, Block, Patch, Quirks。这里我们先把root下面的两条#WARNING – 1和#WARNING – 2删除,这两条没有实际意义。

 

2.1.1  Config—-ACPI—–Add

这部分主要填写我们使用的SSDT以及DSDT文件,如果没有请把0-8的ssdt全部删除。如果你有修改的SSDT或者DSDT文件,请先将文件放入EFI/OC/ACPI下。

因为我使用雷电卡,我需要添加两条关于雷电卡的ssdt文件:

 

Item 0
      Comment  String   Thunderbolt3-DTGP  //填一个你自己能辨别的名字,方便知道是啥
      Enable   Boolean        YES          //表示加载此SSDT,反之NO则为不加载
      Path     String   SSDT-DTGP.aml      //为你ssdt放在EFI/OC/ACPI下的文件名,必须一致

Item 1
      Comment  String   Thunderbolt3               
      Enable   Boolean        YES                 
      Path     String   SSDT-TB3.aml             

 

2.1.2  Config—-ACPI—–Delete

这个目录下是禁用一些SSDT/DSDT,没什么用,我把下面的item全都删了。

 

2.1.3  Config—-ACPI—–Patch

这里我们需要填写一下热补丁。

  • 在10.15中,一些资料指出我们需要把EC控制器(EC0)改名为EC来确保能进入10.15系统

 

Comment: EC0 to EC 
Count:0 
Enabled:YES 
Find:<4543305F>
Limit:0 
Mask:<> 
OemTable:<> 
Replace:<45435F5F> 
ReplaceMask:<>
Skip:0 
TableLength:0 
TableSignature:<>

 

需要注意的是,一些主板的EC控制器名字可能会叫H_EC等,请自行提取DSDT并搜索PNP0C09,来获取EC控制器的名字,这些内容会在第三章中写出。

 

  • 华擎、华硕、微星主板可能会遇到RTC问题而无法进入系统,这同样需要添加hotpatch补丁来解决:
Comment: RTC fix

Count:0

Enabled:YES

Find:<A00A9353 54415301>

Limit:0

Mask:<>

OemTable:<>

Replace:<A00A910A FF0BFFFF>

ReplaceMask:<>

Skip:0

TableLength:0

TableSignature:<>

 

 

 

2.1.4  Config—-ACPI—–Quirks

此目录下有五项,选择与解释如下:

Quirks Value 解释
FadtEnableReset NO 一些旧的主板需要对FADT进行标记来激活电脑的开机和关机功能,这里我们不许要启动它(如果你遇到关机变重启,可以打开试试,我们之后也会在nvram中将这个问题修复)
NormalizeHeaders NO 清理ACPI头,一些主板的ACPI表需要打开这个修复启动。
RebaseRegions NO 换硬件、升级BIOS等对硬件的操作会对ACPI表产生影响,一般不需要打开,若发现卡PCI Configuraion Begin,请尝试打开
ResetHwSig NO 休眠相关项,台式机不需要
ResetLogoStatus NO 顾名思义了,关了

      

2.2 Config—–Booter

内存相关选项设置。

2.2.1 Config—Boot—MmioWhitelist

默认的第一项是为Haswell芯片提供的内存寻址修复,如果此类芯片碰到内存相关问题,请开启它(enable选择yes)。

默认第二项是开机卡PCI Configuration这里。ACPI、PCI device同时释放到内存时发生0x1000内存地址被占用而卡在PCI Configration.如果碰到此类问题,请开启它。

2.2.2 Config—Boot—Quirks

此项与OpenRuntime.efi有关。在aptiomemoryfix停更后,此补丁已经更名为Openruntime, 并将一些功能与OC合并、模块化。对于无法原生nvram的主板来说,这里的选项需要格外注意。当然我也会把像300系列、x299、c422这样支持原生nvram的选择方法一并写进去。

 

  • AvoidRuntimeDefrag:大部分UEFI都会写入时间、电源管理等信息,这个所有黑苹果主板都应该选择YES

 

  • DevirtualiseMmio:内存注入方式包括KASLR方式(分布式注射到各个内存地址中)以及连续性方式。在使用KASLR时,PCIE加载到内存,可能会占据所有avaliable值而导致OC的内核以及内核缓存无法注入,导致启动失败。此项目前建议选择YES,并且在下一项ProtectUefiServices中也选择yes。

      注:KASLR是更加高效的内存注入方式,但不代表每台机器都能使用这种方案,这里我提供两种关于内存的设置:

1:DevirtualiseMmio选择yes, ProtectUefiServices选择yes, 并删除2.6.1中boot-args里面的slide=1,以及删除Drivers文件夹下的Memoryallocations.efi。即开启KASLR内存注入方式。

2:DevirtualiseMmio选择yes, ProtectUefiServices选择no, 保留2.6.1中boot-args里面的slide=1,以及保留Drivers文件夹下的Memoryallocations.efi。即开启连续性内存注入方式。

 

  • 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:保护安全启动,除非你开启安全启动,不然我们选择NO。

 

  • 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有一定的认知并会运用,请注意这个值。内容从@套陆 摘抄。

 

  • ProvideMaxSlide:如果你没有启用KASLR的话,请填写1-255之间的数字以存放休眠文件写进内存所需要的内存高度,反之则填写0。

 

  • RebuildAppleMemoryMap:重新生成内存地图来匹配苹果系统。苹果的内核有很多缺陷,比如单张的内存地图不能超过4K,一旦超过就可能无法开机;又比如一些硬件会直接把读写权限写进内存里,而苹果却不能给与写入权限。如果你遇到此类的问题,请尝试开启它。注意此项目与EnableWriteUnprotector存在冲突关系,确保开启这个的时候,另一个是关闭的。另外,此项又需要与SyncRuntimePermissions项搭配使用。一般情况下请选择NO。

 

  • SetupVirtualMap:是否建立虚拟内存并对物理内存进行映射。我们在开机时,OC的程序需要一块连续性的内存进行存放内核等东西,而实际的物理内存一般都是分散的。因此,我们通过虚拟内存建立连续性内存供OC使用,并映射到分散的物理内存中。这里我们选择YES

 

  • SignalAppleOS: 通知同一台电脑上的设备mac上的硬件选择,此项应该是给白苹果用的。如果你的mac开启了核显,但是win下核显不能开启,请打开。我选择NO。

 

  • SyncRuntimePermissions:修正硬件在注入内存时无法注入权限的问题。一般此类问题存在2018年后的主板。如果你因为此选项无法进入windows,请开启它。一般我们选择NO

 

 

2.3 Config—–DeviceProperties

此项是用来注入你的设备的,主要是显卡和声卡两部分。同样你也可以定制一些设备到你的关于本机–系统报告–PCI列表中,尽管没有多大的意义。

 

2.3.1  声卡

这里首先我们需要找自己声卡的地址,打开hackintool,到PCI列表中寻找IOReg IOname那栏,一般声卡的设备名称叫做HDEF或者HDAS:

这里我们找到的声卡PCI路径为PciRoot(0x0)/Pci(0x1f,0x3)。我们把预先填写在那里的PciRoot(0x0)/Pci(0x1b,0x0)项替换成我们真正的声卡路径。后面一段我们看到预先填写的声卡ID为<01000000>,这里我们需要把它换成自己系统的ID。

  • 打开先前要求下载的Hackintool,到声卡选项部分,我们可以看到自己的声卡编号,我的是ALC1220。

 

  • 打开黑果小兵关于声卡的博客,并搜索我们的声卡型号:ALC1220,我们发现我们的声卡型号对应1, 2, 3, 5, 7, 11, 13, 15, 16, 27, 28, 29, 34的layout ID。我们需要一个个测试过去,选定自己能用的。这里我们选择7这个ID进行测试,将7转化成16进制格式为07,后面为了满足格式要求添加6个0,则为07000000,将这个值替换刚才预先填的01000000中;如果我们测试ID为27,27的16进制为1b,补上6个0则为1b000000。

 

  • 一些奇怪的声卡可能需要注入device ID才能用,不知道为啥:
PciRoot(0x0)/Pci(0x1f,0x3) 
   device-id         data        <70a10000>  //这个device id是固定的,不要问为什么是这个id
   layout-id         data        <0b000000>  //这个Layout id我瞎写的,你按实际情况写

 

 

  • 如果你测试的ID都无效,请确保你的操作过程正确、并测试用万能声卡补丁来替换AppleALC这个补丁。如果都不行,你可能需要自行编译声卡补丁

 

2.3.2  核心显卡

打开PciRoot(0x0)/Pci(0x2,0x0)这项,此项为驱动核心显卡。驱动核心显卡我们要分情况讨论:1.只有核心显卡的DP显示器用户 (HDMI我会在进阶设置中写);2.没有核心显卡的用户;3.有核心显卡并用独显做主力的用户。注意,这里我们只讨论8代和9代CPU的机器,其他CPU机型的请在论坛或者黑果小兵博客中搜索相关代码。

 

2.3.2.1 只有核心显卡的DP显示器用户

8代和9代的核显ID为:3E9b0007,device ID为3e9b0000,但是我们需要符合一定的顺序格式填入进去,至于为什么是这么奇怪的一个顺序,我也不知道,你照抄就是了:

AAPL,ig-platform-id     data    <07009b3e>
device-id               data    <9b3e0000>
enable-hdmi20           data    <01000000>  //如果你的hdmi不是2.0的(主板说明书会写),不需要填写这行。
framebuffer-unifiedmem  data    <00000080>  //核显显存相关

 

2.3.2.2 没核心显卡的用户

带f的cpu (e.g. 9100f 9900kf), Xeon等不带核心显卡的用户不需要管这项,直接把AAPL,ig-platform-id选项卡删了。

 

2.3.2.3 有核心显卡并用独显做主力的用户

这种情况我们一般把核心显卡作为加速用,而显示则用独立显卡。这样,我们填一个作为加速用的核显ID即可了:

AAPL,ig-platform-id     data      <0300983e>

 

 

2.3.3 Delete

这里是禁用一些设备的,我们按默认就行了,不需要任何修改。

 

 

2.4 Config—–Kernel

这里是内核相关选项。

 

2.4.1 Config—–Kernel—–Add

这里我们需要填写kexts的相关资料。值得注意的是OC的kexts填写必须注意顺序,比如applealc的依赖是lilu,那么lilu必须填在第一个;SMCProcessor.kext依赖于Virtualsmc.kext。那virtualsmc必须放在SMCProcessor.kext之前。

这里默认情况下很多我们需要的补丁已经被加载里面了,但是enabled那块我们要手动改成yes去开启它,把一些不用的删了:

 

Item 0
    BundlePath         String     Lilu.kext            //kext的名字
    Comment            String                          //你自己填一个注释,可以不填
    Enabled            Boolean      YES                //启动此补丁,反之则为关闭
    ExecutablePath     String     Contents/MacOS/Lilu  //通过右键kext显示包内容查找lilu运行文件的真正路径
    MaxKernel          String                          //此补丁支持的最大系统版本,填19为10.15,18位10.14;我们一般情况下留空
    MinKernel          String                          //此补丁支持的最小系统版本
    PlistPath          String     Contents/Info.plist  //kext的plist位置,可以右键kext显示包内容查找正确路径

............
............

Item 4
    BundlePath         String     WhateverGreen.kext          
    Comment            String                         
    Enabled            Boolean      YES               
    ExecutablePath     String     Contents/MacOS/WhateverGreen
    MaxKernel          String                          
    MinKernel          String                          
    PlistPath          String     Contents/Info.plist  

............
............
Item 7
    BundlePath         String     USBPorts.kext        
    Comment            String                         
    Enabled            Boolean      YES               
    ExecutablePath     String                         //一些没有执行文件的kext不需要填写
    MaxKernel          String                          
    MinKernel          String                          
    PlistPath          String     Contents/Info.plist  

............
............
    

 

2.4.2 Config—–Kernel—–Block

禁用一些kexts,这里好像没啥用,不用理会。

 

2.4.3 Config—–Kernel—–Emulate

此选项帮助Ivy Bridge 和一些不受支持的CPU加载电源管理的,我们这里不做此方面讨论(我没这么老的CPU)。所有选项按默认即可。

 

2.4.4 Config—–Kernel—–Force

在一些老的系统中,一些内核是不被加载的,需要通过此选项来强制加载,这里我们不做描述了。

 

2.4.5 Config—–Kernel—–Patch

这里是为内核打补丁用的,我会在进阶教程中详细写一下这一块。尤其是rtc相关的内容,我都会写进第三章的进阶教程。

如果你碰到华硕开机卡F1的,请看章节

如果你碰到macos 11安装过程中卡pci的,请看章节

 

2.4.6 Config—–Kernel—–Quirks

这里是内核相关的快捷选项,比较重要。

AppleCpuPmCfgLock:四代之前的CPU,如果未解锁CFG(即MSR0xE2)请选择YES。如何解CFG锁我在这篇文章中有详细教程。如果你不会解这个锁,你就选择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就行了。

 

DisableLinkeditJettison:提升lilu等插件在MACOS 11系统的表现,用来替代keepsyms=1。如果是big sur系统,请选择yes。

 

DisableRtcChecksum:越过两条rtc检查(0x58及0x59)。一般情况下,卡RTC我们会更多地使用RTCMemoryFixup.kext来防止它。我们一般情况下选择NO。

 

ExtendBTFeatureFlags:代替BT4LEContinuityFixup.kext来实现continuity,一般我们选择no。

 

ExternalDiskIcons: 修复苹果系统把内部硬盘识别为外置硬盘时(黄色图标的硬盘)开启,我们一般选择NO。

 

IncreasePciBarSize:解决卡PCI configuration,如果碰到请选择yes, 我们选择no。注意,一般卡pci configuration都是因为自己错误的设置和硬件问题。

 

LapicKernelPanic: 适用于HP笔记本的内核奔溃选项,我们选择NO。

 

LegacyCommpage:老平台主板中使用ssse3需要开启来使用macos10.4-10.6。我们选择NO。

 

PanicNoKextDump: 防止kext出错打报告而让我们看不到真正的panic原因,这个随便选,我选择NO。

 

PowerTimeoutKernelPanic: 10.15系统中存在一些设备自身的电源管理无法让系统进入睡眠而超时,导致内核奔溃,如果有这个问题请选择YES。

 

ThirdPartyDrives: 开启Sata类SSD的trim功能,我没有sata类的ssd,我选择NO。自行根据情况选择。

 

XhciPortLimit: 解除15个端口限制,我选择YES。

 

2.4.7 Config—–Kernel—–Scheme

FuzzyMatch:此选项是给10.6以及更早的系统使用,我们不做探讨,直接填写No。

KernelArch:此选项是给10。7以及更早的系统使用,不做探讨,直接填写默认的x86_64。

KernelCache:选择更加合适的内核缓存方式以提升启动速度,一般我们填写默认的Auto(注意大小写)。像10.15-11的新系统,我们也可以直接填写Prelinked(注意大小写)。

2.5 Config—-Misc

这里都是一些开机引导类的设置。

 

2.5.1 Config—–Misc—–BlessOverride

这个选项是帮助我们寻找一些不寻常的EFI位置的,除非你有这种情况,不然我们不需要填写任何东西。

 

2.5.2 Config—–Misc—–Boot

 

ConsoleAttributes: 设置开机选择界面的颜色,默认直接填0。使用方法为填入字体颜色和背景颜色的值的16进制之和例如蓝色字(0x01)+红色背景(0x40)=0x41。色彩选择如下:

  • 0x00 — 黑

  • 0x01 — 蓝

  • 0x02 — 绿

  • 0x03 — 青

  • 0x04 — 红

  • 0x05 — 艳红

  • 0x06 — 棕

  • 0x07 — 淡灰

  • 0x08 — 深灰

  • 0x09 — 淡蓝

  • 0x0A — 淡绿

  • 0x0B — 淡青

  • 0x0C — 淡红

  • 0x0D — 淡艳红

  • 0x0E — 黄

  • 0x0F — 白

  • 0x00 — 背景 黑

  • 0x10 — 背景 蓝

  • 0x20 — 背景 绿

  • 0x30 — 背景 青

  • 0x40 — 背景 红

  • 0x50 — 背景 艳红

  • 0x60 — 背景 棕

  • 0x70 — 背景 淡灰

 

HibernateMode: 检测休眠模式。我们的机器一般都不支持休眠,选none。如果你的主板支持原生nvram、并想测试休眠,可以考虑填auto。

 

HideAuxiliary:在开机选择画面隐藏一些辅助项目,比如recovery盘,clean NVRAM等。一般我们选择NO。

 

PickerAttributes:当你使用OC主题时,你可以通过计算以下数值之和来配合使用OC主题,OC主题至今还在测试阶段。默认填0,你可能使用到的值如下:

  • 0x0004简化主题图标下的文字
  • 0x0008使用老式的图标

 

PickerAudioAssist:是否开启开机朗读文字功能,一般选择NO,如果你要开启,请同时阅读章节2.8.5和2.8.7的相关音频设置。

 

PickerMode: 是否使用OC的开机启动盘选项,如果我们填Builtin就是不使用任何主题;如果我们填External就会调用第三方主题。

*注:目前第三方主题只有https://github.com/acidanthera/OcBinaryData下载,请将下载好的文件如图放置,同时,你需要将OpenCanopy.efi放入Drivers文件夹下并加载:

 

PollAppleHotKeys:是否开启一些热键功能,包括Cmd+K;Cmd+S。我选的是yes。如果你开机发现键盘无法选择,也选NO,并且删除OC/Drivers下的AppleUsbKbDxe.efi 。

 

 

ShowPicker: 是否显示开机启动盘选项,比如MAC,WINDOWS那些。我们选择YES。

 

TakeoffDelay:开机热键延时,如果你按热键老是老不急按,你可以设置5000到10000之间的值让你有更多时间按热键。

 

Timeout: 倒计时进入指定硬盘,这里我们按需求填写,我填写5,代表5秒钟进入指定硬盘。

 

 

2.5.3 Config—–Misc—–Debug

是否开启debug模式,这里我们暂时不需要,全部忽略过。

 

 

2.5.4 Config—–Misc—–Entries

这里是帮助我们添加一些你希望的引导路径,这个会在之后的进阶教程中讲,这里暂时略过不填写。

 

2.5.5 Config—–Misc—–Security

AllowNvramReset: 是否在开机引导项中加入重置nvram缓存功能的选项,我们选YES。

 

AllowSetDefault:选择yes后即可在开机选择系统页面中通过Ctrl+enter键设置默认启动盘。

 

ApECID:一般按默认的0填写,如果要开启安全启动的身份认证,请随便填写一串数字,比如手机号。

 

AuthRestart:filevault相关项,选择NO。

 

BootProtect:请填写Bootstrap。此选项能保证OPENCORE.EFI的永久性而免遭到其他操作系统对开机顺位的破坏。在填写此项后,你同样需要保证RequestBootVarRouting是开启的。

 

DmgLoading:如果你没有开启安全启动,请填写Any(注意大小写)。如果使用安全启动,请填写Signed(注意大小写)

 

EnablePassword:选择No,此选项正在开发。

 

ExposeSensitiveData: 因为要使用到模拟nvram,这个数值我们必须填3。如果我们是原生nvram,填写2。

 

HaltLevel: 按默认设置即可。

 

PasswordHash:按默认填写,如果开启了EnablePassword,则填写密码的hash值

 

PasswordSalt:按默认填写,如果开启了EnablePassword,则填写密码的salt值

 

ScanPolicy: 这里暂时填0。我们也许会碰到开机的时候默认进入的系统永远是WINDOWS,并无法更改,之后我们在进阶教程中讲述,如何让MAC盘排在第一个,让WIN排在后面。

 

SecureBootModel:是否开启安全启动模式,一般我们填写Disabled(注意大小写)来关闭此功能。

 

Vault: 黑苹果的vault加密方式,我们不需要这个功能,填Optional。

 

 

 

2.5.6 Config—–Misc—–Tools

这里是加入一些开机时候的工具的。其实我觉得只有重置nvram的工具是有用的,但之前的设置里面我们已经开启了,这个选项就没啥用了,不用理会。

 

 

2.6 Config—-NVRAM

这是关于nvram的选项卡。

 

2.6.1 Config—–NVRAM—–Add

4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14

                 UIScale                  Data            <02>      //这里填写01为普通的UI显示模式,02为开启HIDPI的UI显示模式,我选择02
                 DefaultBackgroundColor   Data          <00000000>  //默认开机背景色为黑色

7C436110-AB2A-4BBB-A880-FE41995C9F82
                 boot-args                String        Slide=1 darkwake=0 -v vsmcgen=1 //slide=1表示从第一组内存开始连续注入;darkwake=0代表一键唤醒机器并偏好设置中节能选项的小憩功能。如果你要用小憩功能请填8; -v是跑代码,在没装好稳定的黑果前我建议加上,方便定位错误,弄完后再删除-v;vsmcgen=1为macos 11专用,以便于暴露smc部件。
                 bootercfg                String       log=0 debug=0 level=0  //这条自己添加进去,是关闭开机时的代码的。
                 csr-active-config        Data          <e7030000>            //关闭SIP保护
                 nvda_drv                 Data          <31>                  //对10.13系统之前的N卡的相关设置,我们不做讨论。
                 prev-lang:kbd            Data          <7a68 2d48 616e 733a 3235 32>  //语言设置相关,记得改成这个,这个是中文

7C436110-AB2A-4BBB-A880-FE41995C9F82
                 填写相关RTC屏蔽选项,具体参考AppleRtcRam

 

 

2.6.2 Config—–NVRAM—–Delete

禁用一些nvram变量,我们这里按默认设置不必理会。

 

2.6.3 Config—–NVRAM—–LegacyEnable

如果你的主板不支持原生NVRAM,请一定要选择YES! 如果你的主板支持原生nvram的,填no。

 

2.6.4 Config—–NVRAM—–LegacySchema

这里是nvram的变量设置,大部分默认已经填好,我们只需添加两个变量即可。

打开7C436110-AB2A-4BBB-A880-FE41995C9F82这一栏,添加两个item如下:

item 11             String       efi-boot-device
item 12             String       efi-boot-device-data

 

2.6.5 LegacyOverwrite

对模拟nvram用户来说,将nvram.plist写入硬件,我认为不管是原生nvram还是模拟nvram,都选择no。

2.6.6 WriteFlash

如果你的主板bios因为nvram导入垃圾内容,请关闭它,一般都是选择no。

 

2.7 Config—-PlatformInfo

这里我们填合适的机型。对于最近一代的主板来说,一般的原则,只有核显的机器我们选Macmini8,1;只有独显的机器我们选择iMac Pro 1,1;有核显和独显的我们选择iMac 19,1。

 

因为这部分内容太过复杂,其实很多内容都不必要填写,我们直接删除Datahub,PlatfromNVRAM,SMBIOS这三项,无需填写。

 

2.7.1 Config—–PlatformInfo—–Automatic

这里意思是是否自动填写系统信息。因为后面的很多选项都好繁琐,我们只要认真填几个选项就行了,这里我选YES,不重要的信息让它自动填。

 

2.7.2 Config—–PlatformInfo—–Generic

这里是我们需要填写的三码部分。获得三码,我们可以运用一下Clover的Clover Configurator帮我们生成一下相关的数据:

  • 打开Clover configurator,并到SMBIOS选项卡中,选择合适的机型,这里我们以iMac19,1 为例:

 

  • 我们换到Rt variables里,点击ROM下的生成,获得一个ROM编号,这样我们就获得了所有需要的信息了。

 

  • 我们整理一下刚才获得的信息并依次填入Generic下面即可。

 

  • 值得注意的是,SystemUUID这一项最好留空,让OC自动生成,它会影响你的WINDOWS激活状态。

 

  • AdviseWindows:如果你的windows的efi不在showpicker的第一个,必须选择yes,这里一般选择yes。

 

  • SystemMemoryStatus:关于本机内不显示内存选项需要开启,这里需要特定的机型才行,一般选择Auto。

 

  • SpoofVendor:是否把主板名称更改为acdt,一般我们选择yes。

 

  • ProcessorType:为一些es qs或者amd的cpu在关于本机中显示核心数。

2.7.3 Config—–PlatformInfo—–剩余部分

UpdateDataHub:选择YES

 

UpdateNVRAM:选择YES

 

UpdateSMBIOS:选择YES

 

UpdateSMBIOSMode:选择Create

 

2.8 Config—-UEFI

这里我们需要填写UEFI相关的设置。

 

2.8.1 Config—–UEFI—-ConnectDrivers

是否加载补丁,我们选择YES

 

2.8.2 Config—–UEFI—-Drivers

把我们之前放在OC/EFI/Drivers下面的驱动一一填上,这里我们也注意一下填入的顺序以及文件名的大小写

Drivers
     item0          String       
     ........................    MemoryAllocation.efi
     ........................    OpenRuntime.efi
     ........................    HFSPlus.efi
     ........................    OpenUsbKbDxe.efi
     ........................    OpenCanopy.efi

 

2.8.3 Config—–UEFI—-Input

此选项是原生apple开机热键的选项,需要配合我们之前设置的PollAppleHotKeys=yes以及AppleUsbKbDxe.efi补丁一起用。下面的设置完全按照默认情况就行了。因为我的键盘是苹果原生键盘,不支持这个功能,所以我直接PollAppleHotKeys里填了NO,这里也不会生效的。

有一点需要说,如果你是华硕的z87或者z97,你需要打开PointerSupport这个选项。

 

2.8.4 Config—–UEFI—-Output

 

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

 

UgaPassThrough: 通过uga来代替那些无法使用gop的主板,一般带uefi的主板以及显卡请选择no。

 

2.8.5 Config—–UEFI—-ProtocolOverrides

AppleAudio: 如果你想要开启如同白苹果一样的开机DUANG的声音等,请开启它,并且还需要配合UEFI—-Audio的正确设置。

 

AppleBootPolicy: 虚拟机的mac需要用的,我们选择NO。

 

AppleDebugLog:重新安装苹果错误日志界面,一般选择NO。

 

AppleEvent: 虚拟机并具有vault的mac需要用的,我们选择NO。

 

AppleFramebufferInfo: 为虚拟机使用,不是虚拟机选择no。

 

AppleImageConversion: 重建apple图标,选择NO。

 

AppleImg4Verification:当开启安全启动时必须开启它,我们不需要开启,所以选择NO。

 

AppleKeyMap: 重建苹果功能键,选择NO。

 

AppleRtcRam:重装applertc协议。一般选择NO,如果你要屏蔽相关选项,请在2.6.1章节中添加相关屏蔽项目。项目可以通过RtcRW提取,或者阅读此文章来指定你想屏蔽的内容。

 

AppleSecureBoot:重装苹果安全启动协议,不开启安全启动的情况下,请选择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。

 

 

2.8.6 Config—–UEFI—-Quirks

 

DeduplicateBootOrder:当RequestBootVarRouting选项为开启时,一些其他的操作系统(e.g.windows)可能在某些主板(e.g.ASUS)中会找不到自己的引导而重新创建,最终导致黑果在没有清理NVRAM的情况下是无法进入系统的,请选择YES。

 

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。

 

2.8.7 Config—–UEFI—-Audio

AudioCodec:填写音频声卡in节点,一般为数字10,20,33之类的。可以用此软件提取。

PinConfigurator2.2.2汉化版

 

AudioDevice: 填写你声卡的路径。这里我们填写章节2.3.1中寻找到的声卡路径。这里我填了PciRoot(0x0)/Pci(0x1f,0x3),请按你自己的实际情况填写。

 

AudioOut:音频声卡out节点,一般为数字10,20,33之类的。

 

AudioSupport:是否开启黑苹果的开机提示音支持。如果你选择YES,后面的内容你必须认真看,不支持DP类的数字音频

 

MinimumVolume:声音音量。范围在0-100之间,默认是20。

 

PlayChime:如果要使用开机duang声音,请选择YES。

 

VolumeAmplifier:按照默认设置。

 

注意,如果你选择开启音频提示音,你需要下载此压缩包,解压后放到OC/目录下,如图。

 

2.8.8 Config—–UEFI—-APFS

EnableJumpstart: 从APFS容器中加载内置APFS驱动,建议开启YES。此选项仍然依据你的Scanpolicy来做出决定,请确保在Scanpolicy中放开APFS格式。

 

GlobalConnect:一些主板需要选择yes才能完全加载APFS,比如HP笔记本。一般我们选择NO。

 

HideVerbose:是否隐藏啰嗦模式,一般我们需要看日志的时候才开启,所以我们选择隐藏,选择YES。

 

JumpstartHotPlug:是否加载APFS格式的热插设备,一般我们选择YES。

 

MinDate:加载最低发行的APFS格式。一些旧的apfs可能会危害电脑,我们填0。如果你想加载旧的发行日期的APFS格式硬盘,请填-1。

 

MinVersion:加载最低版本的APFS格式。填0代表从HIGH SIERRA开始加载。填-1代表所有版本,建议填0。

 

2.8.9 Config—–UEFI—-ReservedMemory Properties

此项为保留内存所用。一些硬件会把硬件EFI写进内存过程中占据必要的UEFI运行空间,所以我们可以通过此项来预留内存来保证UEFI的运行。填写方式可以参考小兵的文章。来寻找指定内存的起始位置,以4K为一个节点。

 

一般情况下,此项我们并不需要理会。

2.9 小节

到这里,我们应该可以通过OC正确引导MAC OS了,但是还有很多问题需要去修补,包括模拟nvram,寻找EC控制器,原生的电源管理等。我会在下一个章节写这些东西。

 

 

3.0 OpenCore 完善

3.1 模拟NVRAM

对OC而言,NVRAM是非常核心的一环,不管是原生还是模拟的。如果你是原生nvram的主板,请不必理会这章节。这张的主要内容为生成模拟的NVRAM.plist。

 

  • 首先打开我们之前下载好的opencore,进入目录下的Utilities/LogoutHook,并将LogoutHook放入一个安全的位置。这里我推荐将他放到文档目录下。

 

  • 右键finder,前往目录,填/Users, 再点进入以你名字命名的文件夹,既能看到Documents(文档)目录了,把我们的LogoutHook放在里面。

 

  • 打开Terminal (终端),输入一下命令:
sudo defaults write com.apple.loginwindow LogoutHook /Users/你的用户名/Documents/LogoutHook/LogoutHook.command
比如:
sudo defaults write com.apple.loginwindow LogoutHook /Users/xjn/Documents/LogoutHook/LogoutHook.command

 

  • 终端会提示要求你输入密码(密码打进去不会显示)

 

  • 重启后,你会在/EFI/下看到nvram.plist,代表已经成功模拟了。

 

  • 值得一提,nvram.plist在开机的加载需要之前我们要求放入的EmuVariableRuntimeDxe.efi来读取,请确保此补丁存在。

 

3.2 建立自己的开机选择系统目录

  • 这个教程主要针对的是非原生nvram主板的用户,如果你是原生nvram的用户,直接在偏好设置—启动磁盘中选定你希望设置为默认启动的磁盘即可,不必往下看浪费时间!
  • 此步骤可能只适合oc纯净安装的系统,如果你之前使用过clover或者oc mod版本,请参照《精解opencore》中模拟nvram的方法。

非原生nvram用户必须完成以下几点:

  • 通过3.1的教程建立nvram.plist.
  • 确保OpenCore的版本为2019年11月20日之后的。更新OpenCore替换BOOT/BOOTx64.efi以及OC/OpenCore.efi即可。
  • 确保AppleSupportPkg版本为2.1.4以及之后,可以在我这里提供编译好的。
  • 确保config.plist下/Misc/Security/ExposeSensitiveData=3Booter/Quirks/DisableVariableWrite=True/YES ; NVRAM/LegacyEnable=True/YES 
  • 确保文件夹OC/Drivers/下没有VariableRuntimeDxe.efi

 

如果你是华硕的非原生nvram主板,你还需要做(此文件由群友@哞 提供):

  • 下载LoginHook.command,把它与LogoutHook.command放在一起,并执行:sudo defaults write com.apple.loginwindow LoginHook /写上你的路径/LoginHook.command

 

在保证以上要素后,打开系统偏好设置---启动磁盘,选择你想要设置为默认启动的启动磁盘即可。

 

 

3.2.1以及3.2.2也是排列启动盘开机进入顺序的,比较麻烦,不推荐。

 

3.2.1 第一部分

我们首先要对Config—Misc—Security—scanpolicy这个值进行修改,默认的是0,代表着扫描所有硬盘,而我们现在只让它扫我们的苹果系统硬盘。

感谢@xlivans提供的OC扫描策略:

## OC-引导扫描策略

设置位置:`Misc\Security\ScanPolicy`

– **定义:**

  (01)0x00000001 — 限定为文件系统,由以下`允许扫描文件系统子项`开启

  (02)0x00000002 — 限定为设备类型,由以下`允许扫描设备类型子项`开启

  `允许扫描文件系统子项`

  (03)0x00000100 — 允许扫描APFS文件系统

  (04)0x00000200 — 允许扫描HFS文件系统

  (05)0x00000400 — 允许扫描EFI系统分区文件系统

  `允许扫描设备类型子项`

  (06)0x00010000 — 允许扫描SATA设备

  (07)0x00020000 — 允许扫描SAS和Mac NVMe设备

  (08)0x00040000 — 允许扫描SCSI设备

  (09)0x00080000 — 允许扫描NVMe设备

  (10)0x00100000 — 允许扫描CD / DVD设备

  (11)0x00200000 — 允许扫描USB设备

  (12)0x00400000 — 允许扫描FireWire设备

  (13)0x00800000 — 允许扫描读卡器设备

  `扫描策略数值`=(01)+(02)+1个或数个`允许扫描文件系统子项`+1个或数个`允许扫描设备类型子项`

  例如:希望扫描对象是APFS文件系统的USB设备,`扫描策略数值`=(01)+(02)+(03)+(11),经16进制加法计算得出,`扫描策略数值`=`0x200103`

  `注意`,使用时需将16进制转换为10进制。示例最终`扫描策略数值`=`2097411`

几种扫描策略

  `F0103` —官方推荐值:(01)+(02)+(03)+(06)+(07)+(08)+(09)

  

    最终`扫描策略数值` = `983299`

  

  `0`—允许扫描所有已知文件系统+允许扫描所有已知设备类型。

  

  `2F0303` —官方推荐值+允许扫描HFS文件系统+允许扫描USB设备

  

    最终`扫描策略数值` = `3080963`

                        

我们这里让OC只扫描MAC盘。根据说明,(1)+(2)是必须选的;因为我的MAC是APFS,所以系统子项类我选(3);我的MAC是安装在NVME上的,所以我在设备类型上选择(09),如果你是安装在sata盘上的,你应该选(6)。

这样我们的公式就是:

(1)+(2)+(3)+(9)= 0x00000001+0x00000002+0x00000100+0x00080000

 

拿起苹果自带的计算器,按住coomand+3切换到编程型计算器,并转换到16进制模式:

 

输入:

1+2+100+80000=80103

得到数值后,我们再按一下转换10进制的按键,得出524547这个数值。

我们把524547填到scanpolicy中,重启,你就会看到第一个选项就是你的MAC盘了。但如果你还安装了WINDOWS什么的,选项中却没有了,别急,我们现在要把WIN的引导添加到mac的后面去。注:似乎oc还不能引导ubuntu,请用Bios快捷键进入,未证实。

 

3.2.2 第二部分

现在我们要在开机画面中,将其他的一些系统排在mac后面。此项能需要你下载debug版本的Opencore,请在文章开始部分提到的Opencore程序下载界面进行下载,并备份好你目前的EFI

 

首先我们需要把下载好的Opencore-Debug版本里的efi/boot/BOOTx64.efi 以及efi/OC/OpenCore.efi两个文件替换到你正在使用中的EFI里去。用XCODE修改你正在使用的EFI/OC/Config.plist,修改内容如下:

Misc
     Debug
          DisableWatchDog        Boolean     YES
          Target                 Number      65


     Security
          ScanPolicy             Number      0             //这里我们要先改为0来寻找windows的地址,之后找到后改回之前算出来的即可

 

 

接着,我们需要寻找你其他系统的UUID,我们打开终端,输入:

diskutil list

 

我们找到你需要的盘的盘名,比如我的windows在disk0这个位置,而引导WIN的EFI文件夹的盘位是disk0s1。注意,这里我们不讨论Gpt格式的WIN引导位置该在哪里,如果你实在不清楚,可以把disk0s1以及dsik0s2都记录下来。

 

接着输入:

diskutil info disk0s1

在输出内容里,我们需要的是Disk / Partition UUID,我的是FF555974-AB3F-40B7-8530-AE6462E197CE,把它记下来。

 

现在我们通过oc的开机选项直接重启到windows,我们打开diskgenius,并且到我们mac的EFI盘符下,我们看到有一个日志报告opencore-xxxxx-xxxxx生成,为了好记,我们右键把它改名叫111.txt。

重启回到mac,加载efi分区,打开刚才的111.txt,我们搜索刚才记录下来的FF555974-AB3F-40B7-8530-AE6462E197CE,我们搜到如下内容,而标注的即是WINDOWS的引导路径:

 

把之前我们备份好的EFI,全部替换回去。把disablewatchdog,target,scanpolicy都改回原来的。这样我们的EFI又回到正式版本了,而不是DEBUG版本了。

打开config,我们把win的引导路径添加到misc—-entries,并在此下面添加一个item,输入如图内容:

 

保存即可,重启后,你会看到windows10放在了mac的下面。

tips: 你可以在config—-misc—boot—showpicker选择no,就不会看到选择界面了,而当你需要时,只需要在开机时候按住option或者esc就可以唤出选择界面了,非常白果的体验哦。

 

 

3.3 提取DSDT

提取DSDT是我们之后完善系统的必需品,没有他我们无法找到相关的硬件位置,我们可以通过Clover直接提取,这里我们需要一个空的U盘。我的教程是非常偏向小白的,所以这里提取我也会用到windows,以及Diskgenius这个软件,做最简单的示范。

 

  • 插入U盘,我们打开diskgenius,选中我们的U盘,并选择顶部菜单栏的快速分区:

 

  • 严格按照我的图示选择,不要创建esp msr分区,并且分区格式为fat32。

 

  • 格式化完成后,放入我从黑果小兵镜像包提取出来的EFI(点击下载)放进去。这是一个clover引导,但并不能引导你的系统,只能提取DSDT。

 

  • 插上U盘,重启,通过U盘引导,看到Clover界面,我们按F4,这样原始的DSDT文件就收集好了。

 

  • 重新通过OC引导进入系统,我们打开U盘,EFI/Clover/ACPI/Orgin下,有我们的原始ACPI内容,我们只需要DSDT.aml这个就行了,保存到安全的地方。

 

 

3.4 加载原生电源管理

在提取dsdt后,我们可以得到相关里硬件名字及目录,这样我们就可以加载原生电源管理。这里非常感谢宪武大大在ssdt这块的付出成果!我们先下载一下宪武大大的OC-SSDT包

以下的内容,你需要文章开始阶段提供下载的MaciASL以及刚才提取的DSDT.aml

 

  • 用MaciASL打开DSDT.aml
  • 搜索你cpu的名字。一般情况下,CPU的名字可能是: PR.CPU0,PR.P000,PR.PR00,SB.CPU0,SB.P000,SB.PR00, SCK0.C000, SCK0.CPU0。请依次搜索直到找到自己的CPU名字,比如我的就是SB.PR00

 

打开宪武大大的OC-SSDT包,到x86目录下,我们看到宪武大大已经把大部分不同名字的CPU的dsl文件都做好了。我的cpu名字叫SB.PR00,我直接打开SSDT-PLUG-_SB.PR00.dsl这个文件,左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字随便写吧,我就叫plug-xcpm.aml,记住后缀为aml。

将plug-xcpm.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件:

 

<dict>
<key>Comment</key>
<string>XCPM</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>plug-xcpm.aml</string>
</dict>

 

加载后,重启,并清理一次nvram,我们看到偏好设置–节能中,原生电源管理已经被加载了。

 

3.5 加载节能五项

节能五项是白果台式机中,偏好设置—节能中的选项。在加载原生电源管理后,我们一般有4项节能出现,而第五项“断电后重启”这项还需要加载PPMC以及LPCB下的PMCR才能出现。虽然说这项功能没啥鸟用,但对于强迫者而言,少一个一定很难受吧。如果你是笔记本,不需要看这章,白果笔记本本身就没有。

直接下载SSDT-PM.aml载入即可。这个里面的内容我不想解释了。

SSDT-PM.aml

 

3.6 Mac OS 10.15下解锁S/L/E目录

在10.15系统中,尽管你已经通过config解锁了SIP,但系统目录仍然需要命令去开启。这里群友bugprogrammer给出了一个一劳永逸的解决方案,请到他的博客中查看方法:解锁macOS10.15的系统分区

 

3.7 关于EC控制器

EC控制器是电脑自带的一个叫embedded controller的部件。在10.15的系统环境中,笔记本电脑必须重命名原来的EC,而一些台式机主板则需要禁用。下面我会分开来讲解如何禁用EC、如何加载USB电源管理支持。

 

3.7.1 禁用EC控制器

之前我在2.1.3章节中提供了重命名这种方式去讲EC0更名为EC,其实这种方法是只适合笔记本的,台式机最好还是禁用EC。

我这里会把笔记本重命名EC以及台式机禁用EC写在一起。

 

打开之前提取出来的DSDT.aml,搜索PNP0C09,这里我搜到我的ec真实名字叫做H_EC,你的可能叫EC0或者别的什么奇怪的名字。

这里我可以看到我的H_EC已经是屏蔽掉的,怎么判定,你看下面有一个Return (Zero),意味着这个部件是不生效的,即禁用。这样的情况我们不需要做任何SSDT去禁用这个真的EC。

那么什么样的情况是需要我们去屏蔽的呢?我发现基本上华硕的台式机主板都会启用这个EC控制器,这里我截图了一张华硕主板的EC部件图,我们同样在DSDT中搜索PNP0C09,我们看到这种情况下,这个叫EC0的EC控制器是开启的,注意他没有return (Zero)这个语句,我们需要通过SSDT去屏蔽它。

 

这里我提供了一个禁用EC0的补丁,请直接下载,打开后左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字随便写吧,我就叫ssdt-no-EC.aml,记住后缀为aml。记得将ssdt-no-EC.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件。

SSDT-no-EC.dsl

如果你的EC名字叫H_EC或者别的什么的,你打开这个.dsl文件,改一下图中红线中的字即可。

 

 

对笔记本而言,我们不能禁用EC,因为禁用EC后会直接导致笔记本没有电池。那么我们怎么去重命名EC呢?按照上面提到的方法,找到你EC的真实名字,在章节2.1.3中我提供了假如你的笔记本的EC叫做EC0时候的重命名办法,那如果你的EC叫别的乱七八糟的名字呢?

我们先找到你的EC名字,比如你的EC叫做H_EC,我们打开在线的HEX转换器,输入H_EC,并点击下面的16进制转换,就可以看到转换出来的值是485F4543,把这个值替换到find这个选项卡中就行了。你也会注意到,EC的hex-16进制为45435F5F,刚好是Replace的值。这就是一个非常简单实用的OC重命名。但切记!OC万不得已不要用重命名!笔记本的EC是实在没有办法。

Comment: H_EC to EC 
Count:0 
Enabled:YES 
Find:<485F4543> 
Limit:0 Mask:<> 
OemTable:<> 
Replace:<45435F5F> 
ReplaceMask:<> 
Skip:0 
TableLength:0 
TableSignature:<>

 

 

3.7.2  USBX供电

开启apple自家的快速充电,这个需要设备支持此功能。你可以比较下面两张图,显然第二张是正确的。

从10.15开始,USB电源的控制被直接分配到了IOResources上面:

我们只需要一个简单的KEXT补丁来加载它

USBPower.kext

请你确定你已经用hackintool定制了你的usb口,并使用了usbports.kext(或者你直接实用USBInjectAll也行)!而不是ssdt类的定制,ssdt类的端口定制并没有对win进行判断请不要用!如何定制自己的usbports.kext,请看黑果小兵的视频教程:https://www.bilibili.com/video/av38860673

下载这个KEXT补丁,你可能需要对补丁进行修改才能用。右键kext显示包内容,一直点进去,直到打开info.plist。我们展开IOKitPersonalities_x86_64,可以看到机型是iMac19,1,请把它改成你正在使用的机型,把补丁放入OC/kexts下,并在config.plist中加载这个补丁,重启即可。

 

3.8 RTC相关问题

在之前的教程里我提供了一个rtc fix的重命名补丁(见2.1.3章节)。对OC而言,重命名就是比较忌讳的,而且我也非常讨厌重命名,所以这个不能忍啊!

因此,我们现在需要通过对RTC进行修复,来抛弃那个RTC重命名补丁。

 

在一些主板中,自带了AWAC部件,这个部件对于RTC来说是互相反锁的,我们必须禁用AWAC才能启动RTC,从而去掉之前使用的重命名补丁。如何去确定你的ACPI中有AWAC,打开IO Registry Explorer,我们查找AppleACPIEventController栏目下有没有AWAC这个部件,下面截图中是有AWAC这种情况:

 

这里我们直接使用宪武大大提供的ssdt,放入acpi目录下并在config中载入即可。(这个包是宪武大大在群里面发的最新版,他的github还未更新此文件,目前是10月28日)。加载此补丁后,你再打开IO Registry Explorer,你会发现awac已经没有了,并且多出了一个rtc部件,表示此补丁生效,并且你也可以删除之前在config里面添加的rtc fix补丁。

SSDT-RTC_Y-AWAC_N.aml

 

3.8.1 华硕X99及X299的RTC问题

首先华硕的主板尽可能不要使用3xxx系列的bios版本,因为更新比较大且无意义,我是在没时间去整理新版本的acpi。

打开你的dsdt,搜索PNP0B00,如果发现内容如下,你需要修改你的rtc。

Device (RTC)
{
    Name (_HID, EisaId ("PNP0B00"))  // _HID: Hardware ID
    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
    {
        IO (Decode16,
            0x0070,             // Range Minimum
            0x0070,             // Range Maximum
            0x01,               // Alignment
            0x02,               // Length
            )
        IO (Decode16,
            0x0074,             // Range Minimum
            0x0074,             // Range Maximum
            0x01,               // Alignment
            0x04,               // Length
            )
        IRQNoFlags ()
            {8}
    })
}

左下角位置在DSDT>_SB>PC00>LPC0

 

一般来说,rtc的资源位置是从0x0070-0x0077。上面的代码中我们可以看到它把rtc资源分割成了两个部分:从0x0070到0x0072之前,以及0x0074到0x0078之前。这意味着0x0072以及0x0073被遗漏了。因此我们需要填补以保证macos 11的运行。我们使用以下补丁(补丁来自OC-Little)

DefinitionBlock ("", "SSDT", 2, "ACDT", "RTC0", 0)
{
    External (_SB.PCI0.LPCB, DeviceObj)

    Scope (_SB.PCI0.LPCB)
    {
        Device (RTC0)
        {
            Name (_HID, EisaId ("PNP0B00"))
            Name (_CRS, ResourceTemplate ()
            {
                IO (Decode16,
                    0x0070, 
                    0x0070, 
                    0x01, 
                    0x08,
                    )
                IRQNoFlags ()
                    {8}
            })
            Method (_STA, 0, NotSerialized)
            {
                If (_OSI ("Darwin"))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0)
                }
            }
        }
    }
}

 

我们根据自己的dsdt来修改,比如我的rtc位置在DSDT>_SB>PC00>LPC0,那么我就把对应的PCI0改为PC00;把LPCB改为LPC0。

已经修改好的在这里下载,具体位置请根据自己主板dsdt对应填入,并放入OC/ACPI下,并在config.plist中加载此ssdt。

 

SSDT-RTC0.aml

 

3.8.2 华硕等一些主板开机卡F1的问题

这篇文章的内容有点零散,我把这部分的内容写到了3.11.1章节。

 

3.9 FCPX加速

FCPX在黑果下主要有两个问题:1.核显无法拉到最满的1.2GHZ,独显尤其是vega芯片的显卡不满载工作,看戏。这里我们主要针对具有核显和独显的机器进行优化(只有核显或者只有独显的不用试了),让核显跑满速度,提升整个FCPX的效率。至于只有独显的机器,我暂时没有找到比较好的方案,这也是我为什么不推荐买带f的cpu,毕竟黑果没有t2芯片,我们需要核显来支撑一些东西。提示:z170,z270,z370因BIOS缺陷可能无法使用。

这本来是一个比较繁琐的教程,多亏了群友@Bugprogrammer将whatevergreen简化了:博主魔改版Whatevergreen解析,还你正常核显频率(1.2g)

这里我已经帮大家编译好了,把原版的whatevergreen替换了就行了。此WhateverGreen.kext保留了AGDP黑屏补丁、开机紫条补丁以及改名补丁,非常精简。

现在看核显(GFX)整个工作效率都能维持在1.2GHZ上,(我这里对CPU做了优化,可能实际没我这么夸张)如图:

 

此方法比较过时了,拉高核心显卡的方法,请使用原版Whatevergreen,并在boot-args中加入igfxfw=2。

 

什么?效率还是不够高?大哥是开影视工作室的吗!?好吧,请看“CPU的变频优化”这章,记得CPU要有水冷哦!

 

3.10 睡眠即醒的相关问题

睡眠即醒很大程度上跟USB的定制相关,一般一个好的USB定制就能解决睡眠即醒的问题。当然系统的更新,MacOS的也在做不断的调整,比如蓝牙不能在HUB下进行内建,比如雷电卡必须将4个端口全部内建才行,等等。甚至有些时候我们都不知道为什么黑果会睡不着,那有没有一个办法让黑果强制睡眠呢?答案是有的。经过我的摸索,有几种方法能达到强制睡眠的效果,只是方法不同而已,但主要围绕的还是0d/6d的数值来做一些工作。那刚好,这些方法涉及了很多黑果领域的一些小技巧,我也顺便展示给大家。

 

注意:0d/6d补丁的本质是阻止一些部件参与唤醒工作,这其中包括了xhc部件,这意味着你无法使用鼠标键盘唤醒,只能用电源键唤醒。

若你有一组除了xhc之外的usb控制器,那把键盘鼠标插在那两个控制器上,这样可以即使用强制睡眠,也仍然可以键盘鼠标唤醒电脑。

3.10.1  方法一:OC版本的0D/06补丁

300系列的主板一般有5个部件是直接参与唤醒工作的,这五个部件分别是XHC(USB控制器)、CNVW(CNVI网卡,如果你的主板自带的话)、GLAN(有线网卡)、XDCI(USB相关)、HDEF(音频)。旧的一些主板可能会有不同的命名,比如XHC有叫EH01,HDEF叫做HDAS等,这里不做讨论。而这些设备往往会直接影响睡眠,比如你输入小兵哥哥经常说的这个命令:

log show --last 1d | grep "Wake reason"

 

我们有时候会看到如下结果:

那么即是这两个部件导致了睡眠出现了问题。于是,我们用几种方法去屏蔽或者说修改这些部件,来达到电脑正常睡眠的效果。

我们打开之前提取的SSDT,随便搜索五大部件中的一个,比如说XDCI:

 

我们主要是看上图中XDCI下的_PRW属性值,可以直接看到Return的值为GPRW (0x6D, 0x04)。其中6D这个数值看主板而定,有些主板叫做0D,而后面04这个值的含义为S4级别的电源管理,即休眠甚至关机情况下的唤醒;有些后面的数值是03,代表着S3级电源管理。这个我打一个大家比较熟悉的例子,GLAN这个部件的PRW值也是0x04,为什么要是04呢?因为这样我们可以使用远程通过网络启动主机功能。

那说了这么多,我们到底要做什么呢?我们要做的就是屏蔽掉他们,不让他们参与主机唤醒这个工作。这样可以彻底解决睡眠即醒的问题。

 

首先通过DSDT里确定你的返回值到底是0D还是6D,比如我这里返回的是6D,就记住自己是6D的。照旧打开宪武大大的OC-SSDT包,打开目录下的0D6D补丁包,看到两个plist的更名文件,我是6D的就直接实用6D更名补丁,打开我们看到两个patches,一个是把03(即S3级别电源管理)改名为00(即取消它的参与唤醒工作)。另一个是把04(S4级电源管理)改成00(取消它的参与唤醒工作)。

 

整个过程其实很简单,就是把宪武大大的两个补丁加到自己的CONFIG里去而已。这里主要运用的方法是HOTPATCH的重命名功能。

 

 

3.10.2  方法二:沿用Clover版本的0D/06补丁&展示TgtBridge在OC下的用法

宪武大大做的clover版本的0d/6d补丁,其实没啥必要讲,只是有留言问了tgtbridge在oc下怎么用,那我就展示一下吧。这个补丁原理是一样的,通过重命名的方式改_prw。

直接下载宪武大大的clover hotpatch补丁包,打开“11-1-睡了即醒(0D/6D)补丁”下的plist文件,按照clover的方式,其实把这些补丁直接拖到clover下就行了。那我们拿出一组数据来讲解怎么把它翻译成oc版本:

Comment          String        XHC:_PRW to XPRW
Disabled         Boolean       True//此补丁并未生效,这里要改成false才会生效
Find             5F505257      //hex转text的含义即是:_PRW
Replace          58505257      //hex转text的含义即是:XPRW
TgtBridge        5848435F      //hex转text的含义即是:XHC_

这里我来解释一下,这组改名是对xhc下PRW进行改名为xprw,这样的话,之前prw下的(0x6D, 0x04)即不生效了。而指定xhc的方法即是使用了tgtbridge,因为整张dsdt上有几十上百个_PRW,你必须通过tgtbridge来指定到底是哪一个部件的_PRW。

 

那么OC到底怎么使用tgtbridge来特定某一部件下的内容重命名呢?我们先把上面一段clover的补丁转换成oc的版本先吧:

Comment         String        XHC:_PRW to XPRW
Count           Number                  //需要重点解释  
Enabled         Boolean       True      //表示应用此补丁,不应用选False            
Find            Data          5F505257  //hex转text的含义即是:_PRW
Limit           Number        0         //这个按默认即可 不去管他
Mask            Data          <>        //这个按默认即可 不去管他
OemTableId      Data          <>        //这个按默认即可 不去管他
Replace         Data          58505257 //hex转text的含义即是:XPRW
ReplaceMask     Data          <>        //这个按默认即可 不去管他
Skip            Number                  //需要重点解释 
TableLength     Number        0         //这个按默认即可 不去管他
TableSignature  Data          44534454  //hex转text的含义即是:DSDT,这里按默认即可,代表对dsdt进行修改

 

这里就是一个还没全部翻译好的oc版改名xhc的prw。那么如何定位xhc下的_prw呢,主要是填写CountSkip。其实oc的tgtbridge是通过一个个数过去来定位具体哪一个位置的。比如xhc的prw是整张dsdt里面的第55个,那skip填54,意味着跳过前54个,从第55个开始执行。那执行多少次呢?执行一次count就填1;比如你要同时改第55个和56个,那count就填2。说了这么多,我来实操一下吧:

 

打开dsdt,在左下角直接搜索_PRW,就能把整张表的_PRW筛选出来了:

我总共数了一下,一共有56个_PRW。我们再在主内容栏上按command+f搜索xhc,直接找到xhc的_PRW,刚好我们看到我的xhc实在整张表的倒数第4个,也就是正数第53个:

 

那么我们就可以补充完整张表了:

Comment           String         XHC:_PRW to XPRW 
Count             Number         1
Enabled           Boolean        True
Find              Data           5F505257 
Limit             Number         0 
Mask              Data           <> 
OemTableId        Data           <> 
Replace           Data           58505257
ReplaceMask       Data           <> 
Skip              Number         52
TableLength       Number         0 
TableSignature    Data           44534454 

 

如果你想第53、54、55个都改掉,那count就写3,意味着顺序执行3次。好了,就这样,有问题留言。

 

3.10.3  方法三:配合SSDT+重命名的强制睡眠补丁 (重点推荐)

我之前也提过,我是一个比较反对在oc下进行直接重命名的用户,如果真的要用重命名,也一定是搭配ssdt去做重命名,所以这个方法也是宪武大大和我最推荐的一种方法。

打开宪武大大的OC-SSDT包,找到0D/6D文件夹,打开SSDT-GPRW.dsl。我来解释一下里面的内容

//
// In config ACPI, GPRW to XPRW
// Find:     47505257 02
// Replace:  58505257 02        //这里提示你要应用这个补丁,你必须在config中的ACPI-PATCH里面加入如上重命名内容          
//
DefinitionBlock ("", "SSDT", 2, "ACDT", "GPRW", 0)
{
    External(XPRW, MethodObj)    //寻找dsdt表中叫做XPRW的内容,这是要你在config中先把gprw改名成xprw才会生效,这就是为什么这个补丁的重命名必须是这个ssdt和重命名一起用的原因,你第一个重命名不生效,这个ssdt也不会生效。
    Method (GPRW, 2, NotSerialized)
    {
        If (_OSI ("Darwin"))          //为了不破坏dsdt完整性,这里做了系统判断,当你运行windows的时候,此ssdt不生效
        {
            If ((0x6D == Arg0))       //如果你的dsdt中是6D进行判断
            {
                Return (Package ()
                {
                    0x6D, 
                    Zero
                })
            }

            If ((0x0D == Arg0))      //如果你的dsdt中是0D进行判断
            {
                Return (Package ()
                {
                    0x0D, 
                    Zero
                })
            }
        }
        Return (XPRW (Arg0, Arg1))  //当运行mac系统时,如果你的dsdt中XPRW为6d,或者0d时返回为0,即屏蔽。
    }
}

 

这个ssdt不需要你改任何内容,打开后左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字就叫,记住后缀为aml。记得将ssdt-gprw.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件:

 

并且,我们需要在ACPI—Patch中增加一条配合此ssdt的重命名:

 

3.10.4  方法四:从白果DSDT中学习到的睡眠补丁

最近群友在看白果的dsdt中发现白果的5大部件_PRW值都是(0x69,0x03)。那么何不试试把这5大部件的s4级电源管理都改成s3级呢?实践证明在某一些机器上把04改成03是有效的,方法如下:

 

3.11 OC官方内核补丁集介绍

这里会长期更新OC官方提供的Kernel Patch (KP)补丁。

 

3.11.1 华硕等机型开机卡F1

注意此kp补丁只对10.14.4以上系统版本生效,旧的我懒得提供了,需要留言。

Kernel
  Patch
     Item 0
         Base            String
         Comment         String         f1 patch (随便填,好记就行)
         Count           Number         1
         Enabled         Boolean        Yes或者True
         Find            Data           75330fb7
         Identifier      String         com.apple.driver.AppleRTC
       Limit           Number         0
       Mask            Data            
       MaxKernel       String
       MinKernel       String
       Replace         Data           eb330fb7
       ReplaceMask     Data        
       Skip            Number         0

 

 

如果你使用以上补丁仍然卡F1,你有必要使用RTCMemoryFixup.kext这个补丁对CMOS内存进行修补。

我们将此kext放入OC/Kexts下面,并在config中加载它。

一般来说,我们CMOS的总内存池是从00-FF(这个是16进制,换算成10进制就是从0-255),我们可以通过增加boot-args:rtcfx_exclude=00-FF来完全屏蔽cmos(当然这样写你完全失去了cmos记忆的功能了)

我们需要通过二分法来定位你出错的cmos位置。把00-FF分成两部分,也就是00-7F以及80-FF。我们分别填一次rtcfx_exclude=00-7F以及rtcfx_exclude=80-FF,试试看开机还有没有卡F1。比如说我使用的rtcfx_exclude=80-FF是不卡f1了,那我们继续对80-FF进行拆分为:0x80-0xBF 和 0xC0-0xFF。以此类推,直到你拆分到最后的那一段位置为止。

是不是觉得超级麻烦,我也这么觉得。

 

3.11.2 系统版本10.15.2开始无法自动进入睡眠补丁

在@Bugprogrammer 的qq群中曾推广过使用SSDT-SBUS.aml来解决这个问题,有些人可以自动睡,有些人不行,我也不知道为什么,我甚至不知道为什么新主板要加这个补丁。如果你用了有效那就用吧。

 

除此之外,OC官方推荐开启小憩后可以自动睡眠,但小憩带来的问题是它会自动醒,OC提供如下补丁来解决这个问题:

Kernel 
  Patch 
    Item 1 
       Base         String    __ZN8AppleRTC18setupDateTimeAlarmEPK11RTCDateTime 
       Comment      String    RTC Wake(随便填,好记就行) 
       Count        Number    1 
       Enabled      Boolean   Yes或者True 
       Find         Data      
       Identifier   String    com.apple.driver.AppleRTC 
       Limit        Number    0 
       Mask         Data      
       MaxKernel    String 
       MinKernel    String 
       Replace      Data      c3 
       ReplaceMask  Data 
       Skip         Number    0

 

 

3.11.3 关机卡RTC

Kernel 
   Patch 
      Item 2 
        Base          String       __ZN8AppleRTC14updateChecksumEv
        Comment       String       Disable RTC ck poweroff(随便填,好记就行) 
        Count         Number       1 
        Enabled       Boolean      Yes或者True 
        Find          Data         
        Identifier    String       com.apple.driver.AppleRTC 
        Limit         Number       0 
        Mask          Data        
        MaxKernel     String  
        MinKernel     String 
        Replace       Data         c3 
        ReplaceMask   Data       
        Skip          Number       0

 

 

3.12 300系列主板开启原生NVRAM

OC在0.5.5正式版开始支持300系列的原生nvram。首先打开你的dsdt,搜索001F0000,确定自己的

  • lpc部件名字,如图示,我的lpc部件名叫做LPC0, 别的主板可能叫做LPCB,请根据实际情况记录
  • lpc的路径,如图左下角红线提示,我的LPC路径在_SB_.PC00.LPC0

 

下载SSDT-PMC.dsl,根据自己的dsdt编辑相关内容:

 

左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字随便写吧,我就叫ssdt-pmc.aml,记住后缀为aml。记得将ssdt-pmc.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件。

如果你之前模拟过nvram,请执行以下命令删除相关模拟内容:

  • # 删除文件 LogoutHook.command
    sudo rm -rf $(sudo defaults read com.apple.loginwindow LogoutHook)
    # 清空 LogoutHook 的触发设置
    sudo defaults delete com.apple.loginwindow LogoutHook
  • 删除EFI下的nvram.plist。

 

同时你需要对config.plist进行设置:

  • NVRAM—LegacyEnable 选择no/false
  • NVRAM—LegacyOverwrite 选择no/false
  • Booter—Quirks—-DisableVariableWrite 选择no/false
  • 你也许要打开NVRAM—WriteFlash 选择YES(请尽可能不要选!)

 

 

4.0 OpenCore 进阶

 

以下内容对你正常使用黑苹果已经无关了,如果你追求更好的黑果表现,可以看下去,但这部分内容也需要你自己有更好的能力与耐心。如果你不具备足够的条件,我不建议你看下去;如果你的失误导致硬件的损坏,我也不会、也没能力负责。

4.1 CPU的变频优化

此章节对你的要求会相对高一点,并且请你具备如下条件:

  • 有耐心
  • CFG已经解锁,可以看我博客中apitomemoryfix那篇文章解锁。(这也许不是必要条件
  • 已经通过3.4章节打开原生电源管理。
  • 此章节只适用于4代之后的CPU。
  • 在调整CPU变频时,出现失误导致CPU温度过高,能有正确的处理能力保证CPU不烧毁,我对极端的后果不负责任。
  • 此教程对无核显用户不友好,需要自己更多的领悟。
  • 如果你不同意第五条,请不要看下去。

 

在Intel四代之后,苹果引入了新的内核级电源管理方式:XCPM(XNU CPU Power Management),这种新的管理方式可以高效地管理电源及变频。同时,苹果也推出了HWP (HardWare controlled Performance states),这种技术可以快速根据特定程序的需求,作出变频转换。我们这个章节,本质上就是在加载XCPM的情况下,调整HWP来优化CPU的变频。

 

同时我要说的是,我在论坛上看到很多所谓的“变频”,有的甚至加载了50多个档位的变频,其实这种是完全没有意义的。我认为,变频是能在你需要的高频的时候快速进入高频状态,在关闭程序后又能很快回到低档位,换句话说,其实只需要三个档位就高了:睿频档,正常频率,以及低频档。

 

  • 首先,你需要搞清楚自己的cpu型号,并找到、换成与自己cpu型号最接近或者一样的白苹果型号,并且此型号必须带有HWP。一般新的笔记本机型都具有,台式机的话推荐iMac19.1以及Macmini8.1。可查询此帖选取适合的机型。

 

  • 执行如下命令:
cd ~/desktop
mkdir cpu
cd cpu
git clone https://github.com/corpnewt/CPUFriendFriend.git
git clone https://github.com/acidanthera/CPUFriend.git
cp ~/desktop/cpu/CPUFriend/tools/ResourceConverter.sh ~/desktop/cpu/
CpuFriendFriend/CPUFriendFriend.command

 

  • 你会看到如图的命令行,这里1 of 4代表第一段睿频的设置,以此类推,数值越大睿频越高,下面要求你填写的是最低的频率值,你想要低一点的800MHZ就填08,高一点的1300MHZ就填0D(注意大小写)

 

  • 填完前两段后,它会要求你填写EPP值,EPP值越低,性能表现越强。我们是填的前两段的低频率部分,我们可以选择节能型的,比如0x80,如果你想极致性能,可以填0x00。

 

  • 直至你填完所有4段变频需求后,便会生成你的变频plist。我们执行以下命令:
cp ~/Desktop/cpu/CpuFriendFriend/Results/*.* ~/Desktop/cpu

 

  • 我们会在桌面的CPU文件夹中找到你所需要的ResourceConverter.sh以及Mac-xxxxxxx.plist两个文件

 

  • 执行以下命令生成你最终需要的CPUFriendDataProvider.kext
cd ~/Desktop/cpu
./ResourceConverter.sh --kext ~/Desktop/cpu/Mac-AA95B1DDAB278B95.plist

注意命令行中Mac-AA95B1DDAB278B95.plist,请替换成你自己的文件名,这样我们就可以在桌面的CPU文件夹下拿到CPUFriendDataProvider.kext

 

  • 我们再到CPUFriend的release页面下,下载最新的release版本,得到里面的CPUFriend.kext

 

  • CPUFriendDataProvider.kextCPUFriend.kext一起放到oc/kexts下,并在config中加载,注意:CPUFriend.kext应该放在CPUFriendDataProvider.kext的前面。

 

  • 感谢@请叫我官人 的帮助。完成,自行测试。

 

 

4.2 5700/XT/Redeon VII显卡的性能优化

 

此教程已经发于pcbeta:点此直达

4.3 

 

 

 

 

 

 

在OsxAptioFix2Drv-free2000的作者自爆出此插件最终会导致设备永久损坏后,对于z390用户来说,换上最新AptioMemoryFix(AMF)已经变成了一件必要的事情,而我之前写的AMF实在有点杂乱无章,让很多人摸不着头脑。我的博客里面的文章也一直希望是给小白用户看的,希望每个人都能看懂,基于我的初衷,我现在重新写一次300系列主板使用AMF的教程。如果你是z390的用户,并且实在需要帮助,也可以来我的qq群里:838739020。

关于OsxAptioFix2Drv-free2000作者对这个插件的影响陈述如下:

I unleashed a plague upon you guys and I am sorry for OsxAptioFix2Drv-free2000. from hackintosh

 

 

 

 

提一下这类补丁的作用就是修复内存,我这里quote下@athlonreg版主的解释:

New set of memory fix drivers.

OsxAptioFixDrv and OsxAptioFix2Drv reverted to rev before 4368 so without NVRAM support. Let them stay here for history. And sometimes OsxAptioFixDrv is only working version for high warped memory map.

OsxAptioFix2Drv is a reduced version without relocation blocks and may not works on some hardware or with older OS version. But this version supported Hibernation while first one no.

OsxAptioFix3Drv is a OsxAptioFix2Drv rev 4369 renamed to be different. This version supported NVRAM. More runtime fixes in 4379. This version can be improved by clover crew in future.

AptioMemoryFix included in the package is third-party memory fix driver used as is. It is probably better then OsxAptioFix*. Choose it for a first attempt.

OsxLowMemFixDrv is also memory fix driver, not improved since rev608.

SIC! These 5 drivers should not be used simultaneously! Choose one of them!

Slice的解释,五选一,AptioMemoryFix优先考虑

 

事实上,我们的300系列是无法使用最优的AptioMemoryFix的,就算能用,也不能完全发挥它的作用在@黑果小兵的博客中他指出:

300系列主板请于drivers64UEFI目录中移除AptioMemoryFix-64.efi添加OsxAptioFix2Drv-free2000.efi该驱动位于/EFI/CLOVER/drivers-off目录下 或者 Slide值获取及计算

 

当然我需要指出的是,并不是所有的300系列主板都要弄得很麻烦才能用上,一些直接可以使用,但是并没有完全用好它。根据作者的github,正确的使用它需要符合以下条件:

  • KernelPm 取消勾选
  • boot argument中添加自行计算出的slide值(参考方法二中黑果小兵的教程,如果不加slide值不卡加号,就别添加任何slide值
  • BIOS中解锁CFG
  • BIOS中CSM disabled
  • BIOS中EHCI/XHCI Hand-off enabled
  • BIOS中Above 4G Decoding enabled
  • BIOS中VT-d disabled

 

在我们开始一系列操作之前,我们必须确保你做了如下的步骤!这是必须一定要做的!

  • 在你的config.plist里勾选kernelPM以及AppleIntelCPUPM

 

  • 一些主板包括华擎、华硕可以直接在BIOS中开启关闭cfg,若你能在主板中直接选择cfg lock,请确保此时的cfg lock是enable的。
  • 删了原先在Clover/drivers64UEFI/下面的OsxAptioFixDrv-64.efi/OsxAptioFix2Drv-free2000/OsxAptioFix2Drv-64.efi 等内存修复补丁,并替换上AptioMemoryFix-64.efi (注意备份!)
  • 下面的操作过程必须按我的写作顺序来!

 

 

计算slide数值

准备工作后,开机我们会卡+号,如果可以顺利进入,那恭喜你不需要计算slide值了,直接跳过这步。卡加号的话代表你需要计算slide,方法由黑果小兵提供,原贴:https://blog.daliansky.net/Slide-value-acquisition-and-calculation.html

 

下图为黑果小兵给出的截图

 

如果你在开机进入clover界面中无法看到UEFI Shell的选下,你需要执行:

  • 首先确保你的EFI/Clover/下面有tools这个文件夹,以及文件夹中有uefi shell的工具,如果没有,请安装一遍最新的CLOVER即可!
  • config.plist中,在gui选项栏中打开tools:

 

  • 执行上两步还是没有的话,换一个黑果小兵提供的主题文件。

 

还有值得一提的是:

  • 如果你输入memmap显示内容太多而分辨率低导致你看不到主体内容,请输入memmap -b 对内容进行分页,就可以看到主体内容了。
  • 在外国的一些slide教程中,并没有要求Start列的值比10000000大,所以我把这个条件去掉了,在计算过程中,我得出了2组符合条件的slide值,其中一个是slide=1,slide=1是一个比较通用的数值。

 

 

 

解锁BIOS中的CFG功能

解锁bios并不一定需要我下面那么复杂的方法!如果你的主板是华硕华擎的,你可以直接在bios中看到CFG Lock这个选项,选择disable即可。CFG Lock disable的意思说是说cfg的锁关闭,也意味着cfg功能开启。一些主板如果只显示cfg,那应该选择开启,你要理解其中的双重否定,我们的最终目的是开启cfg功能!

 

如果你的bios没有cfg的相关选项,你需要跟着我写的方法来,此过程中你需要一个空U盘!

首先你需要在你的config.plist中添加你刚才计算出来的slide值,我的是slide=1 (图片是用的以前的,给大家看一下添加位置而已)。

 

在MAC的桌面上新建一个叫CFG的文件夹,并将以下三个文件放入此目录

  • ifrextract
  • UEFITool
  • 正在使用的BIOS文件。这个可以从官网下载,比如我是技嘉的z390-elite,正在使用的是F7这个版本的BIOS, 可以从此处下载到,并解压,得到Z390AE.F7这个文件

至此,在桌面创建的CFG文件夹中应该有如图三个文件:

 

打开terminal(终端)输入以下命令

cd ~/Desktop/CFG

./UEFITool.app/Contents/MacOS/UEFITool ~/Desktop/CFG/Z390AE.F7

 

其中Z390AE.F7你需要替换成你的BIOS的文件名。

 

输入命令后我们可以看到如下界面,并在此见面中按Command+F,搜索Text”CFG Lock“

 

我们可以在最下面的输出栏中看到搜索到的结果,双击它就能得到指定的目录中,右键extract body,并保存文件名为PE32Section.efi到我们桌面上的CFG文件夹。

 

回到terminal, 我们再键入如下指令,将PE32Section.efi转换为txt文件:

cd ~/Desktop/CFG

./ifrextract PE32Section.efi PE32Section.txt

 

 

 

 

 

用文本编辑器打开CFG文件夹下的PE32Section.txt文件,如果你打不开,我推荐你使用sublime text这个编辑软件来打开它。

我们Command+F搜索”CFG Lock“

 

我们找到如下数值:

One Of: CFG Lock, VarStoreInfo (VarOffset/VarName): 0x5C1, VarStore: 0x1

 

 

其中CFG Lock的Varname是0x5C1,对应的设置0x1。我们理解0x1是等于”锁定”,而解锁应该是”0x0″,所以接下来我们需要把CFG解锁。

 

将U盘插入MAC,用磁盘工具将U盘格式化为fat32格式,命名为EFIBOOT:

 

下载modGRUBShell.efi, 并重命名为bootx64.efi

在U盘内创建一个EFI文件夹,并再在此文件夹下创建文件夹BOOT,并将bootx64.efi放入BOOT下:

 

重启电脑,我们通过UEFI启动此U盘进入GRUB shell

 

在GRUB shell中输入

setup_var_3 0x5C1

其中0x5C1(你必须注意大小写!)是我们之前从PE32Section.txt得到的Varname,输入后,我们可以看到你当前主板的CFG是关闭的,值为0x1。图片中因为我已经改好了,所以是0x00

我们再输入

setup_var_3 0x5C1 0x00

这样,我们就可以把CFG解锁了。

注:一些主板可能不适setup_var_3命令,请使用setup_var

setup_var 0x5C1

setup_var 0x5C1 0x00

 

回到MAC中,我们把EFI/Clover/drivers64UEFI下关于内存修复的补丁全删了,包括OsxAptioFixDrv-64.efi/OsxAptioFix2Drv-free2000/OsxAptioFix2Drv-64.efi

再把AptioMemoryFix-64.efi放入。

 

关闭kernelPM以及AppleIntelCPUPM

我们之前在准备过程中,勾选了这两个选项,现在我们需要关闭它:

 

 

最后你需要重启电脑,我们可以通过hackintool来查询cfg是否解锁:

1.点击工具

2.点击下面的intel图标,输入你的管理密码,稍等一会,便会输出内容

3.在内容中你可以看到cfg lock这个选项,我们看到已经是not locked了!

 

小彩蛋1

我们知道Z390本身是不支持原生电源管理的,但我们既然发动了CFG,那当然要用上full HWP咯!试试看吧!

 

这里我使用了@黑果小兵提供的开启HWP的方案。

打开terminal(终端),输入一下命令:

cd /tmp && curl -s https://raw.githubusercontent.com/Piker-Alpha/freqVectorsEdit.sh/master/freqVectorsEdit.sh > /tmp/freqVectorsEdit.sh && chmod +x freqVectorsEdit.sh && /tmp/freqVectorsEdit.sh && sudo rm -rf /tmp/freqVectorsEdit.sh && sudo rm -rf /tmp/Mac-*.bin

 

 

回车,输入密码,我们能看到大约50多种机型,其中带HWP字样的是默认开启HWP的,我们选择的原则有两条:

  • 自己是台式机就选择台式机机型
  • 能选新的带HWP的机型就尽可能选新的机型

在一堆机型中,我看到一个机型:

[ 51 ] Mac-AA95B1DDAB278B95.plist (Unknown Model @ 4100 HWP/4300 HWP/4600 HWP/5000 HWP)

因为这个代码很久没更新了,一些新的机型是它就写 Unknown Model。没关系我们用百度搜一下代码就知道是啥机型了。

百度搜索:

Mac-AA95B1DDAB278B95

可以看到是最新款、使用9代CPU的iMac19,1,刚好!

通过Clover configurator 打开config.plist,转到SMBIOS,我们把机型选择成19.1:

 

到ACPI,我们打开plugintype(原生电源管理选项):

 

保存重启,我们再使用hackintool的工具箱查看,我们看到hwp已经是开启的了(1=开启)

 

 

完工!

小彩蛋2

在使用了AMF后,你也许会碰到睡眠唤醒的问题,这其中也有可能是USB造成的,同样也会因为我们的z390不支持nvram而不能进入休眠模式(Hibernation),我们需要执行以下命令来让系统只进入睡眠(sleep)而不进入休眠:

 

打开hackintool—电源—看看下面两个选项是否全绿,如果没绿,自己点击以下修复键:

 

你所需要的文件:

CFG

因白苹果并没有使用过我们的Z390芯片组,使用Z390芯片组的黑苹果会出现各种电源相关的问题,比如:1)关机变成重启,2)从WIN重启到MAC后不停自动重启。那我们这篇文章主要解决这两个问题。

 

Config.plist设置:

这里我们要把关于原生电源的设置都确认一次。在ACPI栏目里,关于LPC的设置全部不勾选,Plugintype不勾选。

 

在KERNEL and KEXT PATCHES栏目里,不要勾选关于PM(power management)的选项,但是不知道为什么,如果我不勾选KernelPm,我的MAC会无限重启,所以不得不勾选。

 

 

补丁设置:

1)确保在EFI/CLOVER/drivers64UEFI/ 目录下有EmuVariableUefi-64.efi这个文件,这个补丁是帮助我们模拟NVRAM的,你也可以点我下载(已过时)

 

2)下载最新的CLOVER安装包,你也可以点我下载(已过时)打开安装,点继续,直到看到“自定”这个选项,我们主要勾选红框内的两项,别的默认就行。

 

安装完成后,重启1-2次,你会看到EFI目录下多了两个文件,这就是我们模拟出来的NVRAM文件。

 

 

 

BIOS设置:

开机进入BIOS设置,转到POWER这里,我们开启platform power management, 但是必须关闭PCH的电源管理;如果你使用核显,PEG的也要关掉。

OK,这样就设置完了,再试试WIN重启到MAC吧。

 

 

如果你在入手DESKMINI 310 (COM)之前,并想使用黑苹果的话,请参考以下购物指南

 

购物指南:

  • CPU:i3-i9都可以,请务必不要购买ES QS版本CPU,其中i7及以上存在功耗墙,不适合购买。
  • 内存:随便
  • 网卡:拆机卡(BCM943602CS)+转接卡,或者购买dw1820a(请务必购买编号为CN-OVW3T3的1820a,其他版本可能存在不适用)
  • 硬盘:请不要购买pm981,pm981a.自主查询合适的SSD 比如SN750/C2000/C2000PRO等等
  • 散热器:随便
  • 请在购买后先使用WIN,并使用AIDA等压力测试软件测试并确保硬件没有问题!!

 

我的配置/Configurations

  • Motherboard/主板: ASROCK 310-com
  • External Hard Drive/硬盘: Asgard AN 512 M.2 NVMe SSD
  • CPU: I5-8400  
  • Wireless Card/网卡: dw1830
  • RAM/内存: ADATA 16G DDR4 2400MHz X2

     

  • Functions/功能
  • Sleep&Wake/睡眠唤醒: OK/正常
  • Bluetooth/蓝牙: OK/免驱,正常
  • WIFI: OK/免驱,正常
  • wired Internet有线网卡: OK/正常
  • Audio声卡:OK/ 正常
  • CPU Frequency/变频: OK/正常
  • Hand Off: OK/正常

 

 

BIOS设置/BIOS settings

  1. Advanced 
    • CPU Configuration, CPU C states Support, Enabled,
    • CPU Configuration, CPU C states Support, CFG Lock Disabled (必须)
    • Chipset Configuration, Vt-d, Disabled,
    • Chipset Configuration, Onboard HD Audio: Enabled,
    • USB Configuration, XHCI Hand-off, Enabled  (关键)
    • Super IO Configuration, Serial Port, Disabled(必须)
  2. Security Secure Boot, Disabled(by default)
  3. Boot, CSM, disabled
  4. BIOS版本必须在4.0及以上!

 

超级小白教程/A VERY IDIOT GUIDE

如果你实在实在实在不知道怎么弄EFI的话,你可以下载我打包好的整套MOJAVE 10.14.4镜像,这个镜像包含了V3.0的EFI,也就是说,你通过etcher或者Transmac等软件把镜像写到U盘后,重启通过U盘引导就能直接安装了!连EFI你都不用改!我推荐使用Etcher,因为它支持在MAC, Linux和WINDOWS下写盘。

要注意的是,第一次U盘引导进去,你要选择install mojave,然后抹盘,安装,第二次重启后,你需要选择你的安装硬盘进入,期间可能会重启1-3次,就行了。

 

If you really really do not know how to put EFI  under the correct folder, I provide you a Catalina 10.15 image with EFI combined, meaning that you could write the image to your USB flash disk through etcher, transmac or other softwares, then plugin your USB flash disk, restart the rig, boot through the USB, install the MAC directly. You don’t even need to know how to place the EFI! I recommend you Etcher, because it supports Windows, Linux and Mac environment. 

Be aware, booting through USB, you should ease your target hard drive, and install the system to that hard drive, the system will restart automatically at the first stage, then you need to select the target hard drive at the second stage, and system may automatically restart 1-3times, which is normal.

 

 

 

 

Image download/镜像下载地址:

 

————————————10.15.1下载地址如下——————————————————

请准备大于10GB的U盘!

链接:https://pan.baidu.com/s/1vzh03nAskHNRa6sdUVo6Yg 密码:4w60

 

MD5: 4f830a52d1924dabc77e49526319171b

SHA1: f51b60c52f2390a464d7bea2555c355980012d63

SHA256: af659e3a06d6388ef17256d22169dfee1a44c8c56bd804ad6d6aef036031179e

CRC32: f3902045

 

 

疑问解答/Q&A

Q1:为什么我用了这个EFI后,仍然卡在苹果界面?

A1:请确保你的BIOS设置正确,并且BIOS版本在4.0以上;请确保你的硬盘不是那些PM981、浦科特等不能被驱动或者需要打补丁的硬盘。这里建议使用asgard、sn750硬盘。

 

Q2:为什么无法双屏、为什么双屏需要热拔插?为什么闪屏?

A2:请确保你的线缆具有足够带宽,质量过硬。

 

Q3:我安装了傻瓜版镜像,如何不用U盘引导?

A3:在安装好进入系统后,请下载下面的EFI文件,然后用hackintool挂载你系统盘目录下的EFI(如图,mount再open),把下载好的EFI文件内的BOOT CLOVER两个文件夹复制到系统盘的EFI/EFI/目录下(同目录下应该也有一个系统自动生成的APPLE文件夹)。

 

Q4:为什么蓝牙不能用?

A4:请下载下面的EFI,并阅读包内的说明!

 

Q5:为什么下载的镜像不能写盘?

A5:下载后请核对MD5等数值!

 

 

 

EFI下载/EFI Downloads

15-Aug-2020 OpenCore V7.0.1

wee fixs

Deskmini-310-Opencore-V7.0.1

Deskmini-310-Opencore-1820A-V7.0.1

(probably only support those 1820A with model no.CN-OVW3T3, I have no further tests.)

 

 

07-OCT-2020 OpenCore v.7.1

Add supports up to Big Sur beta 9.

Remove boot-arg:vsmcgen=1, since Big Sur no longer needs fake smc to generation 1.

ACDT packages update.

Deskmini-310-Opencore-V7.1

Deskmini-310-Opencore-1820A-V7.1

 

 

10-Aug-2020 OpenCore v7.0

add supports from Catalina 10.15 to Big Sur beta4.

no longer support HDMI. Not my decision, ask Apple.

Backup your personal files if you suppose to upgrade to Big Sur!!!!

Deskmini-310-Opencore-V7.0

Deskmini-310-Opencore-1820A-V7.0

 

04-June-2020 OpenCore v6.4

Opencore0.59,10.15.5正式取消hdmi支持。

Deskmini-310-Opencore-V6.4

Deskmini-310-Opencore-1820A-V6.4

 

27-May-2020 OpenCore v6.3

错误修复

Deskmini-310-Opencore-V6.3

Deskmini-310-Opencore-1820A-V6.3

 

 

23-May-2020 OpenCore V6.2

更新opencore内核为0.5.9

增加KASLR内存随机分布注入支持!

支持主题,并支持主题倒计时进入磁盘。请在菜单选择界面按ctrl+enter选定默认启动项,10秒后自动进入。

解决清理nvram后丢失启动项的问题。

这次的更新诚意满满!

Deskmini-310-Opencore-V6.2

 

n06-May-2020 OpenCore V6.1

@左手负责更新的OPENCORE,我最近实在没时间弄。为最新内核的OPENCORE 0.5.8。

Deskmini-310-Opencore-V6.1

 

12-Mar-2020 OpenCore V5.0.5

开机图形界面存在诸多BUG,暂时取消图形界面。

 

Deskmini-310-Opencore-V5.0.5

1820A用户专用版本:Deskmini-310-1820A-Opencore-V5.0.5感谢群友@大勇

 

 

09-Mar-2020 Opencore V5.0.4

新增开机图形界面

Deskmini-310-Opencore-V5.0.4

 

1820A用户专用版本:Deskmini-310-1820A-Opencore-V5.0.4 感谢群友@大勇

 

05-Mar-2020 OpenCore V5.0.3

版本更新

Deskmini-310-Opencore-V5.0.3

 

17-Feb-2020 OpenCore V5.0.2

版本更新

Deskmini-310-Opencore-V5.0.2

 

 

10-Feb-2020 OpenCore V5.0

Opencore 0.5.6 

Deskmini-310-Opencore-V5.0

 

 

05-Feb-2020 OpenCore V4.1

增加新的变量,支持原生nvram,更新补丁集。

如果你之前模拟过nvram,请执行以下命令删除相关模拟内容:

# 删除文件 LogoutHook.command
sudo rm -rf $(sudo defaults read com.apple.loginwindow LogoutHook)
# 清空 LogoutHook 的触发设置
sudo defaults delete com.apple.loginwindow LogoutHook
# 删除EFI文件夹下的nvram.plist

 

Deskmini-310-Opencore-V4.1

 

07-Jan-2020 OpenCore V4.0

大版本更新,合并virtualsmc, 更新补丁集,加入变量writeflash/SupportsCsm等五个变量。

Deskmini-310-Opencore-V4.0

Deskmini-310-Opencore-V4.0-1820A版   (感谢群友@大勇 补充1820a版本)

 

 

03-Jan-2020 OpenCore V3.2

如果无法自动睡眠,请开启系统偏好设置—节能—小憩。

默认不加载cpufriend,如果你的cpu性能高于i5-8500,并追求更好的性能,考虑手动加载。

Deskmini-310-Opencore-V3.2

 

 

 

20-Dec-2019 OpenCore V3.1

重新构造apple快充,更新oc版本至0.5.4及相关补丁,config中同步加入相应variable。

Deskmini-310-Opencore-V3.1

 

 

31-Oct-2019 OpenCore V3.0

所有补丁及内核已经更新到oc 0.5.2正式版,config中同步加入相应variable。

Deskmini-310-Opencore-V3.0

Deskmini-310-Opencore-V3.0-强制睡眠特别版

 

25-Oct-2019 OpenCore V2.2

通过禁用AWAC来实现BIOS 3.1以上版本的卡RTC问题。重命名是我非常不建议的一种方式,会破坏ACPI表结构,并且这样的重命名可能会带来睡眠问题/win无法登陆等,所以这次直接禁用AWAC来实现了。

APPLEALC已经可以通过DP/HDMI播放声音并且睡眠唤醒后不会重启了,牺牲了节能五项,还是等待APPLEALC的更新吧。

至于我为什么一定要推崇iMac 19.1这个机型,是因为这个机型不需要T2芯片,并且我自己使用的也是这个机型,比较了解这个机型的一些设置。另一方面,这个机型的变频很有潜力,我非常喜欢。

 

Deskmini-310-Opencore-V2.2

 

24-Oct-2019 OpenCore V2.1.1

小纠正

Deskmini-310-Opencore-V2.1.1

 

22-Oct-2019 OpenCore V2.1

修复因applealc引起的睡眠变重启。修复virtualsmc release版本引起的卡代码。

Deskmini-310-Opencore-V2.1

 

 

21-Oct 2019 OpenCore V2.0 大版本

OC版本升级,支持mmiowhitelist。

CPU整体优化,机型更改为iMac19.1,USB重新定制,节能五项PPMC加载,USB供电优化。

请自行更改三码!自行安装logouthook!自行安装第三方网卡驱动!

Deskmini-310-Opencore-V2.0

 

14-Oct 2019 Opencore v1.2

更新说明包。

Deskmini-310-Opencore-V1.2

Deskmini-310-Opencore-V1.2-1820A感谢群友@大勇

12-Oct 2019 Opencore v1.1

OC版本升级。加入nvram补丁包。

Deskmini-310-Opencore-V1.1

 

 

11-Oct-2019 OpenCore v1.0

修复声卡问题,修复睡眠问题,修复EC控制器问题,修复BIOS RTC问题,支援10.15正式版。

Deskmini-310-Opencore-V1

 

 

 

 

———–我以后不会对Clover进行支持———————

19-Aug-2019 v3.4

支援10.15beta5, 修复10.15下的声音问题(测试)

support 10.15 beta5, fix sound issue under 10.15(test)

3.4

 

09-Aug-2019 V3.3

清理代码,适配CLOVER新的文件夹格式。

 

3.3

 

 

22nd July 2019 V3.2

清理一些不需要的kext, 更新kexts和clover版本。更新支持9代cpu,更新支持14.6-10.15beta4。

cleanup&update clover version and kexts; support 9th cpu, support 14.6-10.15beta4.

 

3.2

 

 

 

7th June 2019: V3.1

支援14.5以及15beta1,但不建议升级测试系统。双屏请确保线材带宽充足,如果是戴尔显示器,请用戴尔作为hdmi屏幕。14.5抹盘安装可能会碰到2-3次显示器丢失信号,请拔插显示器。

 

Support 14.5 & 15beta, but not suggest to upgrade to beta OS. dual-monitors plz ensure your cables are of good quality; If you have a dell monitor, pls set it as a hdmi screen. You may encounter 2-3 times signal losses from your monitor during installing 14.5/15beta OS, pls hot plug out-in your screen.

Download

 

 

21st May 2019: V3.0

重要提示!暂不支持10.14.5!!!!我已经卖掉了我的310COM,所以无法再对10.14.5做及时的更新,很多都是需要靠群友帮忙一起弄,尤其是10.14.5对显卡有很大的改动的情况下。我还会去更新,但不会那么及时了,谢谢大家!

 

IMPORTANT NOTE! CURRENTLY NOT SUPPORT 10.14.5!! Since I’ve sold my 310-com, I may no longer be able to update the EFI in time. Currently I update the EFI through my chat group’s members’ contributions. Especially under a huge change of 10.14.5’s graphic card drive, I really cannot fix it in time, but I will continue to update. Thanks everyone! 

 

Download

 

 

17th May 2019: v2.9

对不起之前打包错了!这次发新的!Sorry I made a huge mistake that I packaged wrong files, this one is fixed.

替换完成后,记得打ALCPlugFix的3.5mm音频补丁哦!点install.command就行。 please run “install.command” in the ALCPlugFix to patch 3.5mm devices’ output issue, after replacing EFI.

 

10.14.5开始,苹果对显卡进行了改进,如果你有双屏的需求,请不要升级10.14.5,并且尽可能使用DP,哪怕是dp转HDMI也好。

Apple has made some improvements for graphic cards in 10.14.5, this made dual output invalid. If you need dual monitors, stay away from 10.14.5, and using the DP connector. 

Download

 

14th-May-2019 v.2.7:

支援10.14.5; 支援全版本BIOS

Support 10.14.5; support all BIOS versions

 

Download

 

V2.6

修复双屏

download