目前为止,最新版的OpenCore(V0.5.1)已经证明了自己在10.14.6至10.15 beta 11上的稳定性。考虑到即将来临的10.15正式版,我想现在写一份关于z390等比较新的主板,如何使用OpenCore去引导新系统是一个不错的时间点。

最近好多小伙伴问我要我的配置哈,都是买了一样的配置再问我要efi,真是厚爱了!我的efi在群文件里都有,配置如下:

我的电脑配置
  • Motherboard/主板: Gigabyte Z390 Elite                                                             购买链接
  • External Hard Drive/硬盘: Samsung 970 Pro 1T M.2 NVMe SSD                     购买链接
  • CPU: I7-9700K                                                                              散片,购于本地电脑城
  • Graphic Card/显卡: Sapphire RX5700XT 8G 超白金                                          购买链接
  • Wireless Card/网卡: BCM943602CS 3-Antenna                                                 购买链接
  • RAM/内存: G-Skill 皇家戟RGB灯条 DDR4 3200 8G x 4                                      购买链接
  • Tower Case/机箱: 酷冷至尊 MasterCase H500                                                   购买链接
  • Others/其他1: Gigabyte GC-Titan Ridge Thunderbolt 3 Card                              购买链接 
  • Others/其他2: Qnap QNA-T310G1T Thunderbolt 3 to 10GbE Adapter               购买链接                   
  • Monitor/显示器1: LG Ultrafine 4K                                                                         购买链接
  • Monitor/显示器2: KOIOS 2418U                                                                          购买链接
  • Keyboard/键盘: Apple 妙控键盘                                                                                    购买链接                          
  • Touchpad/触摸板: Apple  妙控板 2                                                                               购买链接

简介

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

 

 

 

帖子更新内容查询:

2019-11-19:

1.fwruntimeservice.efi 存在缺陷,所以把EmuVariableRuntimeDxe.efi补回来了,具体内容。

 

2019-11-16:

1.增加我的电脑配置及购物链接,问的人太多了。

 

2019-11-09:

1.修改章节2.6.1为中文,谢谢网友提醒,哈哈哈哈。

2.对config设置里,比较重要的设置改为红字提醒。

 

2019-11-08:

1.重点推荐Propertree作为config的编辑工具,再次提示不要使用opencore configurator!!!!下载地址:https://github.com/corpnewt/ProperTree。[Opencore v0.5.3]

 

2019-11-03:

1.重改EC章节,对台式机和笔记本进行区别对待。[Opencore v0.5.3]

2.增加强制睡眠相关教程,留言板说想知道一些SSDT的知识,那我在这里顺便也展示几种SSDT/Hotpatch/TgtBridge在OC下的使用说明[Opencore v0.5.3]

3.删除章节1.0中EmuVariableRuntimeDxe.efi的相关要求。[Opencore v0.5.3]

4.修改章节2.4.4关于applertc的说明。[Opencore v0.5.3]

 

 

2019-10-31:

1.添加OC 0.5.2正式版中新增加的variable相关说明,包括PowerTimeoutKernelPanic(章节2.4.5)以及ReconnectOnResChange(章节2.7.4)。[Opencore v0.5.2]

 

2019-10-27:

1.在2.4.4段中补充了关于华硕主板重启后丢失BIOS设置以及需要按F1跳过安全模式的RTC设置,同时在3.8段中提供RTC的完整解决办法。[Opencore v0.5.2]

2.在3.7.1段中补充了usb电流相关设置。[Opencore v0.5.2]

3.在3.7段的仿冒EC中发现OC官方样本的BUG,重新写了一下。[Opencore v0.5.2]

 

2019-10-16:

1. 加入Booter/MmioWhiteList说明。[Opencore v0.5.2]

 

 

 

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补丁)/下载地址

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

 

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

               *ApfsDriverLoader.efi                 ———- APFS格式支持/下载地址

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

               *FwRuntimeServices.efi             ———- 内存寻址补丁/ 下载地址

               *EmuVariableRuntimeDxe.efi     ———- 帮助无原生Nvram的主板实现nvram模拟。Z370, x299, C422主板不需要这个文件/下载地址         

               *VBoxHfs.efi                               ———- HFS格式支持/下载地址//在测试过程中我发现hfsplus.efi的效果更好。               

               *UsbKbDxe.efi                            ———- 键盘组合键的使用,有一些键盘不能放这个,比如苹果键盘/下载地址

               *VirtualSmc.efi                           ———- 传感器依赖/ 下载地址

 

下载完成后,我们的整个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—–Block

这个目录下是禁用一些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 YES 清理ACPI头,一些主板的ACPI表需要打开这个修复启动。但如果补丁点亮系统,请试试NO
RebaseRegions NO 换硬件、升级BIOS等对硬件的操作会对ACPI表产生影响,一般不需要打开
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

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

 

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

 

  • DevirtualiseMmio:内存注入方式包括KASLR方式(分布式注射到各个内存地址中)以及连续性方式。在使用KASLR时,PCIE加载到内存,可能会占据所有所有avaliable值而导致OC的内核以及内核缓存无法注入,导致启动失败。使用KASLR方式很容易出错,我们更适合使用连续性的内存注入方式,并在boot args中添加slide=1(这个之后会写)。因为我们之后会添加这个slide=1去使用连续性的内存注入方式,所以这个选项我们选择NO。(不知道你能不能理解,意思是所有的主板都选NO! 我暂时还没发现能用KASLR的台式机,哈哈哈哈)。

 

  • DisableSingleUser:这里关乎主机是否能开启单用户模式。什么是单用户模式,请看此文章。如果你觉得有用就开启它,我选择NO,我不需要。

 

  • DisableVariableWrite:非原生NVRAM主板需要模拟nvram.plist进而写入variable值,因此我们要禁止此项来防止其他程序对nvram进行写入,我们这里选YES。需要注意一点,如果你的主板支持原生nvram(z370/x299/c422),请选择NO!

 

  • DiscardHibernateMap:当电脑从休眠(hibernation)中唤醒时,硬盘里的资料会恢复到内存中去,但这个时候OC的内核以及内核缓存等也会写入,这样可能导致冲突,这个选项是帮助我们解决这个问题的。而目前来看,除了z370/x299/c422都无法进行休眠(注意睡眠sleep和休眠hibernation是两个概念),台式机的话就更不需要休眠功能了,这里我选择NO。这里我们也不讨论如何休眠。

 

  • EnableSafeModeSlide:安全模式下是否启用连续性的内存注入方式。这个不是那么重要,你不会每天进安全模式的。像z390这样本来也不用分布式注入内存方式的(KASLR),我就选择YES,与正常情况下保持一致。

 

  • EnableWriteUnprotector:保证nvram能正常写入而不受到UEFI内的一些服务的影响,无论什么主板都要选择YES

 

  • ForceExitBootServices:这个选项是让那些非常老旧的主板也能使用内存寻址,正常情况下选NO

 

  • ProtectCsmRegion:官方对此项目的解释与AvoidRuntimeDefrag类似,除非你明白这是什么,不然选择NO,其实我也不明白。

 

  • ProvideCustomSlide:是否使用slide值。其实我自己也没有机会使用KASLR这种内存注入方式,所以我一直都是选择连续性注入内存并配合slide,所以我选择YES。如果你对KASLR有一定的认知并会运用,请注意这个值。

 

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

 

  • ShrinkMemoryMap:苹果的内核对内存的规范性有具体的要求。目前来看新的主板的规范性都是符合苹果的要求的,我们并不需要启动它,选择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 没核心显卡的用户

