mac x99算法 java_黑苹果从入门到精通 篇九:从Clover转向OpenCore的X99 iMac Pro(一)...

黑苹果从入门到精通 篇九:从Clover转向OpenCore的X99 iMac Pro(一)

2019-12-27 17:01:17

196点赞

2085收藏

138评论

追加修改(2019-12-27 21:31:24):

这篇文章中我疏忽了一件事情,就是XCPM原生电源管理,在OpenCore中不像Clover一样直接有某项跟PluginType有关,而是需要通过SSDT-PLUG修复,但是困难之处在于OC-little中并没有和X99相符的SSDT-PLUG,于是我自己照着我的SSDT-PmMgt修改了一个SSDT-PLUG,这部分会在(二)中写到。

前言

本篇文章不能替代篇6的Clover安装说明,本文仅仅只是将Clover相关设置平行迁移到OpenCore下,所以没有阅读过篇6的请重新回去看一遍。384c8ab46a89d6b18285ea2c76621890.png黑苹果从入门到精通 篇六:X99八核 iMac Pro 搭建指南追加修改(2019-10-2220:46:30):已经更新到macOS10.15Catalina,刚出来的时候比较懒,一直没升级,昨天升级了,一堆出错的,懒的搞再加上时间很晚了就关掉了,今天有点心情上来看了下,其实问题很小,主要问题有:1.变频出错:其实就是KernelAndKextPatches中唐少游|赞137评论231收藏966查看详情

什么是OpenCore?

OpenCore是类似于Clover的UEFI的引导器,目前已越来越受到大家的欢迎。首先OpenCore提供了详细的日志系统,帮助黑苹果排错;其次OpenCore以更先进的方法注入第三方Kext,不破坏系统的SIP;再次,OpenCore支持读取NVRAM等一系列特性,可以让黑苹果变得更“原生”,诸如选择启动器、Command Ctrl互换,原生开启Option键特性都可以实现。

不过流行起来的原因倒并不是OpenCore具有种种优势,主要是一堆开发者抱起团来指名道姓Clover未来不会被他们的工作支持,第三方Kext都不会对Clover做兼容性检查,AptioMemoryFix这种重要的efi更是直接并入OpenCore成为了FwRuntimeVariable.efi。虽然对大家的学习又一次提出了挑战,不过我还是觉得确实每隔一段时间就应该打破向下兼容的传统,重构系统架构,这样整套引导系统会更有效率。上次是Clover革Chameleon的命,这次就轮到OpenCore革Clover的命了

为什么文章标题带个(一)

原因非常简单,因为OpenCore在传给OS ACPI表的时候是不分操作系统的,这意味着在OpenCore的框架下修改ACPI表要更加的小心谨慎,所以在这一块我仍然处于学习的阶段,未来会向大家继续汇报我学习的经验(笑)。不过可能是我这里使用的都是一些无关紧要的SSDT修复,所以Windows也是可以正常引导的,所以和我们X99使用也关系不大。

如何了解OpenCore的相关设置

本篇文章不打算讲OpenCore的相关设置,这里推荐三个地方的文章

本次文章的主要内容还是在了解了这些的基础上,对X99黑苹果引导进行升级。

OpenCore安装前准备

首先需要准备如下三个安装包:

其次OpenCore官方推荐使用ProperTree和Xcode 10对config.plist进行编辑,目前Xcode11存在问题,所以如果你碰巧是Xcode10仍然可以继续使用,如果是11版本则需要更换一个plist编辑。

创建Catalina安装U盘并配置OpenCore

如何创建U盘我就不再赘述,有问题的看之前的文章,创建完U盘我们可以使用Clover Configuration或者在Terminal中输入sudo diskutil mount /dev/disk5s1挂载U盘EFI分区(disk5s1是在我的电脑上U盘的位置,各位在使用前先用diskutili list查看具体路径。)

接下来我们要将下载的OpenCorePkg中的EFI文件夹整个儿复制到U盘EFI分区中。

d0cb3aacb168b9a3a65b16c765bfc58d.png

文件结构如下图所示,在各个文件夹中目前仍然是全空的状态。我们接下来要补充相关ACPI、Drivers和Kexts。

edefbf29eba2b52cf457159e6d0ddbcf.png

在我们下载的AppleSupport中,我们需要将其中的efi驱动放到Drivers中,Tools同样方法迁移到EFI分区中。

再将原来Clover中的DSDT/SSDT和Kexts文件都放到OC对应文件夹中。复制后结构如下:

982c784066c21e8e5be2b7f6045e6ba5.png

