- 积分
- 10673
- 最后登录
- 2024-4-16
- 精华
- 0
- 阅读权限
- 220
- 主题
- 596
- UID
- 4568967
- 帖子
- 14232
- PB币
- 2272
- 威望
- 830
- 贡献
- 0
- 技术
- 94
- 活跃
- 3073
- UID
- 4568967
- 帖子
- 14232
- PB币
- 2272
- 贡献
- 0
- 技术
- 94
- 活跃
- 3073
|
本文为接近三年前的老文章,论坛也有一部分人在使用此方法。不过,了解的人似乎并不多,楼主就在开学前抽风翻译一下。
本文为基于原文的不完全翻译,以及楼主的拓展 & 总结。
原作者: Pike R. Alpha
原文链接: https://pikeralpha.wordpress.com/2013/12/17/new-style-of-applehda-kext-patching/
1. 首先,我们需要将 /System/Library/Extensions/AppleHDA.kext 拷贝到一个其他的地方,并改一个名字。例如,对于我的ALC887,我就起名为 AppleHDARealtekALC887.kext 好啰,我将它拷贝到桌面。
- cp -RX /System/Library/Extensions/AppleHDA.kext ~/Desktop/AppleHDARealtekALC887.kext
复制代码
2. 我们要删除很多没用的东西!( # 后面是我的说明,不喜欢就不要键入啰。)
注:下文的 AppleHDARealtekALC887.kext 需要根据您在 1. 中输入的名字自行替换。
- cd ~/Desktop/AppleHDARealtekALC887.kext/Contents # 进入桌面的 AppleHDARealtekALC887.kext/Contents 方便接下来操作。
复制代码- rm -R PlugIns _CodeSignature MacOS/AppleHDA Resources/* version.plist # 删掉多余的文件,我们需要它们又有什么用呢?
复制代码
3. 制作原版 AppleHDA 二进制档案的(软)链接文件。
在 2. 的基础上,现在的工作目录已经是 cd ~/Desktop/AppleHDARealtekALC887.kext/Contents 啰。所以我们可以使用相对路径。
- ln -fs /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA MacOS/AppleHDA # 以原版二进制档案为基础。
复制代码
4. 拷贝适配自己声卡的节点zlib档案。
以我的为例,我需要的是 Platforms.xml.zlib 与 layout5.xml.zlib。那么就将对应的档案拷贝过去好啰。我将这两个档案放在桌面上。- cp ~/Desktop/Platforms.xml.zlib ~/Desktop/layout5.xml.zlib Resources
复制代码
5. 修正 Info.plist 。
前言:您可能需要一个编辑 Plist 档案的工具如 PlistEdit Pro,无论如何我就是使用的它。
5.1 是不是原版 Info.plist 的东西太繁杂了呢?不如删掉这些吧!
删除 BuildMachineOSBuild ; Get Info String (CFBundleGetInfoString) ; CFBundleSupportedPlatforms ; DT开头的所有项目。删除后就像这样子啰:
5.2 根据 kext 的加载原则,我们不得不增高 Info.plist 的版本,否则我们前面的努力就白费啰。
我是基于 10.11.6 的原版 AppleHDA 修改的,我们也不难看到目前的 AppleHDA 版本为 274.12 。所以,只要定义的版本大于这个就可以啰。比如 999.99.9 或是 更简单的改法:在 274.12 前面加上 9 ,变为 9274.12,就可以啰;)
此外,Copyright 中的版本号并没有什么用处,那就删掉吧。愿意的话,AppleHDA 也可以改成别的名字呢。
5.3 加入合适的 ConfigData 吧!
我们需要的 ConfigData 为 /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist 中定义的完整形式。
还是举例说明下好啰,以下就是我们需要的形式。
- <key>HDA Hardware Config Resource</key>
- <dict>
- <key>CFBundleIdentifier</key>
- <string>com.apple.driver.AppleHDAHardwareConfigDriver</string>
- <key>HDAConfigDefault</key>
- <array>
- <dict>
- <key>AFGLowPowerState</key>
- <data>
- AwAAAA==
- </data>
- <key>CodecID</key>
- <integer>283904135</integer>
- <key>ConfigData</key>
- <data>
- IUccECFHHUAhRx4RIUcfASGHHFAhhx2QIYce
- oCGHH5AhlxxgIZcdkCGXHoEhlx8CIacccCGn
- HTAhpx6BIacfASG3HIAhtx1AIbceISG3HwIh
- 5xyQIecdYCHnHkUh5x8BAUcMAg==
- </data>
- <key>FuncGroup</key>
- <integer>1</integer>
- <key>LayoutID</key>
- <integer>5</integer>
- </dict>
- </array>
- <key>IOClass</key>
- <string>AppleHDAHardwareConfigDriver</string>
- <key>IOMatchCategory</key>
- <string>AppleHDAHardwareConfigDriver</string>
- <key>IOProviderClass</key>
- <string>AppleHDAHardwareConfigDriverLoader</string>
- </dict>
复制代码 我们要将它放在刚刚的 Info.plist 中的 IOKitPersonalities 下。像这样子啦:
但是似乎这样子还是无法运作呢... 我们要小修改一下啰:修改 CFBundleIdentifier 为 com.apple.driver.AppleHDA 。然后还是不行的话,就加入一个值为 2000 的 integer 类型的 IOProbeScore 吧。
像这样子:
5.4 修改一下依赖的版本号,避免冲突:
展开 OSBundleLibraries 项,修改 com.apple.kpi.iokit 与 com.apple.kpi.libkern 的值为 9.9.9 吧。
至此,我们已经完成了任务。将它安装到 /System/Library/Extensions 或者 /Library/Extensions ,并配合 Clover 的 KextToPatch 功能看看效果吧!
|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
-
5
查看全部评分
-
|