当前位置: > 黑苹果 > DSDT提取与编译教程-面向小白

DSDT提取与编译教程-面向小白

扩展阅读:
http://bbs.pcbeta.com/viewthread-1571455-1-1.html


概述

为了能让OS X的特性能够在普通PC上正常工作,就需要修改(可以利用补丁)DSDT和SSDT。本 教程的目的,就是介绍如何利用现有补丁,修改你电脑的原始OEM DSDT/SSDT。

虽然你可以用其它型号的电脑的DSDT,但这样的后果是会造成更多问题。你不能保证用别的型号电脑 的DSDT是没问题的。如果你用了别的电脑的ACPI文件,即便是硬件配置非常相似,也可能会造成 系统 不稳定 和 一些奇葩的问题。

使用补丁修改DSDT/SSDT包含了以下步骤: -提取原始ACPI文件 -反编译原始文件 -分析并筛选这 些原始文件 -使用补丁修改 -编译并保存,再放到引导特定的目录


在Clover启动界面按F4提取

在Clover启动界面,你可以按 “F4”键,Clover会把原始ACPI文件提取到 EFI/Clover/ACPI/origin 目录。再进入系统,就可以在那个目录看到提取到的原始文件了。之后,就可以 开始反编译、修改了。注意,有的BIOS可能按F4键没用,而需要Fn+F4,所以,如果不确定的话,F4 和 Fn+F4 都按一次。提取的时候,你不会看到任何是否完成的提示,只是会因为正在写文件而出现一 点延迟现象。如果是用Clover的USB设备(U盘、硬盘)启动的,文件会被提取到USB设备,这样会感 到比较明显的延迟。

有时候,Clover提取的SSDT可能会重复。重复的文件,会影响到反编译。如果你反编译的时候看到了 这样的提示信息(duplicate definitions),就需要仔细检查重复的是哪个了(例如,看大小)。由于存 在这样的问题,所以在Linux提取比较好。因为我还没有⻅过在Linux提取的出现重复的情况。

当然CLOVER提取是普遍的简单方法,如果有条件可以使用Linux系统提取

【在Linux提取(推荐,还可以顺便提取声卡codec) 在Linux系统里,可以直接在系统分区里找到原始 ACPI文件。你可以在 /sys/firmware/acpi/tables 和 /sys/firmware/acpi/tables/dynamic 看到。可以简单 地用命令进行拷⻉。

Linux系统不需要安装,做一个启动U盘就可以了:

http://www.ubuntu.com/download/desktop/create- a-usb-stick-on-windows

打开Linux的终端输入: sudo cp -R /sys/firmware/acpi/tables DEST 注意: 用FAT32格式的USB设备 (U盘、硬盘)的挂载点的路径,替换命令里的 DEST


反编译ACPI文件

这里是Rehabman的修改版编译器:
https://bitbucket.org/RehabMan/acpica/downloads

。把iasl编译器拷⻉到/usr/bin目录,会让调用iasl更方便。

终端的反编译命令: cd “你存放DSDT和SSDT的文件夹名” iasl -da -dl *.aml

反编译介绍:
http://bbs.pcbeta.com/viewthread-1475332-1-1.html

当然这边我用图片,提供我自己习惯的编译方法。

1.我先把origin文件夹,拷⻉到了桌面

DSDT提取与编译教程-面向小白

2.确保此文件夹里只有DSDT.aml和其它SSDT开头的aml文件,像这样

DSDT提取与编译教程-面向小白

注意:不要管那个dsl文件夹,你们没有的,我自己加的

3.打开终端,先输入cd,空一格,将桌面上的oringin文件夹拖到终端,就会像这样

DSDT提取与编译教程-面向小白

4.回⻋,输入如图所示命令

DSDT提取与编译教程-面向小白

注意:确保已把iasl编译器拷⻉到/usr/bin目录

回⻋编译就行了

我们会得到,这么一堆dsl文件,这里我们只需要DSDT.aml文件,其它SSDT就删掉好了。

修复错误

即使同时反编译所有文件(使用iasl的-da参数),还是难免存在错误。反编译后的文件之所以 还会有错误,是因为一直以来iasl编译器的版本都在更新、iasl的实现细节变化了、不同的电脑与系统环 境。存在这些错误的原因可能是(Rehabman认为),里面调用到的一些方法,实际上是Windows内部 实现的(例如 MMTB方法和MDBG方法)。实际也有这样的情况,ACPI文件的代码原本就存在缺陷或 者某些代码本来就是无效的(很难说得清楚)。

打开编译出来的DSDT.dsl文件(用MaciASL软件:
https://github.com/RehabMan/OS-X-MaciASL-patc hmatic
,这是Rehabman的修改版)

打开就是这个样子

DSDT提取与编译教程-面向小白

点击上方的
Compile(编译)

这边我这里是有错误的

DSDT提取与编译教程-面向小白

我这个错误只要打syn补丁就行了,首先,点击上方Patch 在众多补丁里找到syn的那一堆,然后找到,PARSEOP_ZERO的补丁,点击,等它加载一下,然后Apply就行了

DSDT提取与编译教程-面向小白

现在没有错误,就大功告成了,警告 是没有关系的。

接着,在左上⻆,导出你的DSDT文件

DSDT提取与编译教程-面向小白

格式为ACPI Machine Language Binary,名称为DSDT.aml

最后步骤

将你的DSDT.aml文件拷⻉到,EFI/CLOVER/ACPI/Patch下,重启,看看能不能正常进系统,如果可 以,那就代表这个DSDT以后你可以直接用了。

支付宝赞助
微信赞助
GZXiaoBai

黑苹果资深大佬 黑苹果研究所群:706372078

DSDT提取与编译教程-面向小白:等您坐沙发呢!

发表评论