cpu带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 Block

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

 

 

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.kext  
    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—–Patch

这里是为一些kext打补丁用的。

我们可以看到样本里面有四个补丁,都是关闭着的,其中有两个是关于APPLE RTC的,这对于华硕主板来说相对比较重要,这里我们需要对appleRTC相关的两个补丁一一测试,打开—–Enabled—YES其中一个,即可。如果不行,关闭一个打开另一个。这样能解决华硕主板重启丢失BIOS设置以及需要按F1跳过安全模式,当然RTC仍然需要进一步的设置,我会在进阶教程中详细写一下这一块。

 

2.4.5 Config—–Kernel—–Quirks

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

AppleCpuPmCfgLock:请确保你的BIOS中已经关闭了CFG锁。如何解CFG锁我在这篇文章中有详细教程。如果你不会解这个锁,你就选择YES,解锁的情况下选择NO。注意,CFG的解锁对之后的进阶教程相关度极高,有能力还是解一下吧!

 

AppleXcpmCfgLock: 同上!

 

AppleXcpmExtraMsrs: 主要在没有原生电源管理的CPU上启用,一般是Haswell-E, Broadwell-E, Skylake-X这三种CPU需要填写YES。除此之外的CPU选择NO。

 

CustomSMBIOSGuid: 戴尔笔记本专用项,我们选择NO。

 

DisableIoMapper: 禁用vt-d,我们在BIOS里已经禁用vt-d了,这里我们选择NO就行了。

 

ExternalDiskIcons: AHCI控制器相关,现在的主板都对AHCI支持的很好,一般选择NO。

 

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

 

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

 

PowerTimeoutKernelPanic: 当你遇到睡眠不能唤醒,只有重启后才能睡眠唤醒,请试试选择YES。

 

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

 

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

 

 

2.5 Config—-Misc

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

 

2.5.1 Config—–Misc—–BlessOverride

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

 

2.5.2 Config—–Misc—–Boot

ConsoleBehaviourOs: 一般是留空,如果留空开机显示效果不佳,请填ForceText。

 

ConsoleBehaviourUi: 同上。

 

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

 

HideSelf: 隐藏自身的EFI引导盘选项,选YES。

 

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

 

Resolution: 开机分辨率。比如我的显示器是4K、16:9的,我就填写3840×2160。这个你根据情况填写或者不填。如果遇到开机苹果LOGO很大,你需要按你的分辨率填写。另外,我发现了一件很神奇的事情:技嘉的主板LOGO大小跟开机的大雕图的尺寸相关,我把大雕图换成了4K,开机的苹果LOGO也变成4K了。。。。神奇

 

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

 

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

 

UsePicker: 是否使用OC的开机启动盘选项,我们选YES。之后可能会有新的第三方主题支持的话,我们需要选NO。

 

2.5.3 Config—–Misc—–Debug

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

 

 

2.5.4 Config—–Misc—–Entries

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

 

2.5.5 Config—–Misc—–Security

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

ExposeSensitiveData: 因为要使用到nvram,这个数值我们必须填3。

HaltLevel: 按默认设置即可。

RequireSignature: 黑苹果的vault加密方式,我们不需要这个功能,选择NO

RequireVault: 是否开启黑苹果加密,不需要,选NO

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

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

7C436110-AB2A-4BBB-A880-FE41995C9F82
                 boot-args                String        Slide=1 darkwake=0 -v //slide=1表示从第一组内存开始连续注入;darkwake=0代表一键唤醒机器并偏好设置中节能选项的小憩功能。如果你要用小憩功能请填8; -v是跑代码,在没装好稳定的黑果前我建议加上,方便定位错误,弄完后再删除-v
                 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>  //语言设置相关,记得改成这个,这个是中文

 

 

2.6.2 Config—–NVRAM—–Block

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

 

2.6.3 Config—–NVRAM—–LegacyEnable

如果你的主板不支持原生NVRAM,请一定要选择YES! 如果你的主板是z370/x299/c422/z270等支持原生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.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激活状态。

 

2.7.4 Config—–PlatformInfo—–剩余部分

UpdateDataHub:选择YES

 

UpdateNVRAM:选择YES

 

UpdateSMBIOS:选择YES

 

UpdateSMBIOSMode:选择Create

 

UEFI:UEFI相关的补丁以及设置项。

 

ConnectDrivers:是否加载所有UEFI补丁,这里我们选YES

 

2.8 Config—-UEFI

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

 

2.8.1 Config—–UEFI—-ConnectDrivers

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

 

2.8.2 Config—–UEFI—-Drivers

把我们之前放在OC/EFI/Drivers下面的驱动一一填上,这里我们也注意一下填入的顺序:

Drivers
     item0          String       ApfsDriverLoader.efi
     ........................    MemoryAllocation.efi
     ........................    FwRuntimeServices.efi
     ........................    VBoxHfs.efi
     ........................    UsbKbDxe.efi

 

2.8.3 Config—–UEFI—-Input

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

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

 

2.8.4 Config—–UEFI—-Protocols

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

 

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

 

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

 

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

 

AppleUserInterfaceTheme: 似乎是支持主题了?没看懂,选择NO。

 

ConsoleControl: 主机控制界面,我们选择YES。

 

DataHub:重建datahub,这里我们选NO。

 

DeviceProperties: 虚拟机需要,我们选NO。

 

FirmwareVolume: VAULT相关项,我们选NO。

 

HashServices: VAULT相关项,我们选NO。

 

UnicodeCollation: 旧的主板需要,我们选NO。

 

 

2.8.5 Config—–UEFI—-Quirks

AvoidHighAlloc: 回避高位内存寻址,我们已经用了slide了,这里选No吧。

 

ClearScreenOnModeSwitch: 好像是新的选项,暂时不知道干嘛的,选No吧。

 

ExitBootServicesDelay:旧主板需要给予主板退出时间(单位为微秒),较新的主板直接填0。旧的主板比如Z87pro,填3000000-5000000

 

IgnoreInvalidFlexRatio:如果你没有在bios中解锁CFG,一定要选YES。

 

IgnoreTextInGraphics: 一些固件会同时输出文字和视频信息导致花屏,如果出现这种情况试试选NO,我这里选YES。

 

ProvideConsoleGop:在选择系统画面前,你可能看到一些你config配置错误的信息,你可以根据这信息调整自己的配置,也可以选择YES忽略,我选择YES。

 

ReconnectOnResChange: 如果你遇到开机直到登录界面之前一直是黑屏,请试试选择YES。

 

ReleaseUsbOwnership:大部分的主板都有自动释放USB所有权的功能,我们选NO。如果你开机键盘鼠标卡死了,或者USB失灵,试试选Yes。

 

