DSDT教程,提取原始DSDT、解决BIOS重置问题
http://peterforelli.blog.163.com/blog/static/124473889201023010256276/
刚刚安装完雪豹进入桌面,大部分的人都会发现此时的系统还只是个没有声音、不能调整分辨率、没有显示特效、甚至无法联网的“裸苹果”,再一重启,连BIOS也被重置了……相信很多人都会马上迫不及待地去kexts.com寻找驱动,不过别急,我们先从DSDT开始,一步一步地通过修改这个神奇的文件来逐渐完美我们的黑苹果。
Step 1. 提取DSDT
这里我们需要用到的软件是Everest,下载之后解压,直接运行Everest.exe打开软件。
根据图中指示的步骤,把DSDT的bin文件保存在桌面上。
这时,Everest用来提取DSDT的任务就完成了。
Step 2. 反编译出最初的DSL文件
从现在开始,我们就要用这个叫做DSDT Patcher的软件对DSDT进行修改和编译了。
由于软件没有提供bin -> dsl直接转换的功能,本人也并不敢确保bin和aml的内容完全一样,所以我们先把bin先转换成aml文件。
下面以我自己的DSDT为例:
按照图中的步骤选择源文件和输出目录,这是软件操作的基本步骤,以后的破解步骤就不再重复了。
把右面破解的选项全部取消掉(因为这个软件的功能很不完善,所以我们采用手动破解的方法),然后点击\"Patch AML\"。
糟了!编译失败!显示1 Errors, 1 Warnings.
我们把显示的信息复制出来看看:
dsdt.dsl 354: Method (_WAK, 1, NotSerialized) Warning 1080 - ^ Reserved method must return a value (_WAK) dsdt.dsl 6247: Store (Local0, Local0) Error 4050 - ^ Method local variable is not initialized (Local0) ASL Input: dsdt.dsl - 7109 lines, 221419 bytes, 2621 keywords Compilation complete. 1 Errors, 1 Warnings, 0 Remarks, 836 Optimizations |
这里显示有两个问题:WAK和Local0。
那么接下来我们就把这两个问题修复。
点击右面的\"Fixes\"按钮
把对应的这两个补丁勾上,然后点\"OK\"。
接下来把桌面上刚才编译错误留下的临时文件都删除,再点击\"Patch AML\"。
成功了!0 Errors, 0 Warnings.
接下来我们要做的就是把无损的原始DSDT转换成DSL文件。
选择D/C DSDT选项卡,选择刚才修补好的fixeddsdt.aml文件,在下面选择Decompile (to DSL)选好输出目录后,点击D/C……
这时我们得到的dcpdsdt.dsl就是我们要的原始DSDT信息了。
Step 3. 修复RTC设备,纠正BIOS重置的错误
用记事本打开我们得到的DSL文件,按Ctrl+F搜索Device (RTC)字样。
这样我们就找到了RTC的位置。
我们需要修改的有两个地方。先把IRQNoFlags行和下面的参数删掉,再把Length字段改为0x02(如果有多处一般只修改图中的一处即可)。
我们来对比一下原始代码和修复后代码:
原始代码↑
|
修复后代码↑
点击保存,这就是我们制作的可以修复BIOS重置的DSDT文件。
练习一下:用刚才讲过的D/C功能编译一个dsdt.aml文件扔到Boot Think或者变色龙里面试试看,重启后BIOS重置的问题解决了!这就是我们的初步成果。通过DSDT还可以加载显卡、声卡等信息,使Mac OS更好地识别你的PC配置,使系统更像一个真正的Mac!而这就是我们最终的目的。