目前为止,最新版的OpenCore(V0.5.1)已经证明了自己在10.14.6至10.15 beta 11上的稳定性。考虑到即将来临的10.15正式版,我想现在写一份关于z390等比较新的主板,如何使用OpenCore去引导新系统是一个不错的时间点。
最近好多小伙伴问我要我的配置哈,都是买了一样的配置再问我要efi,真是厚爱了!我的efi在群文件里都有,配置如下:
我的电脑配置 OpenCore(OC)是一种新的引导方式,随着越来越多的kexts开始放弃Clover, 我相信提早使用OC会对你未来使用黑苹果会有很大的帮助。这是一个自然的现象,就像变色龙被Clover淘汰,而现在OC代替Clover也是大势所趋。你应该需要看一些相关的文章,来帮助你理解我的正文内容,同时也需要下载我推荐的软件: 2019-11-28: 1.增加3.8.3章节,解释睡眠记录中出现RTC ALARM而导致自动唤醒的现象。[Opencore v0.5.3] 2.计划写5700xt/Radeon VII等显卡的性能优化,虽然cpu优化都还没写好,太懒了。[Opencore v0.5.3] 2019-11-21: 1.关怀华硕用户,补充章节3.2。[Opencore v0.5.3] 2.着手开始写cpu变频相关内容。 [Opencore v0.5.3] 2019-11-20: 1.在今天的OC更新中,NVRAM与启动磁盘之间的BUG被修复,重新删了EmuVariableRuntimeDxe.efi,并且在章节3.2中加入相关教程。[Opencore v0.5.3] 2.更新SSDT-ARTC来解决RTC重置问题。因我自己的所有设备都没有碰到这个问题,很难凭空去完全解决RTC重置的问题。 [Opencore v0.5.3] 2019-11-19: 1.fwruntimeservice.efi 存在缺陷,所以把EmuVariableRuntimeDxe.efi补回来了,具体内容。[Opencore v0.5.3] 2.更新节能五项,章节3.5。[Opencore v0.5.3] 2019-11-16: 1.增加我的电脑配置及购物链接,问的人太多了。 2019-11-09: 1.修改章节2.6.1为中文,谢谢网友提醒,哈哈哈哈。[Opencore v0.5.3] 2.对config设置里,比较重要的设置改为红字提醒。[Opencore v0.5.3] 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设置 直接抄袭@黑果小兵了~嘻嘻嘻 禁用如下: 启用如下: 1.0 整理OPENCORE目录 *Lilu.kext ———- Acidanthera驱动全家桶的底层依赖/下载地址 *Applealc.kext ———- 声卡驱动/下载地址 *VirtualSMC.kext ——— 传感器驱动依赖 /下载地址 *SMCProcessor.kext ———- CPU核传感器/同上 *SMCSuperIO.kext ———- IO传感器/同上 *WhateverGreen.kext ———- 核显&显卡驱动/下载地址 *IntelMausi.kext ———- Intel类千兆网卡驱动/下载地址 *Usbinjectall.kext ———- USB驱动 (你也可以定制自己的USB补丁)/下载地址 *ApfsDriverLoader.efi ———- APFS格式支持/下载地址 *MemoryAllocation.efi ———- 帮助z390系列空出第一个512MB内存,为后面的内存注入做铺垫,若要使用hibernation功能请不要使用它/下载地址 *FwRuntimeServices.efi ———- 内存寻址补丁/ 下载地址 * *VBoxHfs.efi ———- HFS格式支持/下载地址//在测试过程中我发现hfsplus.efi的效果更好。 *UsbKbDxe.efi ———- 键盘组合键的使用,有一些键盘不能放这个,比如苹果键盘/下载地址 *VirtualSmc.efi ———- 传感器依赖/ 下载地址 下载完成后,我们的整个EFI文件夹如下图所示: 2.0 Config.plist 修改 这一章会把config的各个大项目分开来,内容会写的繁琐一点,为了让小白明白各个选项的用途,当然有能力的人可以直接看我最前面的几个链接来配置config.plist。我这里强制要求你使用XCode 10或者Propertree来编辑Config.plist,其他的任何软件我都不建议使用,包括Plistedit pro。 ACPI包括了四个部分:Add, Block, Patch, Quirks。这里我们先把root下面的两条#WARNING – 1和#WARNING – 2删除,这两条没有实际意义。 这部分主要填写我们使用的SSDT以及DSDT文件,如果没有请把0-8的ssdt全部删除。如果你有修改的SSDT或者DSDT文件,请先将文件放入EFI/OC/ACPI下。 因为我使用雷电卡,我需要添加两条关于雷电卡的ssdt文件: 这个目录下是禁用一些SSDT/DSDT,似乎没什么用,我把下面的item全都删了。 这里我们需要填写一下热补丁。 需要注意的是,一些主板的EC控制器名字可能会叫H_EC等,请自行提取DSDT并搜索PNP0C09,来获取EC控制器的名字,这些内容会在第三章中写出。 此目录下有五项,选择与解释如下: 内存相关选项设置。 默认的第一项是为Haswell芯片提供的内存寻址修复,如果此类芯片碰到内存相关问题,请开启它(enable选择yes)。 默认第二项是开机卡PCI Configuration这里。ACPI、PCI device同时释放到内存时发生0x1000内存地址被占用而卡在PCI Configration.如果碰到此类问题,请开启它。 此项与Fwruntimeservice.efi有关。在aptiomemoryfix停更后,此补丁已经更名为Fwruntimeservice, 并将一些功能与OC合并、模块化。对于z390等无法原生nvram的主板来说,这里的选项需要格外注意。当然我也会把像z370、x299、c422这样支持原生nvram的选择方法一并写进去。 此项是用来注入你的设备的,主要是显卡和声卡两部分。同样你也可以定制一些设备到你的关于本机–系统报告–PCI列表中,尽管没有多大的意义。 这里首先我们需要找自己声卡的地址,打开hackintool,到PCI列表中寻找IOReg IOname那栏,一般声卡的设备名称叫做HDEF或者HDAS: 这里我们找到的声卡PCI路径为PciRoot(0x0)/Pci(0x1f,0x3)。我们把预先填写在那里的PciRoot(0x0)/Pci(0x1b,0x0)项替换成我们真正的声卡路径。后面一段我们看到预先填写的声卡ID为<01000000>,这里我们需要把它换成自己系统的ID。 打开PciRoot(0x0)/Pci(0x2,0x0)这项,此项为驱动核心显卡。驱动核心显卡我们要分情况讨论:1.只有核心显卡的DP显示器用户 (HDMI我会在进阶设置中写);2.没有核心显卡的用户;3.有核心显卡并用独显做主力的用户。注意,这里我们只讨论8代和9代CPU的机器,其他CPU机型的请在论坛或者黑果小兵博客中搜索相关代码。 8代和9代的核显ID为:3E9b0007,device ID为3e9b0000,但是我们需要符合一定的顺序格式填入进去,至于为什么是这么奇怪的一个顺序,我也不知道,你照抄就是了: cpu带f的cpu (e.g. 9100f 9900kf), Xeon等不带核心显卡的用户不需要管这项,直接把AAPL,ig-platform-id选项卡删了。 这种情况我们一般把核心显卡作为加速用,而显示则用独立显卡。这样,我们填一个作为加速用的核显ID即可了: 这里是禁用一些设备的,我们按默认就行了,不需要任何修改。 这里是内核相关选项。 这里我们需要填写kexts的相关资料。值得注意的是OC的kexts填写必须注意顺序,比如applealc的依赖是lilu,那么lilu必须填在第一个;SMCProcessor.kext依赖于Virtualsmc.kext。那virtualsmc必须放在SMCProcessor.kext之前。 这里默认情况下很多我们需要的补丁已经被加载里面了,但是enabled那块我们要手动改成yes去开启它,把一些不用的删了: 禁用一些kexts,这里好像没啥用,不用理会。 此选项帮助Ivy Bridge 和一些不受支持的CPU加载电源管理的,我们这里不做此方面讨论(我没这么老的CPU)。所有选项按默认即可。 这里是为一些kext打补丁用的。 我们可以看到样本里面有四个补丁,都是关闭着的,其中有两个是关于APPLE RTC的,这对于华硕主板来说相对比较重要,这里我们需要对appleRTC相关的两个补丁一一测试,打开—–Enabled—YES其中一个,即可。如果不行,关闭一个打开另一个。这样能解决华硕主板重启丢失BIOS设置以及需要按F1跳过安全模式,当然RTC仍然需要进一步的设置,我会在进阶教程中详细写一下这一块。 这里是内核相关的快捷选项,比较重要。 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。 这里都是一些开机引导类的设置。 这个选项是帮助我们寻找一些不寻常的EFI位置的,除非你有这种情况,不然我们不需要填写任何东西。 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。 是否开启debug模式,这里我们暂时不需要,全部忽略过。 这里是帮助我们添加一些你希望的引导路径,这个会在之后的进阶教程中讲,这里暂时略过不填写。 AllowNvramReset: 是否在开机引导项中加入重置nvram缓存功能的选项,我们选YES。 ExposeSensitiveData: 因为要使用到nvram,这个数值我们必须填3。 HaltLevel: 按默认设置即可。 RequireSignature: 黑苹果的vault加密方式,我们不需要这个功能,选择NO RequireVault: 是否开启黑苹果加密,不需要,选NO ScanPolicy: 这里暂时填0。我们也许会碰到开机的时候默认进入的系统永远是WINDOWS,并无法更改,之后我们在进阶教程中讲述,如何让MAC盘排在第一个,让WIN排在后面。 这里是加入一些开机时候的工具的。其实我觉得只有重置nvram的工具是有用的,但之前的设置里面我们已经开启了,这个选项就没啥用了,不用理会。 这是关于nvram的选项卡。 禁用一些nvram变量,我们这里按默认设置不必理会。 如果你的主板不支持原生NVRAM,请一定要选择YES! 如果你的主板是z370/x299/c422/z270等支持原生nvram的,填no。 这里是nvram的变量设置,大部分默认已经填好,我们只需添加两个变量即可。 打开7C436110-AB2A-4BBB-A880-FE41995C9F82这一栏,添加两个item如下: 这里我们填合适的机型。对于最近一代的主板来说,一般的原则,只有核显的机器我们选Macmini8,1;只有独显的机器我们选择iMac Pro 1,1;有核显和独显的我们选择iMac 19,1。 因为这部分内容太过复杂,其实很多内容都不必要填写,我们直接删除Datahub,PlatfromNVRAM,SMBIOS这三项,无需填写。 这里意思是是否自动填写系统信息。因为后面的很多选项都好繁琐,我们只要认真填几个选项就行了,这里我选YES,不重要的信息让它自动填。 这里是我们需要填写的三码部分。获得三码,我们可以运用一下Clover的Clover Configurator帮我们生成一下相关的数据: UpdateDataHub:选择YES UpdateNVRAM:选择YES UpdateSMBIOS:选择YES UpdateSMBIOSMode:选择Create UEFI:UEFI相关的补丁以及设置项。 ConnectDrivers:是否加载所有UEFI补丁,这里我们选YES 这里我们需要填写UEFI相关的设置。 是否加载补丁,我们选择YES 把我们之前放在OC/EFI/Drivers下面的驱动一一填上,这里我们也注意一下填入的顺序: 此选项是原生apple开机热键的选项,需要配合我们之前设置的PollAppleHotKeys=yes以及UsbKbDxe.efi补丁一起用。下面的设置完全按照默认情况就行了。因为我的键盘是苹果原生键盘,不支持这个功能,所以我直接PollAppleHotKeys里填了NO,这里也不会生效的。 有一点需要说,如果你是华硕的z87或者z97,你需要打开PointerSupport这个选项。 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。 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。 到这里,我们应该可以通过OC正确引导MAC OS了,但是还有很多问题需要去修补,包括模拟nvram,寻找EC控制器并做一个,原生的电源管理等。我会在下一个章节写这些东西。 3.0 OpenCore 完善 对OC而言,NVRAM是非常核心的一环,不管是原生还是模拟的。如果你是原生nvram的主板(z270/z370/x299/c422),请不必理会这章节。这张的主要内容为生成模拟的NVRAM.plist。 这个教程主要针对的是非原生nvram主板的用户,如果你是原生nvram的用户,直接在偏好设置—启动磁盘中选定你希望设置为默认启动的磁盘即可,不必往下看浪费时间! 非原生nvram用户必须完成以下几点: 如果你是华硕的非原生nvram主板,你还需要做(此文件由群友@哞 提供): 在保证以上要素后,打开 3.2.1以及3.2.2已经过时。 我们首先要对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)。 这样我们的公式就是: 拿起苹果自带的计算器,按住coomand+3切换到编程型计算器,并转换到16进制模式: 输入: 得到数值后,我们再按一下转换10进制的按键,得出524547这个数值。 我们把524547填到scanpolicy中,重启,你就会看到第一个选项就是你的MAC盘了。但如果你还安装了WINDOWS什么的,选项中却没有了,别急,我们现在要把WIN的引导添加到mac的后面去。注:似乎oc还不能引导ubuntu,请用Bios快捷键进入,未证实。 现在我们要在开机画面中,将其他的一些系统排在mac后面。此项能需要你下载debug版本的Opencore,请在文章开始部分提到的Opencore程序下载界面进行下载,并备份好你目前的EFI。 首先我们需要把下载好的Opencore-Debug版本里的efi/boot/BOOTx64.efi 以及efi/OC/OpenCore.efi两个文件替换到你正在使用中的EFI里去。用XCODE修改你正在使用的EFI/OC/Config.plist,修改内容如下: 接着,我们需要寻找你其他系统的UUID,我们打开终端,输入: 我们找到你需要的盘的盘名,比如我的windows在disk0这个位置,而引导WIN的EFI文件夹的盘位是disk0s1。注意,这里我们不讨论Gpt格式的WIN引导位置该在哪里,如果你实在不清楚,可以把disk0s1以及dsik0s2都记录下来。 接着输入: 在输出内容里,我们需要的是 现在我们通过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就可以唤出选择界面了,非常白果的体验哦。 提取DSDT是我们之后完善系统的必需品,没有他我们无法找到相关的硬件位置,我们可以通过Clover直接提取,这里我们需要一个空的U盘。我的教程是非常偏向小白的,所以这里提取我也会用到windows,以及Diskgenius这个软件,做最简单的示范。 在提取dsdt后,我们可以得到相关里硬件名字及目录,这样我们就可以加载原生电源管理。这里非常感谢宪武大大在ssdt这块的付出成果!我们先下载一下宪武大大的OC-SSDT包。 以下的内容,你需要文章开始阶段提供下载的MaciASL以及刚才提取的DSDT.aml 打开宪武大大的OC-SSDT包,到x86目录下,我们看到宪武大大已经把大部分不同名字的CPU的dsl文件都做好了。我的cpu名字叫 将plug-xcpm.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件: 加载后,重启,并清理一次nvram,我们看到偏好设置–节能中,原生电源管理已经被加载了。 节能五项是白果台式机中,偏好设置—节能中的选项。在加载原生电源管理后,我们一般有4项节能出现,而第五项“断电后重启”这项还需要加载PPMC以及LPCB下的PMCR才能出现。虽然说这项功能没啥鸟用,但对于强迫者而言,少一个一定很难受吧。如果你是笔记本,不需要看这章,白果笔记本本身就没有。 直接下载SSDT-PM.aml载入即可。这个里面的内容我不想解释了。 在10.15系统中,尽管你已经通过config解锁了SIP,但系统目录仍然需要命令去开启。这里群友bugprogrammer给出了一个一劳永逸的解决方案,请到他的博客中查看方法:解锁macOS10.15的系统分区 EC控制器是电脑自带的一个叫embedded controller的部件。在10.15的系统环境中,笔记本电脑必须重命名原来的EC,而一些台式机主板则需要禁用。下面我会分开来讲解如何禁用EC、如何加载USB电源管理支持。 之前我在2.1.3章节中提供了重命名这种方式去讲EC0更名为EC,其实这种方法是只适合笔记本的,台式机最好还是禁用EC。 我这里会把笔记本重命名EC以及台式机禁用EC写在一起。 打开之前提取出来的DSDT.aml,搜索 这里我可以看到我的H_EC已经是屏蔽掉的,怎么判定,你看下面有一个Return (Zero),意味着这个部件是不生效的,即禁用。这样的情况我们不需要做任何SSDT去禁用这个真的EC。 那么什么样的情况是需要我们去屏蔽的呢?我发现基本上华硕的台式机主板都会启用这个EC控制器,这里我截图了一张华硕主板的EC部件图,我们同样在DSDT中搜索 这里我提供了一个禁用EC0的补丁,请直接下载,打开后左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字随便写吧,我就叫ssdt-no-EC.aml,记住后缀为aml。记得将ssdt-no-EC.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件。 如果你的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是实在没有办法。 我们在使用过程中可能会遇到睡眠唤醒后,插着的U盘掉了,要重新拔插才能识别,这是因为我们还没对USB的供电进行修复。我们如何辨别USB供电正不正常,你可以比较下面两张图,显然第二张是正确的。 从10.15开始,USB电源的控制被直接分配到了IOResources上面: 我们只需要一个简单的KEXT补丁来加载USB电源控制 请你确定你已经用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中加载这个补丁,重启即可。 一些华硕主板的用户反馈给我说,他们的黑苹果在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。 这里我们直接使用宪武大大提供的ssdt,放入acpi目录下并在config中载入即可。(这个包是宪武大大在群里面发的最新版,他的github还未更新此文件,目前是10月28日)。加载此补丁后,你再打开IO Registry Explorer,你会发现awac已经没有了,并且多出了一个rtc部件,表示此补丁生效,并且你也可以删除之前在config里面添加的rtc fix补丁。 其实这种情况下,rtc一般是没有问题的,但是强迫症啊,白果的rtc叫做artc,那我们就禁用一下rtc然后再仿冒一个叫artc的部件吧。 加载此ssdt并在config中添加它,重启后打开IO Registry Explorer,你会看到rtc部件已经没有了,多了一个artc,这个是白果的描述方式,凑个热闹吧。如果你在config中添加了rtc fix补丁,也可以删掉了(似乎没有awac都不需要rtc fix补丁)。 一些主机可能会遇到RTC引起的定时唤醒,日志上如下图显示: 这种情况我觉得本质上不是一个问题,因为白果也会这样,如果你要解决这样的问题,你前提需要做如下: 制作自己的SSDT-RTC补丁,并删除irqnoflag那一段: 已经制作好的RTC去除ALARM补丁在3.8.2章节里。 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要有水冷哦! 睡眠即醒很大程度上跟USB的定制相关,一般一个好的USB定制就能解决睡眠即醒的问题。当然系统的更新,MacOS的也在做不断的调整,比如蓝牙不能在HUB下进行内建,比如雷电卡必须将4个端口全部内建才行,等等。甚至有些时候我们都不知道为什么黑果会睡不着,那有没有一个办法让黑果强制睡眠呢?答案是有的。经过我的摸索,有几种方法能达到强制睡眠的效果,只是方法不同而已,但主要围绕的还是0d/6d的数值来做一些工作。那刚好,这些方法涉及了很多黑果领域的一些小技巧,我也顺便展示给大家。 注意:0d/6d补丁的本质是阻止一些部件参与唤醒工作,这其中包括了xhc部件,这意味着你无法使用鼠标键盘唤醒,只能用电源键唤醒。 若你有一组除了xhc之外的usb控制器,那把键盘鼠标插在那两个控制器上,这样可以即使用强制睡眠,也仍然可以键盘鼠标唤醒电脑。 300系列的主板一般有5个部件是直接参与唤醒工作的,这五个部件分别是XHC(USB控制器)、CNVW(CNVI网卡,如果你的主板自带的话)、GLAN(有线网卡)、XDCI(USB相关)、HDEF(音频)。旧的一些主板可能会有不同的命名,比如XHC有叫EH01,HDEF叫做HDAS等,这里不做讨论。而这些设备往往会直接影响睡眠,比如你输入小兵哥哥经常说的这个命令: 我们有时候会看到如下结果: 那么即是这两个部件导致了睡眠出现了问题。于是,我们用几种方法去屏蔽或者说修改这些部件,来达到电脑正常睡眠的效果。 我们打开之前提取的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的重命名功能。 宪武大大做的clover版本的0d/6d补丁,其实没啥必要讲,只是有留言问了tgtbridge在oc下怎么用,那我就展示一下吧。这个补丁原理是一样的,通过重命名的方式改_prw。 直接下载宪武大大的clover hotpatch补丁包,打开“11-1-睡了即醒(0D/6D)补丁”下的plist文件,按照clover的方式,其实把这些补丁直接拖到clover下就行了。那我们拿出一组数据来讲解怎么把它翻译成oc版本: 这里我来解释一下,这组改名是对xhc下的PRW进行改名为xprw,这样的话,之前prw下的(0x6D, 0x04)即不生效了。而指定xhc的方法即是使用了tgtbridge,因为整张dsdt上有几十上百个_PRW,你必须通过tgtbridge来指定到底是哪一个部件的_PRW。 那么OC到底怎么使用tgtbridge来特定某一部件下的内容重命名呢?我们先把上面一段clover的补丁转换成oc的版本先吧: 这里就是一个还没全部翻译好的oc版改名xhc的prw。那么如何定位xhc下的_prw呢,主要是填写 打开dsdt,在左下角直接搜索_PRW,就能把整张表的_PRW筛选出来了: 我总共数了一下,一共有56个_PRW。我们再在主内容栏上按command+f搜索xhc,直接找到xhc的_PRW,刚好我们看到我的xhc实在整张表的倒数第4个,也就是正数第53个: 那么我们就可以补充完整张表了: 如果你想第53、54、55个都改掉,那count就写3,意味着顺序执行3次。好了,就这样,有问题留言。 我之前也提过,我是一个比较反对在oc下进行直接重命名的用户,如果真的要用重命名,也一定是搭配ssdt去做重命名,所以这个方法也是宪武大大和我最推荐的一种方法。 打开宪武大大的OC-SSDT包,找到0D/6D文件夹,打开SSDT-GPRW.dsl。我来解释一下里面的内容 这个ssdt不需要你改任何内容,打开后左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字就叫,记住后缀为aml。记得将ssdt-gprw.aml放入EFI/OC/ACPI下,并在config.plist中添加加载此aml文件: 并且,我们需要在ACPI—Patch中增加一条配合此ssdt的重命名: 最近群友在看白果的dsdt中发现白果的5大部件_PRW值都是(0x69,0x03)。那么何不试试把这5大部件的s4级电源管理都改成s3级呢?实践证明在某一些机器上把04改成03是有效的,方法如下: 最近发现10.15.1必须开启小憩才能自动进入睡眠。但开启小憩意味着电脑会隔1个小时左右时间醒一次,来收发邮件等工作,再继续睡。如果你不喜欢这样的话,试试加载SSDT-SBUS.aml。至于原理是啥,我也不懂。 4.0 OpenCore 进阶 以下内容对你正常使用黑苹果已经无关了,如果你追求更好的黑果表现,可以看下去,但这部分内容也需要你自己有更好的能力与耐心。如果你不具备足够的条件,我不建议你看下去;如果你的失误导致硬件的损坏,我也不会、也没能力负责。 此章节对你的要求会相对高一点,并且请你具备如下条件: 在Intel四代之后,苹果引入了新的内核级电源管理方式:XCPM(XNU CPU Power Management),这种新的管理方式可以高效地管理电源及变频。同时,苹果也推出了HWP (HardWare controlled Performance states),这种技术可以快速根据特定程序的需求,作出变频转换。我们这个章节,本质上就是在加载XCPM的情况下,调整HWP来优化CPU的变频。 同时我要说的是,我在论坛上看到很多所谓的“变频”,有的甚至加载了50多个档位的变频,其实这种是完全没有意义的。我认为,变频是能在你需要的高频的时候快速进入高频状态,在关闭程序后又能很快回到低档位,换句话说,其实只需要三个档位就高了:睿频档,正常频率,以及低频档。
简介
帖子更新内容查询:
英文
中文
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
操作系统类型: 其他
EmuVariableRuntimeDxe.efi ———- 帮助无原生Nvram的主板实现nvram模拟。Z370, x299, C422主板不需要这个文件/下载地址已经不需要了
2.1 Config—-ACPI
2.1.1 Config—-ACPI—–Add
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
2.1.3 Config—-ACPI—–Patch
Comment: EC0 to EC
Count:0
Enabled:YES
Find:<4543305F>
Limit:0
Mask:<>
OemTable:<>
Replace:<45435F5F>
ReplaceMask:<>
Skip:0
TableLength:0
TableSignature:<>
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
2.2.2 Config—Boot—Quirks
2.3 Config—–DeviceProperties
2.3.1 声卡
PciRoot(0x0)/Pci(0x1f,0x3)
device-id data <70a10000> //这个device id是固定的,不要问为什么是这个id
layout-id data <0b000000> //这个Layout id我瞎写的,你按实际情况写
2.3.2 核心显卡
2.3.2.1 只有核心显卡的DP显示器用户
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 没核心显卡的用户
2.3.2.3 有核心显卡并用独显做主力的用户
AAPL,ig-platform-id data <0300983e>
2.3.3 Block
2.4 Config—–Kernel
2.4.1 Config—–Kernel—–Add
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
2.4.3 Config—–Kernel—–Emulate
2.4.4 Config—–Kernel—–Patch
2.4.5 Config—–Kernel—–Quirks
2.5 Config—-Misc
2.5.1 Config—–Misc—–BlessOverride
2.5.2 Config—–Misc—–Boot
2.5.3 Config—–Misc—–Debug
2.5.4 Config—–Misc—–Entries
2.5.5 Config—–Misc—–Security
2.5.6 Config—–Misc—–Tools
2.6 Config—-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
2.6.3 Config—–NVRAM—–LegacyEnable
2.6.4 Config—–NVRAM—–LegacySchema
item 11 String efi-boot-device
item 12 String efi-boot-device-data
2.7 Config—-PlatformInfo
2.7.1 Config—–PlatformInfo—–Automatic
2.7.2 Config—–PlatformInfo—–Generic
值得注意的是,SystemUUID这一项最好留空,让OC自动生成,它会影响你的WINDOWS激活状态。2.7.4 Config—–PlatformInfo—–剩余部分
2.8 Config—-UEFI
2.8.1 Config—–UEFI—-ConnectDrivers
2.8.2 Config—–UEFI—-Drivers
Drivers
item0 String ApfsDriverLoader.efi
........................ MemoryAllocation.efi
........................ FwRuntimeServices.efi
........................ VBoxHfs.efi
........................ UsbKbDxe.efi
2.8.3 Config—–UEFI—-Input
2.8.4 Config—–UEFI—-Protocols
2.8.5 Config—–UEFI—-Quirks
2.9 小节
3.1 模拟NVRAM
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
值得一提,nvram.plist在开机的加载需要之前我们要求放入的EmuVariableRuntimeDxe.efi来读取,请确保此补丁存在。3.2 建立自己的开机选择系统目录
nvram.plist
.BOOT/BOOTx64.efi
以及OC/OpenCore.efi
即可。AppleSupportPkg
版本为2.1.4以及之后,可以在我这里提供编译好的。/Misc/Security/ExposeSensitiveData=3
; Booter/Quirks/DisableVariableWrite=True/YES
; NVRAM/LegacyEnable=True/YES
OC/Drivers/
下没有VariableRuntimeDxe.efi
sudo defaults write com.apple.loginwindow LoginHook /写上你的路径/LoginHook.command
系统偏好设置---启动磁盘
,选择你想要设置为默认启动的启动磁盘即可。3.2.1 第一部分
(1)+(2)+(3)+(9)= 0x00000001+0x00000002+0x00000100+0x00080000
1+2+100+80000=80103
3.2.2 第二部分
Misc
Debug
DisableWatchDog Boolean YES
Target Number 65
Security
ScanPolicy Number 0 //这里我们要先改为0来寻找windows的地址,之后找到后改回之前算出来的即可
diskutil list
diskutil info disk0s1
Disk / Partition UUID
,我的是FF555974-AB3F-40B7-8530-AE6462E197CE,把它记下来。3.3 提取DSDT
3.4 加载原生电源管理
PR.CPU0
,PR.P000
,PR.PR00
,SB.CPU0
,SB.P000
,SB.PR00
, SCK0.C000
, SCK0.CPU0
。请依次搜索直到找到自己的CPU名字,比如我的就是SB.PR00
SB.PR00
,我直接打开SSDT-PLUG-_SB.PR00.dsl这个文件,左上角另存为(save as), 其中文件格式(file format)必须选择ACPI Machine Language Binary,文件名字随便写吧,我就叫plug-xcpm.aml,记住后缀为aml。<dict>
<key>Comment</key>
<string>XCPM</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>plug-xcpm.aml</string>
</dict>
3.5 加载节能五项
3.6 Mac OS 10.15下解锁S/L/E目录
3.7 关于EC控制器
3.7.1 禁用EC控制器
PNP0C09
,这里我搜到我的ec真实名字叫做H_EC,你的可能叫EC0或者别的什么奇怪的名字。PNP0C09
,我们看到这种情况下,这个叫EC0的EC控制器是开启的,注意他没有return (Zero)这个语句,我们需要通过SSDT去屏蔽它。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供电
3.8 RTC相关问题
3.8.1 存在AWAC的情况下修复RTC
3.8.2 不存在AWAC的情况下修复RTC
3.8.3 关于RTC ALARM引起的定时唤醒
config.plist/NVRAM/Add/7C436110-AB2A-4BBB-A880-FE41995C9F82/boot-args/
中添加一条darkwake=0
3.9 FCPX加速
3.10 睡眠即醒的相关问题
3.10.1 方法一:OC版本的0D/06补丁
log show --last 1d | grep "Wake reason"
3.10.2 方法二:沿用Clover版本的0D/06补丁&展示TgtBridge在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_
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进行修改
Count
和Skip
。其实oc的tgtbridge是通过一个个数过去来定位具体哪一个位置的。比如xhc的prw是整张dsdt里面的第55个,那skip填54,意味着跳过前54个,从第55个开始执行。那执行多少次呢?执行一次count就填1;比如你要同时改第55个和56个,那count就填2。说了这么多,我来实操一下吧:
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
3.10.3 方法三:配合SSDT+重命名的强制睡眠补丁 (重点推荐)
//
// 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,即屏蔽。
}
}
3.10.4 方法四:从白果DSDT中学习到的睡眠补丁
3.10.5 10.15.1中发现的无法自动睡眠问题
4.1 CPU的变频优化
/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/
下所有的plist文件,放到桌面。var_ID=$(ioreg -p IODeviceTree -r -n / -d 1 | grep board-id);var_ID=${var_ID##*<\"};var_ID=${var_ID%%\">};echo $var_ID
cd Desktop
cd 1
./ResourceConverter.sh --kext /Users/xjn(根据你的用户名)/Desktop/1/Mac-xxx(根据你的文件名).plist
CPUFriendDataProvider.kext
CPUFriend.kext
CPUFriendDataProvider.kext
与CPUFriend.kext一起放到oc/kexts下,并在config中加载,注意:CPUFriend.kext
应该放在CPUFriendDataProvider.kext
的前面。4.2 5700/XT/Redeon VII显卡的性能优化
4.3
支持,希望有时间的话,重点讲讲如何使用OC提供的那些SSDT,来实现一些Clover一个补丁或者一键就能搞定的问题。谢谢。
支持,寫得很詳細!
应该可以直接在已经黑苹果的机器上替换成OpenCore吧 下班回去试试看看
能否尽量避开使用emu呢?看到很多论坛和帖子,在oc上好像已经有更加简单的方法了
2.3.2.1 有核心显卡并用独显做主力的用户
请问这里的 device-id 需要填写吗 如果需要填写的话是这样的吗
谢谢博主
可以不填
我转OC后选择操作系统就卡死了。不知道啥情况
看其他教程,模拟NVRAM并没有使用emu这个efi呀?
主機板有原生支援就不用!你可以試試看!
主機板有原生支援就不用!你可以試試看!
我没理解错的话,OpenCore从0.0.4之后就用“FwRuntimeServices.efi”配合config.plist里“Booter”和“NVRAM”部分的几个参数替代了“EmuVariableRuntimeDxe.efi”的功能,所以Emu那个在新版OpenCore里就不需要了
博主你好用了你修改後的whatevergreen
-V卡在 doing retry #數字 這是什麼問題?
z370/z270/z170请勿使用,忘记写了
謝博主回覆 對了有i5-8400核心显卡并用rx570独显做主力
引导参数要填什麼正確?目前填 shikigva=40+shiki-id=Mac-7BA5B2D9E42DDD94
videoproc有檢測到h264跟hevc可是fcpx只有独显跑滿核心显gfx都未做動還請博主開示
按教程做就行了,你用shiki等参数都过时了。
博主你好参数只用Slide=1 darkwake=0
FCPX在輸出時會失敗關閉 目前bios設定Z370
Primary Display-PCIE
CPU Graphics Multi-Monitor-Enable
關閉也試過FCPX在輸出時就會失敗
一直找不到確切原因也都按教程做了...
博主你好,我笔记本OC引导后进入系统键盘触控板无法输入,爬了贴,打上了驱动和补丁还是不行,请问要怎么解决
我对笔记本触控板这一块非常小白。
添加 VoodooPS2Controller.kext VoodooPS2Keyboard 这两个驱动
小白看得一脸的懵逼………..
华擎x99主板支持nvram?
不支持,并且x99的内存注入方式很奇葩。。。
提取的原版DSDT找不到CPU类型怎么回事,我的是i7 5930k
你好,我按照您的教程修改后,开机啰嗦没有问题一过后卡在进度条上,一直不动,也不出安装磁盘界面,哦对了。我是华硕u4100uq 笔记本
没有图 无法判断
感谢楼主的教程。非常详细,我希望楼主出一个华硕b360主板重启或关机后BIOS被重置的教程
会补
支持!希望楼主继续更新!
请问HD4600核显应该注入什么ID才对啊 我注入04001204可以进入系统 但是分辨率只有1024×720 我显示器是2K无法开启
查阅黑果小兵的博客找ID
楼主你好,我现在用oc引导出现end randomseed后电脑就自动重启,不能进入系统,能帮我一下吗?
同样问题,请问你解决了吗?
“不需要再做仿冒EC以及做SSDT-USBX。加载USB电源控制直接通过KEXT来实现。”
请问是以后两种方法均可,还是说升级10.15.1测试版之后就只能用KEXT实现,需要删除USBX.aml。
如果说两种方法都可以的话,是SSDTEC+USBX好,还是只USBPower.kext这个方法好。
用usbpower
先膜拜一下博主了,按照博主的教程现在能进入系统了。但有个问题,就是在clover下面声卡layout-id注入是5,但在OC下不能用,在黑果小兵那边查的数值都试了也还是不行。检查了声卡位置也没有错,能帮分析下吗?
方法不对呗,clover和OC在音频ID注入上没有区别
感谢博主回复哈,已经弄好了,发现是数据类型选的不对。还有个问题想问一下。我的win10和osx装在同一个nvme硬盘里面的不同分区,efi文件夹也是共用的。scanpolicy设置为0,但是扫描不到我的win10系统,是不是它们必须在不同的硬盘啊?
期待楼主的CPU满血教程
博主大大,文中提到的禁用awac会影响节能5项,这其中有什么详细关系呀?以后是否有不影响节能5项的rtc修复出现呢?
我没这么说?哪里这么说了?
那我看错了,我在某个地方看见了这句话,再去寻找的时候却没找到
博主,我输入数字之后就一直卡在选择系统的那个界面,过段时间就回自己重启 都是按照帖子的步骤来的 请问是哪里出了问题
IgnoreInvalidFlexRatio
我已经设置成yes了
我的 Deskmini 310 还存在睡眠即醒的问题,睡了一会自己醒,醒了又睡,如此反复循环。期待博主后续更新。除此之外其他方面非常完美,堪比白苹果,非常感谢博主的分享。
没关闭小憩吧?
的确是这个原因,关闭小憩功能后睡眠就正常了。还有一个困扰我的问题是:从进入睡眠状态开始到电源风扇关闭的这段时间,无论是接入内建声卡还是 USB 声卡,音箱都有巨量电流声,不知道如何解决。
DSDT.aml里面搜索不到PNP0C09怎么办?另外一直卡启动选择,IgnoreInvalidFlexRatio改成yes或者NO都不行
你这种我遇到过,你查查你提取出来的ACPI表中那些原生SSDT里是否有PNP0C09,应该是有的
大佬,雷神911 s1g可以装吗? 我想花点钱装..找了几个群里的,都不行..
配置是 6700hq 530集显,1060独显..驱动不驱动的无所谓..我连安装界面我都看不到…
请问:
3.8.2 不存在AWAC的情况下修复RTC这一段,打上补丁后,IORegistryExplorer里面是什么效果,我这主板没有看见awac,打上补丁后,现实效果也没变,只在IORegistryExplorer里面找到一个rtc,展开后,下面显示AppleRTC/AppleRTCUserClient,有截图对比吗?
此帖 和 Asrock deskmini 310-com hackintosh 10.14-10.15 EFI
都收藏了,正在消化中。
感谢分享
写的非常详细,本人小白,非常感谢。。。能否麻烦针对AMD CPU做一些说明?因为参考OC原作者的说明的话,https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/ AMD和Intel是分开写的,所以猜测有些设置是不能通用的?
不会写关于amd的oc,没有条件测试
比如DSDT里我AMD Ryzen 2600x找到的CPU名字就是PR.C000,宪武大大的包里没有这个型号
自己改名
10.14 用OC引导进入系统十几秒后会鼠标键盘界面卡死动不了,clover正常..
有个问题,就是我加载了PPMC.aml,但是节能还是只有4项,为啥呢
我还没写这个呢,。。。
求写~~~~
赞一个 好文章
问一下楼主
osx下超频对稳定性有影响吗
大概10.14就支持超频了
cpu超频好像没啥影响,内存超频我也试过,不知道是我内存问题还是啥的,会自动重启
fcpx加速用了whatevergreen 外接显卡坞无法双屏,我的机器是nuc8i5beh
egpu,你可能需要原装的weg,或者自己在源代码里保留egpu相关内容
请问一下楼主,我是Z390 AORUS PRO WIFI主板+9900k,如果因为Z390的问题无法使用这个修改后的whatevergreen使FCPX核显加速,能否使用您在“Z390各种问题解决方案”这篇文章中提到的去掉whatevergreen的这个方法呢?如果可以的话在OC中如何实现呢?谢谢!
一样的,OC的实现方法也是这样
兄弟我和你的主板,CPU一直,我分别装了装mojave和catalina都是无法正常关机,每次关机卡代码mojave卡在BSD process name corresponding to current thread: launchd.
catalina卡在coredump complete of kernel.
还有就是这个主板应该是能驱动蓝牙的,但是我的蓝牙时有时无(跟不同的EFI有关)
感谢博主的文章,在这里分享一下我折腾的EFI
链接: https://pan.baidu.com/s/1SNFy2i1GxCcI-GnXyHPBjg 提取码: xute
但是有一个问题没折腾明白,我用usb链接的键盘(AnnePro2)开机选完oc引导后键盘就没反应了,重新插拔后恢复,ReleaseUsbOwnership true和false都试过都是一样不行,但是鼠标usb链接的鼠标就没事。。
还有就是蓝牙没问题 wifi却没有。
希望大神指导!
配置如下:
CPU:3700x
显卡:5700xt超白金
主板:MSI B450m迫击炮钛金板
内存:金士顿掠食者3200*2
跑分情况:
geekbench5 显卡metal分42619 opengl分36110
r20 4700分
fcpx跑BruceX 5k 渲染 13s
不知道这个分数正常吗?
博主您好,我配置完oc引导后,进入界面,选择mac os所在的数字后,界面直接没有相应了,重置nvram的选项和进入Windows的选项倒是都可以用,就是mac os 无法进入,不知为何
博主,我的主板是华硕Z170A,OC什么都更新到最新版,删掉EmuVariableRuntimeDxe.efi,开机就会卡在AppleNVME Assert Failed。。该如何解决
继续用着,fwruntimeservice 似乎还没全部弄好
后来在远景论坛找到一哥们分享的旧版的fwruntimeservice替换掉就ok了,然后再换回自己的新版的fwruntimeservice也没问题了,reset了话就又不行了,这个东西比较诡异。。
你熟读每个版本的更新说明,我这里不需要解释
技嘉B365M小雕, 模拟nvram 生成的 nvram.plist 只有7C436110-AB2A-4BBB-A880-FE41995C9F82这一项,该怎么解决,看别人好像是有2项。
技嘉b365 小雕, RX590, 9400F。
模拟NVRAM 生成的 nvram.plist 只有 一个子节点:7C436110-AB2A-4BBB-A880-FE41995C9F82
并没有:8BE4DF61-93CA-11D2-AA0D-00E098032B8C子节点(Boot0080,BootOrder)
请问该如何解决,opencore用的都是最新的,还有教程里提供的驱动
可以自己写进去 然后用PE进EFI替换
谢谢,我后来用了VariableRuntimeDxe.efi配合FW开头那个EFI驱动, nvram.plist现在有2个节点了, 但是发现 从设置—启动磁盘里 选择MAC, 重启后 只有第一次生效(默认启动MACOS), 第二次重启后,默认又是windows了, 发现 nvram.plist的Boot0080会改变。
oc可以启动mac os无法启动win7怎么回事?怎么让win7和OS共存啊,对了我是单磁盘双系统,clover可以,oc却不行这是为什么呢?
OC注意ACPI表是只有一张的,用任何补丁都记得要OSI DARWIN
博主,为啥我模拟了nvram.plist之后,只有手动选择启动磁盘,开机后之前打开的软件还开着,
如果不手动选择启动磁盘重启后所有软件都关闭了,
默认启动项是macOS,是哪里设置的有问题
博主好!正是学习了你的教程用上了OC,非常好!目前一个问题不知啥原因:用选择项进系统,第一屏大苹果,二屏正常;跳过选择项直接进系统正常。能帮忙分析是哪里设置不对吗?
resolution//uiscale
你好楼主 想请教 10.15后一些完善的问题 配置华硕x399+amd2970wx 主要是想解决一下传感器的问题 现在只能显示一下硬盘的温度 还不知道准不准 如果显示cpu的温度和频率 还有显卡的温度和频率 多谢
可以自己写sh来抓取
你好,请教一个问题
基本按照你的配置的,睡眠可以,休眠到硬盘启动的话会失败重启。
有什么思路的吗?
主板应该是支持nvme的z170
该写的都写了
老铁 有偿解决我的一个问题么? 10.15.1/10.15.2 beta3 都有一个问题, 就是鼠标键盘如果大概5-10分钟不使用, 系统会hang住, 只能重启按钮? 配置是 amd 3700x 微星b450迫击炮max 迪兰rx5700.
5700 安装的10.15.1的时候显示错位。。。有什么办法吗
用10.15.2 beta
博主的博文对我的帮助很大,很多问题都解决了,但是关于利用cpufriend实现cpu变频遇到一点问题。如果用cpufriend.kext,那么acpi里面的XCPM plugin还要保留吗?我试了试,如果删掉xcpm plugin的ssdt补丁,节能5项变2项了,如果不删掉的话,好像cpufriend.kext也没什么用。现在不知道该怎么办了。我的电脑是hp prodesk g3,cpu 6700,显卡gt730,主板芯片组应该是2系的,机型用的imac 17,1。希望博主能讨论一下这个问题。谢谢!
cpufriend和xcpm-plug应该没有关系
想问下博主,通过上述的教程之后如何才能判断非原生的nvram是否加载成功呢?因为自从我换了oc引导就出现了handoff、sidecar失灵的情况。先过谢谢博主,文章获益匪浅!
看能不能用启动磁盘就知道了