ReplaceTabWithSpace:看不懂,选no。

 

RequestBootVarRouting: 如果你要使用”启动磁盘” 选项,你需要选择YES,这里选择YES。

 

SanitiseClearScreen: 清理屏幕分辨率,选择YES。

 

2.9 小节

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

 

 

3.0 OpenCore 完善

3.1 模拟NVRAM

对OC而言,NVRAM是非常核心的一环,不管是原生还是模拟的。如果你是原生nvram的主板(z270/z370/x299/c422),请不必理会这章节。这张的主要内容为生成模拟的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的用户,直接在偏好设置—启动磁盘中选定你希望设置为默认启动的磁盘即可,不必往下看浪费时间!

非原生nvram用户必须完成我之前要求生成的nvram.plist。

这章我分成两部分,第一部分是让OC只扫描我们的MAC盘,第二部分是在开机选项中将win等其他系统排在mac后面。

 

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才能出现。虽然说这项功能没啥鸟用,但对于强迫者而言,少一个一定很难受吧。如果你是笔记本,不需要看这章,白果笔记本本身就没有。

 

写吐了,花里胡哨的东西以后再写了。。。

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供电

我们在使用过程中可能会遇到睡眠唤醒后,插着的U盘掉了,要重新拔插才能识别,这是因为我们还没对USB的供电进行修复。我们如何辨别USB供电正不正常,你可以比较下面两张图,显然第二张是正确的。

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

我们只需要一个简单的KEXT补丁来加载USB电源控制

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相关问题

一些华硕主板的用户反馈给我说,他们的黑苹果在OC下总是重启后BIOS重置或者需要按F1跳过bios的安全模式,或者因RTC出现睡眠问题等等。其实关于这样的一些情况,主要是没有原生的APPLE RTC,这个我已经在章节2.4.4中解释过了。但是还有一个问题,就是在之前的教程里我提供了一个rtc fix的重命名补丁(见2.1.3章节)。对OC而言,重命名就是比较忌讳的,而且我也非常讨厌重命名,所以这个不能忍啊!

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

调整RTC可以分成两种情况,一种是你的ACPI表中具有AWAC部件,第二种情况是你的ACPI表中不具备AWAC。如何去确定你的ACPI中有AWAC,打开IO Registry Explorer,我们查找AppleACPIEventController栏目下有没有AWAC这个部件,下面截图中是有AWAC这种情况:

根据是否有AWAC,我们可以分两种情况来修复RTC,有AWAC的情况下修复RTC 以及 没有AWAC的情况下修复RTC。

3.8.1  存在AWAC的情况下修复RTC

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

SSDT-RTC_Y-AWAC_N.aml

 

3.8.2  不存在AWAC的情况下修复RTC

其实这种情况下,rtc一般是没有问题的,但是强迫症啊,白果的rtc叫做artc,那我们就禁用一下rtc然后再仿冒一个叫artc的部件吧。

加载此ssdt并在config中添加它,重启后打开IO Registry Explorer,你会看到rtc部件已经没有了,多了一个artc,这个是白果的描述方式,凑个热闹吧。如果你在config中添加了rtc fix补丁,也可以删掉了(似乎没有awac都不需要rtc fix补丁)。

SSDT-ARTC.aml

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做了优化,可能实际没我这么夸张)如图:

 

什么?效率还是不够高?大哥是开影视工作室的吗!?好吧,请看“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.10.5  10.15.1中发现的无法自动睡眠问题

最近发现10.15.1必须开启小憩才能自动进入睡眠。但开启小憩意味着电脑会隔1个小时左右时间醒一次,来收发邮件等工作,再继续睡。如果你不喜欢这样的话,试试加载SSDT-SBUS.aml。至于原理是啥,我也不懂。

 

3.11 中高端类消费级CPU的变频优化

需要CFG解锁

 

 

 

 

 

 

我们的QQ群838739020非常活跃,让我可以看到很多奇奇怪怪的问题,在大家的探讨下找到解决方案。考虑到QQ群的聊天记录杂乱无章,我把一些精华的东西记录在这里。如果你碰到奇奇怪怪的问题,可以在此贴下留言,或者加QQ群。

2019-10月

10.15后我会把精力放在opencore上,之后会写一个比较详细的opencore配置教程。

 

Q1:如何选择自己的SMBIOS机型?

A: 8代9代cpu主要是选iMac 19,1 或者iMac Pro 1,1这两个机型。有核显选19,1,无核显选择1,1。z系列主板尽可能买带核显的cpu,x299, c422,c621那些没办法选1,1。对于z系列来说,有核显是相当重要的,这关乎你后面的核显变频,cpu变频等,相差不了多少钱,但体验会相差非常大!白果没核显能高效是因为有t2芯片,黑果没t2芯片需要核显来支撑。

 

Q2:各种原因导致的睡了即醒。

A: 这个问题其实已经在9月回答过了,我也一直困扰在这里,希望能做出更好的ssdt补丁,可惜在请教过权威之后,并没有找到更好的办法,我把一个比较精简的补丁放上:

  • 放入这个ssdt: SSDT-GPRW.aml
  • hotpatch中加入如下更名:

 

Comment:GPRW to XPRW 
Find:47505257 02 
Replace:58505257 02

 

 

 

 

 

2019-09月archived

 

Q1:为什么我的系统只能用usb2.0?

A:自行制作USB补丁,或者加入usb limit patch+usbinjectall,10.14.6下的补丁为:

Comment: USB port limit patch #1 10.14.x modify by DalianSky(credit ydeng)

Name: com.apple.iokit.IOUSBHostFamily

Find: 83FB0F0F

Replace: 83FB3F0F

MatchOS: 10.14.6

 

Comment: USB Port limit patch #2 10.14.x modify by penghubingzhou

Name: com.apple.driver.usb.AppleUSBXHCI

Find: 4183FF0F

Replace: 4183FF3F

MatchOS: 10.14.6

 

[/cc]

 

 

Q2:Aptiomemoryfix通过帖子仍然卡+号。

A: 根据群里的讨论以及我自己的研究,不同品牌的主板在加载内存的方式上有一些区别。技嘉等主板在加载内存时会将不同高度的内存注入到pcie设备中,而不是连续性地用完一组内存。当你的设备过多时,你会发现计算出来的slide值一个也没有用,因为每个分段的内存都已经被设备占用了。现在比较好的解决办法是通过补丁来确保内存的第一个512兆内存留给系统内核,缓存等。。这个补丁仍然在测试中,请把它与aptiomemoryfix放在一起,并且测试增加slide=1或者不填。

 

A2:根据群友反馈,技嘉主板在bios中设置核显dvmt为32M,解锁cfg,关闭kernelpm,slide=1即可使用aptiomemoryfix了,不需要这个补丁。

MemoryAllocation.efi

 

 

Q3:雷电卡是否一定需要5pin雷电接口?

A:技嘉的titan ridge 不需要,请短接5pin口的第三针和第五针。

 

Q4:雷电卡始终无法识别。

A: 确定你的卡插在了PCH位置,BIOS按照设置,并且需要在UEFI启动的WIN下驱动雷电卡,或者开机之前就插一个USB 3.0的type-c的U盘。

 

