zoukankan      html  css  js  c++  java
  • 如何让升级时AppleHDA不再折腾

    ---前提---

      1. 你得用 Clover 引导 (......)
      2. 开启 kernelcache (开了也能 inject kext,还能patch kext,速度又快,为啥不开)
      3. 你的 AppleHDA 现在工作正常

      ---方法---

      先说 AppleHDA 的,估计就这个关注的人多,其他都是小意思。

      1. 把你修改过的xml 文件改名后添加到 AppleHDA 里。把文件名.xml.zlib 改成 .zml.zlib 例如 layout3.xml.zlib -> layout3.zml.zlib。 如果是下载的现成驱动不确定用到了哪个,索性把全部 .xml.zlib都改掉,不影响使用。

      2. 建立 patch 项目,如果你之前就用了kext patch那就不用我说了,如果没用过,需要建立如图1项目。后面的0-5就不用管了,是Array下面的小项,你建几个就有几个=。=

      3. 在 Clover 的配置文件添加下列kext patch项目
      <dict>
      <key>Comment</key>
      <string>Patch_to_ALC887 (xml.zl to zml.zl)</string>
      <key>Find</key>
      <data>
      eG1sLnps
      </data>
      <key>Name</key>
      <string>AppleHDA</string>
      <key>Replace</key>
      <data>
      em1sLnps
      </data>
      </dict>
      <dict>
      <key>Comment</key>
      <string>Patch_to_ALC887 (patch vid pid)</string>
      <key>Find</key>
      <data>
      ixnUEQ==
      </data>
      <key>Name</key>
      <string>AppleHDA</string>
      <key>Replace</key>
      <data>
      hwjsEA==
      </data>
      </dict>
      添加的项目上已经有了基本的说明,我再简单解释一下吧。 第一项是重点,让AppleHDA读取资源时不再读取xml.zlib, 而是读取 zml.zlib (机智的小伙伴你好。。。),这样系统升级 AppleHDA升级时就不会把我们改好的定义覆盖掉。 后一项就是binary patch,让 AppleHDA 能接受我们硬件的vid 和 pid了。

      我这里用来示范的数据时 ALC887 声卡的数据 (技嘉 B75M-D3V Rev 1.1),声卡不同的用PlistEdit Pro修改 Patch_to_ALC887 (patch vid pid) 下面那个 Replace 对应的 data 就好。

      4. 应该已经能正常工作了。:)

      顺便附上一些常用 patch,系统升级时能省去很多麻烦。包括了 开启Trim , 屏蔽AppleTyMCEDriver对 ECC 内存的检测,禁止某kext加载等。 看注释应该能懂吧
      <key>KextsToPatch</key>
      <array>
      <dict>
      <key>Comment</key>
      <string>ECC Memory Check Hack</string>
      <key>Find</key>
      <data>
      cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY
      </data>
      <key>Name</key>
      <string>AppleTyMCEDriver</string>
      <key>Replace</key>
      <data>
      cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY
      </data>
      </dict>
      <dict>
      <key>Comment</key>
      <string>Trim Enabler</string>
      <key>Find</key>
      <data>
      QVBQTEUgU1NEAA==
      </data>
      <key>Name</key>
      <string>IOAHCIBlockStorage</string>
      <key>Replace</key>
      <data>
      AAAAAAAAAAAAAA==
      </data>
      </dict>
      <dict>
      <key>Comment</key>
      <string>Patch_to_not_load_this_driver</string>
      <key>Find</key>
      <string>0x04020000</string>
      <key>InfoPlistPatch</key>
      <true/>
      <key>Name</key>
      <string>AppleUpstreamUserClientDisabler</string>
      <key>Replace</key>
      <string>0x44220000</string>
      </dict>
      <dict>
      <key>Comment</key>
      <string>Patch_to_not_load_this_driver</string>
      <key>Find</key>
      <string>0x04020000</string>
      <key>InfoPlistPatch</key>
      <true/>
      <key>Name</key>
      <string>ApplePolicyControlDisabler</string>
      <key>Replace</key>
      <string>0x44220000</string>
      </dict>
      5.把HDA Hardware Config Resource的信息保存到 FakeSMC 里面,不再修改 AppleHDAHardwareConfigDriver.kext ,从而避免升级时被覆盖。

      这个很简单, 就是把改好的AppleHDAHardwareConfigDriver.kext的info.plist 里面 IOKitPersonalities/HDA Hardware Config Resource 的内容复制出来,贴到FakeSMC.kext的 info.plist里面,依然是贴到 IOKitPersonalities 下。

      这样FakeSMC里面的配置会替代 AppleHDAHardwareConfigDriver.kext , 也不用担心系统升级时 AppleHDAHardwareConfigDriver.kext 被覆盖导致声卡不能工作了。
  • 相关阅读:
    【flink】flink1.12 application mode on k8s
    【spark】读取高版本的elasticsearch
    [spark] spark2.4运行在k8s
    【spring】springboot使用jpa集成elasticsearch7.0
    【spark】cache不一定使用的场景
    JDK源码分析
    排序算法
    EagleEye鹰眼原理分析
    需求分析模版
    记一次线上事故内存泄漏:java.lang.OutOfMemoryError: unable to create new native thread
  • 原文地址:https://www.cnblogs.com/motoyang/p/5140624.html
Copyright © 2011-2022 走看看