简单说明需要注意的点,目前我使用WhateverGreen来替代X580的aml,主要基于两点理由,第一是尽量少用ACPI替换;第二是WhateverGreen相对来说会一直迭代,不需要我操心,这里的WhateverGreen版本为release 1.3.6,可以支持在10.15.2下HEVC硬解码。

TB3T.aml也被我拿掉了,我目前没有使用雷电卡,因为我用上了雷电卡发现我本质上不需要雷电卡,我既没有5K屏幕也没有雷电扩展设备,白白占了我一条PCI-E x16通道不说还挺贵,所以转手就出掉了。

在Drivers里面,我们使用了四个驱动,Apfs/HFSPlus就不用多说了,大家都懂,FwRuntimeServices.efi就是AptioMemoryFix.efi,也是必备的,这次我添加了一个MemoryAllocation.efi,主要是听说X99和Z390主板都需要添加这个驱动预留第一组 512MB 内存, 帮助引导工具注入内核以及内核缓存至第一组 512MB 内存, 加入这个后还需要配合 FwRuntimeServices 和引导标识符 slide=1。但是根据实测我发现没有这个也很正常,本着能少用就少用的理念,我bak注释掉了这个驱动。VirtualSMC.efi是配合VirtualSMC.kext一起使用的,嗯,原来KGP是使用FakeSMC的,但是我觉得有点太老了,这次就升级更换掉了。

有一个很具争议的驱动是UsbKbDxe.efi,主要是为了在启动阶段提供苹果原生的快捷键,但是我的在使用时候发现加入了这个在OC引导界面直接不能用键盘了,这个需要你们自己测试,我推荐不用。

接下来是很重要的一步,我们需要根据以前的Clover config.plist修改OpenCore.plist。首先从OpenCore/Docs文件夹中将Sample.plist复制到EFI/OC目录下,并重命名为config.plist,如果你原来的机型是老机型,则使用SampleFull.plist。

66ac88cfac76c820f5fdb64de36e7fef.png

在讲解OpenCore具体用法部分我不会详细讲每一项的功能,这和黑屏小兵和Xjn的重复了,我以阅读OC Configuration为主,配合Xjn的一些实测结果进行设置,这里也只讲我碰到麻烦的一些地方。

1、ACPI部分

修改ACPI之前首先将开头的5个Key-String对删除,只是一些Warning。Add array中主要是关于ACPI表的修补,我们需要将其修改为加载我们自己的ACPI patched。将九个SSDT patch加入其中,需要注意,貌似这个加载是有顺序的,所以DTGP要放到了最前面,除此以外icon-patch和ANS1/2有关,但我不是很敢肯定依赖关系顺序,所以我尝试了icon-patch放后面,ANS1/2放前面,结果正常起效了,所以大家可以依照这个来,我有点怀疑这三者作用时可能对顺序没啥要求,所以随便放也是可以的。

521d32cbc917a1d11f95283ccc128405.png

Patch array要改的就非常多了,稍微解释一下其中两个我认为重要的Properties,第一个是Count,实际上是指这种替换要进行多少次,默认是0,意思是只要碰见符合替换的就进行替换;第二个是Limit,默认是0,意思是整个ACPI表都要进行查找替换。这里给了一个例子给大家参考:

883fbfad8294961f8929b1227c6f348e.png

最终应该是有10条常规hot patch和16条跟线程有关的hot patch。其实在DSDT中要修改的CP-PR对挺多,但是我就修改这么多,剩下的留置争议到以后再说。

b30fd35f28f12d8ea399045929a9d7d0.png

最后是Quirks Array,具体解释如下,我就不再翻译了,针对X99,统统默认关闭就行了,没啥卵用。

1a0442ca06a78695cb90a1c69602f0d0.png

2、Booter部分

MmioWhitelist不用动,都是默认关闭的,第一项跟Haswell内存寻址修复有关,第二项跟X99用户很熟悉的卡PCI Configuration有关,但是这两项对我们也是没啥用的,X99卡PCI也和第二项没关系。

Quirks中设置如下,如果对每一项究竟是干什么用的感兴趣,请去翻官方文档。

5fc1ec9213c1f2c552d08b70a97dd572.png

其中需要注意的是DevirtualiseMmio这一项,手册中写了对大多数主板来说都应该开启,但是Xjn这个表达了不同的看法,他认为连续性内存注入更合适,没有电脑适合分布式注入。所以我这里选择和他一致关闭这一项,关闭后理论上是需要提供slide值的,但是能直接进系统最好不指定。

三、DeviceProperties