Q5:雷电卡导致系统无法进入睡眠。

A:制作USB补丁,把两个雷电口设置为internal(内建)。若仍然无法进入睡眠,比较好的方式是添加如下ACPI补丁阻断USB(唤醒只能按开机键,当然电脑如果有除了XHC以外的USB控制器,可以把键鼠插在另一个控制器上,比如我就把鼠标键盘插在了LG ULTRAFINE 4K的几个USB C口上),此补丁由群友 沙加 制作:

睡眠秒醒补丁

 

 

Q6:现在而言,休眠(hibernation)可以实现吗?

A:不能。

 

Q7:睡眠变重启,关机变重启。

A:请参照博客中另一篇关于此问题的文章,核心是打上nvram.plist,在EFI的根目录出现。

 

Q8:使用FCPX预览卡。

A:根据我们群里的讨论,可以通过核显变频、独显加速、去掉whatevergreen的方式,让FCPX更高效地工作,步骤如下:

  • BIOS开启核显
  • 打开config.plist, 去掉所有跟显卡相关的boot arguments,比如我的boot arguments只留下了如图2个
  • 在config.plist中加入核显的相关补丁,8代9代可以用我的代码,如图:
  • config.plist—-Graphics—–勾选inject ATI
  • config.plist—-Kernel and Kext patches—-kext to patch中加入如下代码:
Name:AppleGraphicsDevicePolicy 
Find:626F6172 642D6964 
Replace:626F6172 642D6978

 

  • config.plist—-ACPI 加入如下两条:
  • 删除whatevergreen

注意,开机会有紫条。

Q9:关于核显变频。

A:如Q8,至于如何拉高HWP,让核显暴力工作,以后补上

 

Q10:在Mojave系统下能用的EFI却无法升级Catalina。

A: 请在config.plist的ACPI中添加EC补丁:

Comment:Rename EC0 to EC 
Find:4543305F 
Replace:45435F5F

 

 

Q11:关于万兆网卡82599系列芯片组(t520,t540 etc.,)在Mac下的驱动。

A: https://forums.macrumors.com/threads/modify-retail-intel-10gbe-nics-to-use-small-tree-macos-drivers.1968456/

 

Q12:Mac与Win时间不同步,蓝牙设备连接Mac后无法连接Win。

A:打开hackintool, 工具,点击如下两个图标,生成的文件请在windows下注册即可。

 

 

Q13:我该买什么样的m.2硬盘?

A:          旗舰: Samsung 970pro

              中端: 西数SN750;Samsung 970 EVO Plus(需要更新固件);Samsung SM961

              低端:阿斯加特Asgards全系列,海康威视C2000

              特别提醒:别买intel的硬盘,别买pm981

 

Q14:睡眠唤醒后一些APP(e.g.chrome)无响应。

A: ACPI中改名HECI成IMEI。

 

Q15:我的电脑无法完全显示主板风扇转速、GPU温度、GPU风扇转速。

A:需要下载bitbar,注意,不要下载distro版本;确保已经安装xcode。

具体步骤如下:

  • 把bitbar放入applications中,
  • 把我写好的sh文件放到一个安全的位置,比如documents/script,sh文件下载
  • 打开terminal(终端),为sh文件添加权限:

    chmod +x /Users/xjn/Documents/script/GPU_Status+fan_speed.2s.sh

  • 在终端中安装iStats(注意大小写!):

    sudo gem install iStats

  • 将bitbar的sh目录指定到documents/script
  • 在软件中refresh all一下

在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吧。

 

最近组装了一台Z390,花了几天时间,已经完美黑苹果了,记录一下其中的过程。当然,我不会把整个EFI分享出来,只会提供重要的文件,我希望这篇文章是一篇教学帖,而不是分享帖,嘻嘻嘻。

如果你需要更多帮助,加QQ群:838739020

I recently bought a hackintosh with Gigabyte Z390 motherboard, and now it is perfect. I am glad to share the process of hackintoshing, but of course will not share the EFI, I hope this article cloud be a lecture of hackintosh for you, rather than merely sharing the outcome. This article provides Mandarin and English versions, also some important kexts, tools and ssdts are attached.

 

Outcomes/成果展示

Qnap QNA-T310G1T Thunderbolt 3 to 10GbE Adapter热拔插/hot-pluginng

 

UltraFine 4K 显示器通过雷电USB CONTROLLER原生控制音频、亮度/ controlling audio and brightness of UltraFine 4K via the thunderbolt USB controller.

Downloads/下载

 

Appreciation/感谢 

感谢以下四位作者对我的启发/ Many thanks to these hackintoshers’ helps:

CaseySJ

LeleTuratti

RehabMan

kgp

Configurations/配置

  • Motherboard/主板: Gigabyte Z390 Elite
  • External Hard Drive/硬盘: Samsung 970 Pro M.2 NVMe SSD
  • CPU: I7-9700K  
  • Graphic Card/显卡: Sapphire RX580 8G D5 OC
  • Wireless Card/网卡: BCM943602CS 3-Antenna
  • RAM/内存: ADATA 16G DDR4 3000MHz X2 (OC to 3200MHz)
  • Tower Case/机箱: SKTC Q5
  • Others/其他: Gigabyte GC-Titan Ridge Thunderbolt 3 Card / Qnap QNA-T310G1T Thunderbolt 3 to 10GbE Adapter
  • Monitor/显示器: LG Ultrafine 4K & KOIOS 2418U (Daisy Chain Supported/菊花链支持)

 

Functions/功能

  • Sleep&Wake/睡眠唤醒: OK/正常,蓝牙键鼠唤醒需要按电源键
  • Bluetooth/蓝牙: OK/免驱,正常
  • WIFI: OK/免驱,正常
  • wired Internet有线网卡: OK/正常
  • Audio声卡:OK/ 正常
  • CPU Frequency/变频: OK/正常
  • Thunderbolt Card/雷电卡: OK, hotplugin supported/正常,可热拔插
  • Graphic card/显卡: OK, H264 & HEVC Supported/硬解正常
  • Hand Off: OK/正常

 

English Version

E1.Before Installation

Honestly I don’t want to duplicate others’ works since CaseySJ already provided a very comprehensive guide for Z390. However, the guy’s works are based on Mac, which means you need a Mac to config everything before installation. Hence I provide you a guide for windows users to make configurations before installation; if you only have a windows on hands, this is a suitable guide for you.

If you have read CaseySJ’s article, at this stage you should write the Mojave image to a 8GB USB flash disk through UniBeast under Mac OS environment. As you may not have a Mac on hands that restrict you to run UniBeast, I therefore attach the semi-finalised Mojave Image for you. This image integrates  drivers64UEFI, KEXTS, and a semi-finalised config.plist that allow you to install Mojave.

Download the image of Mojave and Etcher; plugin your USB flash disk, and open Etcher, the software will automatically detect your flash disk, select the image and flash it to the disk.

 

