花样年华 发表于 13/2/21 10:11:55

DSDT教程,提取原始DSDT、解决BIOS重置问题


http://peterforelli.blog.163.com/blog/static/124473889201023010256276/

刚刚安装完雪豹进入桌面,大部分的人都会发现此时的系统还只是个没有声音、不能调整分辨率、没有显示特效、甚至无法联网的“裸苹果”,再一重启,连BIOS也被重置了……相信很多人都会马上迫不及待地去kexts.com寻找驱动,不过别急,我们先从DSDT开始,一步一步地通过修改这个神奇的文件来逐渐完美我们的黑苹果。
Step 1. 提取DSDT
这里我们需要用到的软件是Everest,下载之后解压,直接运行Everest.exe打开软件。
http://img.bimg.126.net/photo/ZsjYuNdJ2iluxIEdp5yX3g==/1708834583611147924.jpg根据图中指示的步骤,把DSDT的bin文件保存在桌面上。这时,Everest用来提取DSDT的任务就完成了。
Step 2. 反编译出最初的DSL文件从现在开始,我们就要用这个叫做DSDT Patcher的软件对DSDT进行修改和编译了。由于软件没有提供bin -> dsl直接转换的功能,本人也并不敢确保bin和aml的内容完全一样,所以我们先把bin先转换成aml文件。下面以我自己的DSDT为例:http://img.bimg.126.net/photo/3NE27BYLOkMReUN1AT2Dnw==/1708834583611147922.jpg
http://img.bimg.126.net/photo/3XtBDIqu5JqeEKNT1oTwQQ==/1708834583611147936.jpg按照图中的步骤选择源文件和输出目录,这是软件操作的基本步骤,以后的破解步骤就不再重复了。 http://img.bimg.126.net/photo/MdWVakKk5oTs5sSD4mN_cQ==/1708834583611147937.jpg把右面破解的选项全部取消掉(因为这个软件的功能很不完善,所以我们采用手动破解的方法),然后点击\"Patch AML\"。http://img.bimg.126.net/photo/C70OepBxC9Igx6D5ZokCng==/1708834583611147921.jpg糟了!编译失败!显示1 Errors, 1 Warnings. 我们把显示的信息复制出来看看:
dsdt.dsl   354:   Method (_WAK, 1, NotSerialized)
Warning1080 -               ^ Reserved method must return a value (_WAK)
dsdt.dsl6247:                     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。 那么接下来我们就把这两个问题修复。 http://img.bimg.126.net/photo/p4fp4TEmcui7k_J_n8f7vA==/2272347486985920103.jpg 点击右面的\"Fixes\"按钮 http://img.bimg.126.net/photo/I3A3e42oseChe3bfr3lhVw==/1708834583611147927.jpg 把对应的这两个补丁勾上,然后点\"OK\"。 接下来把桌面上刚才编译错误留下的临时文件都删除,再点击\"Patch AML\"。 成功了!0 Errors, 0 Warnings. http://img.bimg.126.net/photo/ntPeeV-uU6EhC7fv6O36bg==/1708834583611147935.jpg 接下来我们要做的就是把无损的原始DSDT转换成DSL文件。http://img.bimg.126.net/photo/chHnDpedigsBn4YwX6faIg==/1708834583611147919.jpg选择D/C DSDT选项卡,选择刚才修补好的fixeddsdt.aml文件,在下面选择Decompile (to DSL)选好输出目录后,点击D/C……这时我们得到的dcpdsdt.dsl就是我们要的原始DSDT信息了。 http://img.bimg.126.net/photo/xjGyhIQvcJZwvyNjxVNITg==/1708834583611147928.jpg
Step 3. 修复RTC设备,纠正BIOS重置的错误 用记事本打开我们得到的DSL文件,按Ctrl+F搜索Device (RTC)字样。 http://img.bimg.126.net/photo/ZycehIXhELmP48Fkg9r_5g==/1708834583611147920.jpg
这样我们就找到了RTC的位置。我们需要修改的有两个地方。先把IRQNoFlags行和下面的参数删掉,再把Length字段改为0x02(如果有多处一般只修改图中的一处即可)。我们来对比一下原始代码和修复后代码:
http://img.bimg.126.net/photo/avwjG5x1M-hhvK4ipPVsOQ==/1708834583611147929.jpg

原始代码↑

http://img.bimg.126.net/photo/75SWRloJnujBz3R5gb637Q==/1708834583611147934.jpg


修复后代码↑
点击保存,这就是我们制作的可以修复BIOS重置的DSDT文件。
练习一下:用刚才讲过的D/C功能编译一个dsdt.aml文件扔到Boot Think或者变色龙里面试试看,重启后BIOS重置的问题解决了!这就是我们的初步成果。通过DSDT还可以加载显卡、声卡等信息,使Mac OS更好地识别你的PC配置,使系统更像一个真正的Mac!而这就是我们最终的目的。

admin 发表于 13/2/21 14:56:36

很好的教程!!
页: [1]
查看完整版本: DSDT教程,提取原始DSDT、解决BIOS重置问题