这部分和Clover中的DeviceProperties是对应的,主要是对帧缓冲和音频进行属性注入,由于X99没有核显,所以单单处理音频部分即可。这部分Xjn写的太好了,如果你需要对核显进行处理,建议看看xjn的教程,X99的朋友照抄我的就行了,应该大家都是ALC1150。

f993f4d9a060b3e957c2f8d8dcab911c.png

可以看到声卡的设备地址是PciRoot(0x0)/Pci(0x1b,0x0),再使用Hackintool查看目前的layout-id为5

745e9360fdf271a1b009a8c50776a659.png

将OC config修改如下即可:

fb3f468ada11a3455baba311c498170d.png

四、Kernel部分

这一部分涉及Kext注入,我们需要对每一个Kext都列一个item,而且这个kext注入方式有顺序,也就意味着Lilu和Lilu附属驱动要注意先后,有关联的驱动要排顺序。大致如下图所示

4f3cfa12c6a45af7877f24f3ddc82ba4.png

三个蓝牙的驱动貌似是没有顺序的,随便即可,我的顺序如下

4db0a63f2529e036112efd49f4c8dee8.png

特别需要注意的是,针对笔记本而言经常用的VoodooI2C和VoodooPS2这类驱动内包含驱动的,千万不要忘记要分开注入,也就是说,一个驱动要分为多个子驱动注入,当然对台式机没啥影响,大多数kext都是单个单个打包的。

还有不要打错、少打、漏打、多打,Enabled选项要改为True才能正常注入。

至于Emulate部分则是和CPU仿冒有关,针对Haswell-E的处理器修改如下,Broadwell自己查。

Cpuid1Data F2060300 00000000 00000000 00000000

Cpuid1Mask 010A0000 00000000 00000000 00000000

Patch部分等同于Clover中的KextToPatch和KernelToPatch,照抄过来即可。KernelToPatch只需要将Identifier改为kernel即可。

比较蛋疼的一项是IOPCIFamilyPatch,作用于IOPCIFamily.kext,熟悉的朋友应该知道,X99如果不修改这一项会造成卡PCI,我按照Clover的设置经验直接填了IOPCIFamily,结果卡PCI了,我大概猜测是这一项没有实现修改,经过查阅资料发现,OC上这里要修改为com.apple.iokit.IOPCIFamily。

此外需要注意,10.15.2的X99又双叒叕改Patch了。详情可以从这里看。

最终修改结果大致如下。

090bca76d8c698f1491cccfe22602ddd.png

Quirk部分除了AppleXcpmExtraMsrs/ThirdPartyDrives我开启了以外,其余都关了,CFG-Locked的机器请参照Xjn的方法使用EFI修改BIOS项,都快0202年了还有没解锁的。ThirdPartyDriver则是开启Trim功能。其他项目参考官方文档。

五、Misc部分

Misc主要关系OC本身的引导界面,需要修改的东西不多,在安装的时候我们可以把ShowPicker和UsePicker改为True,Timeout改为0,等同于Clover引导timeout -1。Debug部分只需要把Target改为3即可。

六、NVRAM

在boot-args小项中改为-v npci=0x2000,除此以外不懂不要动。

七、PlatformInfo

这里和SMBIOS有关,需要借助Clover Configuration中的SMBIOS来计算配套的三码,Xjn做了很好的教程,参照他的即可。不要什么EFI拿来就直接用,不修改三码坑的不仅仅是你,还有贡献EFI的人。

八、UEFI

在Drivers项中,我们需要依次把Drivers文件夹中的efi加载进来,同样需要注意顺序,我的配置文件如下。

0e13534a62d6f3b2c0fd857ad3cc1a61.png

比较重要的是Protocols和Quirks,ConsoleControl务必要打开,RequestBootVarRouting关系到macOS的启动磁盘是否能使用,我这里也打开了,最重要的是SanitiseClearScreen,在手册中解释说高分屏需要这一项来避免运行在1024x720的分辨率下,实测发现这里的高分屏包含1080p,所以除非你用的是上古显示器,不然都打开。

bed4c5a52bcaae0bf58a9422075830d6.png

最后Enjoy!

c6b8212e5ee45f123dd98ad5baefed98.png

9738b84e1cd165f32eb04bb691f0ac79.png

d3219ef7f7bbeeced6634ab4f019da26.png

f9dcac7a994fb76b331a5872559b25a1.png

213c92fc9b05fff7cecd770a1fde8089.png

a983d9cdf118d37225d7d03dde257d46.png

06e8d1359e5cf00001561ddb3225e847.png

b737a7ff443ac378b9159425a790dab2.png

c2ad9c123c4d84295e50d901fd065b58.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值