Now you have to config your BIOS settings for the installation.Boot your rug and quickly press DEL or F2 to enter the BIOS. settings are listed below: 

  • M.I.T

            ———-Advance Memory Profile: Profile 1

  • BIOS

            ———-Windows 8/10 Features → Other OS

            ———-CSM Support → Disabled

            ———-Secure Boot → Disabled

  • Peripherals

            ———-Intel Platform Trust Technology (PTT) → Disabled

            ———-Thunderbolt(TM) Configuration(need to be configured if you have a thunderbolt card)

                    ————-TBT Vt-d Base Security → Disabled

                    ————-Thunderbolt Boot Support → Disabled

                    ————-Security Level → No Security

                    ————-Discrete Thunderbolt Configuration

                                     ———Thunderbolt USB Support → Enabled

                                     ———GPIO3 Force Pwr → Enabled

            ———-USB Configuration

                    ————-Legacy USB Support → Enabled

                    ————-XHCI Hand-off → Enabled

            ———-Network Stack Configuration

                    ————-Network Stack → Disabled

  • Chipset

            ———-Vt-d → Disabled

            ———-Internal Graphics → Enabled

            ———-Audio Controller → Enabled

            ———-Above 4G Decoding → Enabled

  • Power

            ———-ErP → Disabled

            ———-RC6 (Render Standby) → Enabled

 

After BIOS settings, boot your machine through the USB flash drive, install Mojave, and you may encounter 2-3 times restarts, which is normal.

Enter the Mojave system and mount the USB flash disk & your system disk’s EFI via Hackintool.

 

you should: move the EFI folder under USB disk to the system’s EFI folder. You could see these folders under system’s EFI (APPLE folder is generated by the system itself). Now the USB flash disk is of no use, and we could drive essential hardwares.

 

 

E2. Hardware

I hope you could read CaseySJ‘s article to understand those sections in the config.plist. there is a little innovation that I active the graphic card’s H264 & HEVC through AGPMInjector, which have no need to inject other codes, if you are curious about it, read me

E2.1 Audio

1st: go to https://github.com/acidanthera/AppleALC/releases, download the latest applealc.kext, and move it to efi/clover/kexts/other/

2nd: find your audio card model and layout ID from https://github.com/acidanthera/AppleALC/tree/master/Resources. for example, mine is ALC1220, the layout id could be 1,11,15,13,16….

3rd: try the layout ID in the red box until your audio works properly, and don’t forget to tick the ResetHDA. 

 

E2.2 Thunderbolt Card

I’ve read a lot from Tonymac about the thunderbolt card, unfortunately there is no one to provide a systematic guide for fixing the thunderbolt card’s hot-pluging issue. This section majorly adopts LeleTuratti and kgp‘s experiments for fixing it (this means the thunderbolt card is working properly without any patches, but hot-pluging function should be fixed through SSDT).

 

The first step is to install a windows 10, and boot it through UEFI, install the Thunderbolt card’s drive downloaded from the vender’s official website. This step is essential, because the card cannot be recognised without windows 10, after the installation, you could see the card is recognisable in BIOS:

 

You could download a trial windows from:

ed2k://|file|en_windows_10_multiple_editions_version_1511_updated_feb_2016_x64_dvd_8379634.iso|4414115840|E0459993F4B64B6690C0D3309E47AD32|/

Write the iso to your USB disk via etcher, after activating the thunderbolt card, the windows is of no use.

 

As soon as the thunderbolt card is recognised  in BIOS, we could enter the MAC OS to fix hot-plugining through SSDT. You should prepare these tools and files to generate your own thunderbolt card SSDT:

IORegistryExplorer

RehabMan-MaciASL-2018-0507.zip

iasl.zip 

thunderbolt-v2

X-code, available at app store

 

Extract MaciASL, iasl and thunderbolt-v2, and move MaciASL and IORegistryExplorer to Applications; move iasl, thunderbolt.aml and SSDT-DTPG.aml to Desktop. Finally make sure you’ve agree the term&conditions of X-code.

placing the files and tools in the right place, when shall run the following codes through Terminal.

cd ~/Desktop 
sudo cp iasl /usr/bin 
mkdir ~/Projects 
cd ~/Projects 
git clone https://github.com/RehabMan/Intel-iasl.git iasl.git 
cd iasl.git 
make 
sudo make install 
sudo cp /usr/bin/iasl /Applications/MaciASL.app/Contents/MacOS/iasl62

 

 

 

after inputing these codes, we need to covert thunderbolt.aml to thunderbolt.dsl, allowing us to edit it:

iasl -da -dl ~/Desktop/thunderbolt.aml

 

Now you need to open thunderbolt.dsl through MaciASL, and note the texts that I highlighted in the pic.

Open IORegistryExplorer, text “thunder” in the right front corner, you could see your thunderbolt card’s actual location. For instance, mine is at PCI0—-RP21—PXSX:

then, as an example, i modify the texts in thunderbolt.dsl according to the location that I found through IORegistryExplorer:

 

Save the file and name it as thunderbolt.aml, note the file format MUST BE  ACPI Machine Language Binary. move the edited thunderbolt.aml, and SSDT-DTPG.aml to EFI/Clover/ACPI/Patched. restart the machine and the thunderbolt card’s hot-pluging function should work perfectly.

PS: other motherboards might be not suitable from my thunderbolt.aml, you could find various thunderbolt.aml from LeleTuratti and kgp’s github. some are suitable for Z370, and some for x299, just have a try. Again, thanks for their contributions.

 

E2.3 BCM943602CS and USB ports patches

The method to make BCM943602CS internal in order to ensure its sleep and wake-up function has been shared in various way. HOWEVER, I FOUND THAT THERE IS NO SIMPLE WAY, THE VIDEOS ON YOUTUBE ABOUT USB PATCH ARE SO COMPLEX AND OUT OF TIME! I HAVE TO MAKE A SIMPLE GUIDE FOR YOU, I THOUGH I COULD SAVE SOME TIME INITIALLY…..

 

before patching the usb ports, you should modify your config.plist via clover configurator, add the three usb port patches like the screenshot:

NOTE, THE PATCH IS UPDATED IN 10.15BETA1, JUST SEARCH THE NEW PATCH.

1st: open hackintool and turn to USB section, you could see all your usb ports:

 

you could see three different types of ports:

  • HSxx: this is usb 2.0 port
  • SSxx: this is usb 3 port
  • SSPxx: this is thunderbolt port

Since USB 3 has a downward compatibility to usb 2, therefore, a USB 3 port could be usb 2.0 but also usb 3. For instance, HS08 and SS08 port is a group inputed through a same port, with a blue or red outlook normally; HS10, for me is a USB2.0 port, because it connected with 9 pin cable on the motherboard, and most USB 2.0 often coloured with black outlook.

 

2nd: you should use a usb 2.0 device (e.g usb2 flash disk, mouse, keyboard…etc.) to connect every usb port one by one, and you will find the ports that has been connected turned green. this means the HS ports are existed.

Then you should use a usb 3.0 device (e.g usb 3 flash disk etc.) to connect every usb port one by one ,and you find those existed SS ports turned green. if you have the thunderbolt card, you also need to plug something like type-c usb flash disk in the ports.

 

3rd: del those ports that not turned green through clicking “➖”.

define the connector correctly.

