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 被覆盖导致声卡不能工作了。
  • 相关阅读:
    raid0
    GitHub 标星 11000+,阿里开源的微服务组件如何连续 10 年扛住双十一大促?
    写给大家看的“不负责任” K8s 入门文档
    快速迁移 Next.js 应用到函数计算
    轻松搭建基于 Serverless 的 Go 应用(Gin、Beego 举例)
    阿里巴巴副总裁肖力:云原生安全下看企业新边界——身份管理
    从零开始入门 K8s | K8s 安全之访问控制
    深度解读!阿里统一应用管理架构升级的教训与实践
    CNCF 2019 年度报告重磅发布 | 云原生生态周报 Vol. 41
    HTML+CSS技术实现网页滑动门效果
  • 原文地址:https://www.cnblogs.com/motoyang/p/5140624.html
Copyright © 2011-2022 走看看