- 积分
- 119
- 最后登录
- 2019-7-7
- 精华
- 0
- 阅读权限
- 20
- 主题
- 24
- UID
- 3029532
- 帖子
- 223
- PB币
- 383
- 威望
- 5
- 贡献
- 0
- 技术
- 54
- 活跃
- 57
- UID
- 3029532
- 帖子
- 223
- PB币
- 383
- 贡献
- 0
- 技术
- 54
- 活跃
- 57
|
本帖最后由 packingbox 于 2013-10-19 11:30 编辑
开门见山, 正如很多高手写到, 节能器没有4项那就一定没有启动AppleLPC.kext, 如下图. 成功启动LPC的话会多出第四项"断电重启"
之前也是试过很多办法都没有办法比较简便一次性搞定AppleLPC引导, 除了最蠢的在DSDT添加"device id", 然后在AppleLPC.kext里面的info.plst添加自己的device id (1E4A), 我的是1E4A不在原生支持列表里, 倒是看到1E44. 然后这样子就可以使用原生LPC, 但是每次重装都要改系统的AppleLPC.kext, 感觉有点不爽.
SSDT添加代码
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x4A, 0x1E, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 AppleLPC.kext ->info.plst 添加如下代码
- <string>pci8086,1e4a</string>
复制代码
开始到处看文章, 翻遍中外论坛, 都没看到很详细写出如何一次性搞这个AppleLPC的问题, 可能大家很多都是原生支持所以都免了这一步, 或者使用上面那个修改DSDT+info.plst的办法.
测试1:
用Clover的kextsToPatch, 修改config.plist添加替换自己不支持的id到kext的info.plist里面, 但是失败, 按照指引改完, 然后用without cache重启完, 再正常重启一次, 系统没有加载LPC, 然后取log看看, 失败了. 再重启n次, 结果都是一样.
参考资料:
[教程] 施工【clover】介绍与多人讨论
KernelAndKextPatches
Log信息
- 10/19/13 9:20:26.000 AM kernel[0]: Kext com.apple.driver.AppleLPC - library kext com.apple.driver.IOPlatformPluginFamily not found.
- 10/19/13 9:20:26.000 AM kernel[0]: Can't load kext com.apple.driver.AppleLPC - failed to resolve library dependencies.
- 10/19/13 9:20:26.000 AM kernel[0]: Kext com.apple.driver.AppleLPC failed to load (0xdc00800e).
- 10/19/13 9:20:26.000 AM kernel[0]: Failed to load kext com.apple.driver.AppleLPC (error 0xdc00800e).
- 10/19/13 9:20:26.000 AM kernel[0]: Couldn't alloc class "AppleLPC"
复制代码
测试2:
只在DSDT里面添加想要仿冒的原生device id (1E44), 不改动原生AppleLPC.kext内容.
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x44, 0x1E, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码 重启后用IORegistryExplorer查看自己的LPC信息, 发现一个有趣的情况. 只有device-id这一项变成1E44, 其他的IOName, name两项还是原来自己的1E4A. 灵光一闪, 把其他两项也改成仿冒的原生1E44会怎样, 是不是因为缺少参数才会没加载, 会不是就是问题出在这里.
测试3:
在DSDT里面添加上面提到的另外两项在LPCB里面, 如下, 同样不改动原生AppleLPC.kext
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x06)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x44, 0x1E, 0x00, 0x00
- },
- "name",
- Buffer (0x0D)
- {
- "pci8086,1e44"
- },
- "IOName",
- Buffer (0x0D)
- {
- "pci8086,1e44"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码
重启机器, 先打开电源管理, 发现有4项, 哈, bingo. 然后打开Extensions里面也加载了AppleLPC, IORegistryExplorer查看也跟自己DSDT一致, 确定无疑已经成功加载了原生的AppleLPC.
一个星期的折腾终于有结果了, 终于下次重装系统不用再麻烦以上这些东西了, 以上入门心得希望能帮助到有需要的人.
附注: 我的电脑为Dell Vostro 470, 自己加了个二手的ATI 5750, DSDT已经仿冒了ATI 5770驱动, 声卡为ALC887. 附上DSDT仅供参考, 不能直接套用.
Dell-Vostro470-dsdt.aml.zip
(13.29 KB, 下载次数: 121)
|
|