Example 1: HS03 is a group member of SS03, hence, it should be USB 3, then defining bot HS03 and SS03 as USB 3. 

Example 2: HS13 is single-handedly existed without SS13, this port should be defined as USB 2.

Example 3: some ports are consistently connected with devices such as bluetooth, USB receivers, USB keyboards and mice, these ports should be defined as internal.

NOTE, BCM943602CS SHOULD BE CONNECTED DIRECTLY ON THE XHC CONTROLLER! AS LONG AS YOU CAN SEE THE “BLUETOOTH USB HOST CONTROLLER” FROM HACKINTOOL (AS SHOWN IN THE SCREENSHOT), IT MEANS YOUR CARD IS CONNECTED CORRECTLY.  I GAVE UP THE USB 3.0 PORTS IN THE FRONT OF THE CASE IN ORDER TO MAKE SURE THE CARD IS ABLE TO CONNECT TO XHC CONTROLLER CORRECTLY, AND I BOUGHT THIS CABLE TO CONVER 2.0 TO 3.0:

https://www.ebay.co.uk/itm/20Pin-19Pin-USB-3-0-Female-To-9-Pin-USB-2-0-Male-Motherboard-Cable-Adapter-Cord/254259663988?hash=item3b330e9474:g:o4oAAOSwj5Fc~l0J&frcectupt=true

IF YOU DONT DO THIS, YOUR MAC CANNOT SLEEP

 

4th: click the export button, you can see some *.aml and a usbports.kext on the desk. just move all the generated aml to EFI/Clover/ACPI/Patched. Usbports.kext is of no use, just del it.

 

OK, the guide is over, hope you could learn a lot from it. thanks

 

 

中文版

C1.安装前的准备

这里主要讲解的是BIOS以及Config.plist的修改。

我们先对BIOS进行设置,我的BIOS是F7版本,请确保版本正确,官网BIOS地址点此直达

  • M.I.T
  • ———-Advance Memory Profile:Profile 1
  • BIOS

            ———-Windows 8/10 Features → Other OS

            ———-CSM Support → Disabled

            ———-Secure Boot → Disabled

  • Peripherals

            ———-Intel Platform Trust Technology (PTT) → Disabled

            ———-Thunderbolt(TM) Configuration(如果你有雷电卡的话,需要设置)

                    ————-TBT Vt-d Base Security → Disabled

                    ————-Thunderbolt Boot Support → Disabled

                    ————-Security Level → No Security

                    ————-Discrete Thunderbolt Configuration

                                     ———Thunderbolt USB Support → Enabled

                                     ———GPIO3 Force Pwr → Enabled

            ———-USB Configuration

                    ————-Legacy USB Support → Enabled

                    ————-XHCI Hand-off → Enabled

            ———-Network Stack Configuration

                    ————-Network Stack → Disabled

  • Chipset

            ———-Vt-d → Disabled

            ———-Internal Graphics → Enabled

            ———-Audio Controller → Enabled

            ———-Above 4G Decoding → Enabled

  • Power

            ———-ErP → Disabled

            ———-RC6 (Render Standby) → Enabled

 

保存你的BIOS哦!因为后面可能要适当调整你的设备接口位置,主板会自动重置BIOS,最好将配置保存在fat32格式的U盘里,或者这个设置可以挪到最后,以免浪费时间,嘻嘻嘻。

C1.1 Config.plist修改

Config.plist文件位于EFI/Clover/下,你可以通过Clover Configurator进行修改。

首先我们到ACPI—Patches这个栏目中,我们添加这五项内容。

  • XHCI两项是帮助激活Intel的XHC控制器的;
  • EHC两项是帮助激活USB口的,当然之后还需要更多的修改来完全激活它;

 

  • 最后,如果你的硬盘是通过SATA连接电脑的,你需要添加下面这项来激活。

 

之后,我们跳到fix这一栏目,勾选和填入以下内容。

 

  • FixHeaders是帮助我们避免panic的,当然在Drop table里的MATS也是这个功能,提供第二层保护。
  • FixHPET 防止电源管理引起的panic的,这主要在老主板里会发生,Z390芯片组特别一点,还是勾上吧。
  • FixIPIC 帮助电源键工作的,可以勾上试试。
  • FixRTC 防止RTC时钟重置。
  • FixTMR 配合老设备的,可以不勾选,勾了先试试,不重要。
  • Plugin Type是启用原生电源管理的,但因白苹果目前为止并没有使用过Z390芯片组,原生电源管理不一定能用,建议是在做完所有工作后,再去勾选这个选项,避免不必要的问题。如果你的芯片组是白苹果常用的,大胆勾选。

我们现在转到Boot列表,并填入以下内容:

  • dart=0  是解决如果你在BIOS开启了VT-d而导致无法进入系统的,我们之前在BIOS里已经关闭了VT-d,这里添加只是为了双重保险。

 

  • slide=0 是帮助系统解决内存定位的问题,这里必须填入。

 

  • 两条关于shiki的代码不用再加了,确保你的系统为10.14.5,不用再加

 

  • darkwake=0 这是帮助我们使用MAC在睡眠时候的键鼠一键唤醒功能的,当然蓝牙键鼠我测试还是不行,需要按电源键唤醒,这我可能会在之后的更新中解决。

 

  • -v 我建议各位在没安装好黑苹果前,都添加-v,帮助我们定位错误,安装完成后再去除。

现在我们转到Devices栏目里,勾选红框中的内容,帮助我们开启USB,Audio—Inject选NO。

 

我们到Kernel and Kext Patches里,勾选红框中内容,并且在kext to patch中填入图示内容。

  • AppleRTC,顾名思义,用苹果的RTC
  • AppleIntelCPUPM,跟电源管理相关,我勾选后无限重启,不能勾。
  • kernelPM,电源管理相关,我是勾了 (这两个跟电源有关,小心设置,芯片组不支持就别勾了!勾上去试试,不行取消!我测试后发现我只能勾选KernelPM)
  • USB port limit patch 1-4是解除15个USB限制的。
  • 最后一个是帮我们开启SSD的TRIM支持。

 

转到Rt variables,填入红框中的内容,随机生成ROM,在MLB中填入你之后生成的Board serial number。其中Booterconfig& CsrActiveConfig是关闭SIP保护的。

 

转到SMBIOS里,选择右下角的选择键,勾选iMac18,3后,自行生成新的序列号和UUID,如果需要洗白/伪洗白黑苹果,自行搜索相关教程。 在10.14.5系统中,我推荐大家选择iMacPro1,1

最后,在system Paramenters中,随机生成UUID,在inject kexts中填写yes,并勾选inject system ID。

至此,我们基本改完了Config.plist。

 

 

C1.2 Drivers64UEFI补丁

