共计 2158 个字符,预计需要花费 6 分钟才能阅读完成。
扩展阅读:
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 文件夹,拷⻉到了桌面
修复错误
即使同时反编译所有文件(使用 iasl 的 -da 参数),还是难免存在错误。反编译后的文件之所以 还会有错误,是因为一直以来 iasl 编译器的版本都在更新、iasl 的实现细节变化了、不同的电脑与系统环 境。存在这些错误的原因可能是(Rehabman 认为),里面调用到的一些方法,实际上是 Windows 内部 实现的(例如 MMTB 方法和 MDBG 方法)。实际也有这样的情况,ACPI 文件的代码原本就存在缺陷或 者某些代码本来就是无效的(很难说得清楚)。
打开编译出来的 DSDT.dsl 文件(用 MaciASL 软件:
,这是 Rehabman 的修改版)
https://github.com/RehabMan/OS-X-MaciASL-patc hmatic
最后步骤
将你的 DSDT.aml 文件拷⻉到,EFI/CLOVER/ACPI/Patch 下,重启,看看能不能正常进系统,如果可 以,那就代表这个 DSDT 以后你可以直接用了。