在这里我放入了下列补丁,你需要把这些补丁放入EFI/Clover/driver64UEFI/ 我已经打包在文章最后了,我会一一解释:

  • ApfsDriverLoader-64.efi: 如果你的硬盘是apfs格式的,需要这个补丁来驱动。
  • EmuVariableUefi-64.efi: 这个是帮助模拟NVRAM的,因为我们的Z390芯片组白苹果并没有用到,需要这个补丁来帮我们模拟,如果你的芯片组是白苹果使用过的,你不需要这个补丁。
  • FSInject-64.efi: 是帮助我们加载第三方驱动的,(这个已经不需要了,自行删除)
  • HFSPlus.efi: 如果你的EFI硬盘是HFS格式的,需要这个补丁,但我们一般都是fat32的,所以这个补丁不是必须的
  • OsxAptioFix2Drv-free2000.efi:是引导启动的,对z390来说必须用这个。一些其他的主板可能需要的是OsxAptioFixDrv.efi或者OsxAptioFix2Drv-64.efi,视情况而定!

 

 

C1.3 Kexts补丁

我们需要将一些kexts放入EFI/Clover/Kexts/other 里,帮助我们驱动硬件,我也在文章最后提供了这些kexts。

  • AppleALC.kext 帮助我们驱动声卡
  • FakeSMC.kext &FakeSMC_*.kext 是HWmonitor的传感插件
  • IntelMausiEthernet.kext  驱动Z390上的intel有线网卡,如果你是螃蟹卡之类的,需要下载其他的网卡驱动
  • Lilu.kext  使用下面两个补丁的依赖
  • Usbinjectall.kext 开启usb的
  • whatevergreen.kext 驱动显卡的
  •  

至此,我们已经做完了准备工作,这样的一个EFI可以帮助你开机运行苹果系统。

C2. 驱动篇

在做准备工作的时候,其实我们已经把大部分硬件都驱动了,现在需要微调来帮助这些硬件更好的工作。

 

 

C2.1 声卡

Z390的声卡是ALC1220的,我们需要使用Clover Configurator打开Config.plist来驱动它。我们转到Devices—properties里,填入红框内的内容。

 

  • PciRoot(0x0)/Pci(0x1f,0x3):这个是你声卡的PCI路径,这个不同的主板可能不同,需要自行寻找,我会在之后更新寻找方法

 

  • AAPL,slot-name:以及model: 这两个是到时候你会在“关于本机”——“系统报告”—-“PCI”中显示的名字,你可以随便改

 

  • device_type: 是告诉系统驱动的这个设备是啥,必须按我这个填写

 

  • layout-id: 这里要注意一下,咱们ALC1220的layoutID是16,16的16进制是10,那我们填写的ID就是10000000;比如ID是28,你的16进制就是1C,这里就要填写:1C000000,以此类推。不同声卡型号、layoutID都不同,甚至没有,我们需要自己去寻找甚至编译,此教程不会写这个

 

 

C2.2 显卡

显卡的驱动有两种方式,一种是核显和独显一起用,一种是只用独显。我提供两种驱动方式供你选择,这两种方式谁好谁坏,视你的需求而定。当然如果你只有核显,我们这里不做讨论,请搜索相关教程。

 

C2.2.1 只驱动独显

  • 请确保你的系统已经设置为iMac pro 1,1:

 

 

 

  • 打开config.plist,确保勾选如下两个选项:

  • 重启即可

 

C2.2.2 核显独显一起驱动

  • 确保你的机型是iMac19,1:

 

  • 确保此选项卡下的所有选项为空:

 

  • 确保在此选项卡中点击方框,并填写箭头指示内容:

 

 

  • 重启即可

 

C2.3 无线网卡BCM943602CS驱动

此网卡在没有进行设置的时候是无法睡眠的,并且唤醒后会掉速。这里你需要执行两个设置。

  • 在系统偏好设置—–节能中,取消勾选“唤醒以供网络访问”,来解决唤醒后掉速的问题。
  • 打USB驱动补丁,将网卡连接的USB端口改成内建,这里我不加以说明了,但是要注意的是,这张网卡的USB线必须接入XHC的总线中,而不是独立的USB2控线中才能睡眠。怎么判断这根USB在哪个总线下?观察途中,蓝牙USB主机控制器是单独列在USB3.1的总线下,还是在USB2.0HUB中。我为此放弃了主机前端的3.0插口,改成2.0了,把蓝牙的USB线通过9针转19针插头,插入USB3.1的控线中。

 

 

 

C2.4 重中之重,雷电卡的驱动!

好吧!!我收到很多信息关于雷电卡的!是我没仔细写!这次重新改,认真写!求原谅!

我想每一篇教程都应该有自己的亮点,我的就是这个了,此雷电驱动解决了雷电卡的热拔插问题。翻阅了很多外国资料,其实并没有一个帖子系统讲解雷电卡的驱动,很多都是论坛里零零碎碎的资料,我自己也在TONYMAC上翻了近3000多页的帖子总结出来的。我的雷电卡是技嘉的Titan ridge用来匹配我的Z390。因为每一块主板对雷电卡的配适性不同,大家购买时需要注意再注意(似乎技嘉和华硕可以互通,不确定)!我之前买了一块华擎的怎么也认不出,还好卖家还是让我退货了。 在插入雷电卡后,你会发现BIOS并没有认出这张titan雷电卡,难道是产品问题吗?不是的,这张雷电卡必须安装WINDOWS,并用UEFI启动WINDOWS 10(必须),再在WINDOWS 10下下载技嘉官网的雷电卡驱动。


WINDOWS 10下,Titan ridge的驱动地址是:https://www.gigabyte.com/Motherboard/GC-TITAN-RIDGE-rev-10#support-dl

别的品牌的驱动请去各个品牌官网里搜索!一定会有的!


驱动完成后,可以在设备管理器里看到雷电卡!

好啦,重启进入BIOS界面,你会发现雷电卡亮了!(当然这只是我的技嘉雷电卡需要在WIN下驱动,别的品牌的卡我并没有测试过,请自行关注BIOS)。



开开心心进入MAC系统,我们开始想办法来让雷电卡支持热启动!

下载我在文章最后提供的Thunderbolt.aml文件。这份文件可以配适iMacPro1,1以及iMac18,3,我推荐将你的系统改为iMacPro1,1。如果你的主板是X99或者X299,你可以去KGP的github中下载它的SSDT-X299-TB3HP.aml/SSDT-X99-TB3HP.aml文件。他的github地址https://github.com/KGP

 

首先我们需要把aml文件转换成可编译的dsl文件,并且下载相关的应用程序:

 

 

  • 在App Store中下载Xcode并打开,同意使用条款。

 

  • 下载我文章最后的关于雷电3的AML文件,或者你的主板是X99/X299,去KGP的github下载他提供的雷电3的AML文件。

 

  • 现在假设你的iasl.zip、thunderbolt.aml文件已经放在download目录,MaciASL文件已经移到applications中,我们需要通过terminal(终端)执行以下命令:
cd ~/Downloads 
unzip iasl.zip 
sudo cp iasl /usr/bin 
mkdir ~/Projects 
cd ~/Projects 
git clone https://github.com/RehabMan/Intel-iasl.git iasl.git 
cd iasl.git 
make 
sudo make install 
sudo cp /usr/bin/iasl /Applications/MaciASL.app/Contents/MacOS/iasl62

 

这里我们已经编译好了,现在需要下载的aml转换成可编译模式,我们再输入以下代码:

iasl -da -dl ~/Downloads/Thunderbolt.aml

 

 

2019-05-27注:因为我购买了新款LG ULTRAFINE 4K,我发现之前的thunderbolt.aml并不能很好的驱动雷电的USB控制器,我提供了新的thunderbolt-v2.dsl,在帖子最下面下载,改法还是一样的。此包中同样包括一个“SSDT-DTPG.aml”, 这个已经改好了,不需要任何更改。

这时相同目录下会产生一个同名的DSL文件,我们需要修改这个文件来驱动雷电卡。

打开thunderbolt.dsl,同样的,记录如下数值

打开IORegistryExplorer,搜索thunder,我们找到了雷电卡的位置,在PCI0—-RP21—PXSX这个位置,并且产商和设备ID分别是8086和15eb。

然后把PCI0—-RP21—PXSX替换刚才thunderbolt.dsl红框中的内容:

我们点击程序的右上角files—save as–thunderbolt.aml,file format 一定要选ACPI Machine Language Binary,并将文件保存到EFI/Clover/ACPI/Patched中,同时把我提供的SSDT-DTPG.aml一起放进此目录。

 

C2.5 开启节能五项

我们知道白苹果的“系统偏好设置—节能”中有五个选项,目前为止,在没有勾选Clover Configurator–ACPI–plugin type之前,我们是只有两项的。之前的操作我们已经做好了模拟NVRAM的准备,现在是开启它了。

用Clover Configurator打开EFI/CLOVER下的Config.plist,在ACPI页面勾选PluginType并保存、退出。

 

第二步,我们右键访达(Finder),前往文件夹,前往/system/library/extensions,找到AppleLPC.kext,用PlistEdit Pro打开它,并选择info.plist打开;同时,我们再用PlistEdit Pro打开EFI/Clover/kexts/Other下面的FakeSMC.kext。我们复制AppleLPC.kext–info.plist–IOKitPersonalities—-AppleLPC,并黏贴到FakeSMC.kext—info—IOKitPersonalities下面,如下视频。

 

接着我们打开IORegistryExplorer,搜索LPC,找到它的IOName为pci8086,a305,记下它:

下再回到刚才的Fakesmc的info里面,替换AppleLPC-IOnameMatch下任意一个的值为刚才找到的值,保存、重启,我们的节能五项都打开了。

 

C2.6 USB补丁

其实现在打USB口的补丁已经很简单了,网上的教程有点跟不上节奏,我这边做一个简略版本的说明。

首先,确保你的EFI/CLOVER/texts/other/下面有最新版的Usbinjectall.kext, 并把相关的USB补丁删除,比如USBPORTS.kext. 第二,确保EFI/CLOVER/ACPI/patched下面没有SSDT-EC.aml、SSDT-UIAC.aml这两个文件,如果有请删除。最后,通过Clover configurator 打开EFI/CLOVER/config.plist,添加相关的usb port limit patch, 系统如果为14.4-14.5,就添加如图所选的三个补丁;如果是15的系统,可以参照黑果小兵的补丁,点我

 

做完以上准备,我们开始打usb补丁了:

第一步:打开 hackintool这个软件,并转到USB这栏,我们可以看到自己电脑所有的USB口:

 

你可能可以看到三种不同的接口:

  • HSxx: 是2.0的USB口
  • SSxx: 是USB 3 口
  • SSPxx: 如果你有雷电卡的话,你可以看到这种雷电类型接口

我说明一下规则:因为USB3口是向下兼容的,也就是说,一个物理的USB3接口既可以是电脑里的USB 2又可以是USB3。这里打个比方,我的HS08和SS08口是一组接口对应一个8号的物理接口,这种口一般是蓝色或者红色的,这个08口就是同时支持3.0也是2.0;另一个比方,HS10对我而言就只是一个2.0的口,因为没有对应的SS10存在,这种物理接口一般是黑色或者白色的。

 

第二步:你需要使用一个USB2.0的设置(2.0的U盘,鼠标键盘等等都行)去插一遍所有的物理接口,因为不管是3.0或者2.0的物理接口,都能支持2.0的设备。插完后,我们看到hackintool这里有些变绿的,有些还是黑的。那些绿色的口是真实存在的。

接着请拿一个USB3.0的设备(U盘之类的)去连接你电脑上外形蓝色或者红色的口(那种是USB3.0的口),你会看到你连接过的口在hackintool上,SS变绿色。如果你有雷电口,记得插一次雷电口;如果你有typec 就插一下typec,如果你想指定某个口放一个USB拓展器,请将拓展器连着拓展器上的设备连接那个口!

 

第三步:删除那些没有变成绿色的口(点“➖”)

然后我们要定义所有的口的类型:请点击hackintool中connector那一栏选择类型。

例子1:HS03和SS03都是绿色,这两个对应的物理接口肯定是USB3,那就定义HS03和SS03位USB3。

例子2:HS13 只是单独存在,并没有相应的SS13,那这个口就是USB 2,定义它为USB2。

例子3:如果一些物理接口你是长期插着一些固定设备的,比如说蓝牙、USB接收器,鼠标键盘等,请务必把这个口改成internal。

例子4:如果有雷电或者typec的口,请自行定义他们为TYPEC/SW。

 

第四步:点击导出,你会再桌面上看到N个*.aml文件以及一个usbports.kext。现在有两种方式打这个补丁:

条件1:如果你的SS+HS+SSP绿色的接口总数大于或等于15个,请将n个AML文件放到EFI/Clover/ACPI/Patched下,usbports.kext这个文件不用管,删了;并且删除EFI/CLOVER/kexts/other下的usbinjectall.kext。

条件2:如果你的SS+HS+SSP绿色的接口总数小于15个,请将usbports.kext这个文件放到EFI/CLOVER/kexts/other下,并且删除同目录的usbinjectall.kext。同时生成的N个aml文件不用管,删了。

 

如果你正确跟着我的步骤,USB补丁已经打好了,重启生效。

 

至此,所有的驱动都搞好了,希望你能从这里学到很多,如有疑问请留言!谢谢各位看官!

 

之前博客被毁了,哎 搬瓦工太垃圾了,这里补上我的EFI。

My Blog was destroyed…… 

 

 

此EFI支持如下功能/ This EFI supports:

  • 双屏输出                                    Dual monitors output through both HDMI&DP
  • 3.5mm耳机音响杂音消除       3.5mm audio crackle elimination
  • 全版本BIOS支持                       All Bios versions support
  • 商店、淘宝等视频冻屏消除   App Store video freezing fixed

     

 

配置/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. Load UEFI Defaults
  2. Advanced
    • Onboard HD Audio: Enabled
    • USB Configuration, XHCI Hand-off, Enabled  (关键)
    • Super IO Configuration, Serial Port, Disabled(必须)
  3. Security Secure Boot, Disabled(by default)
  4. CSM disable
  5. CFG Lock: Disabled (关键,在cpu的c-state/status设置里)

 

超级小白教程/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 in a correct location, I provide you a MOJAVE 10.14.4 image with EFI combined, which means, 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 mojave to that hard drive, 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保持在3.1;请确保你的硬盘不是那些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

 

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