DSDT的制作

进入制作DSDT之前我们总该要知道DSDT到底是什么东西吧,所以首先讲一下DSDT的概念。这个要从ACPI说起了,ACPI是 Intel(i386,x86_64,IA64)平台的标准固件规范,绝大部分OS需要从BIOS得到的信息都可以从ACPI得到,并且现在的趋势是未来 的任何新的特性相关的信息都只能从ACPI得到。ACPI的信息包括:配置信息、ACPI相关设备、底层硬件、电源管理、 设备热插拔,ACPI主要是由很多表(Table)组成,而DSDT(Differentiated System Description Table)是其中一个最主要的ACPI表之一。具体的我也不太清楚,反正就是用来描述硬件就是了(><)

 

DSDT包含了很多aml代码,大多数BIOS是针对Windows开发的,而Windows自己也不完全遵循ACPI规范。因为BIOS的 Bug,这些代码本身可能有错,导致其他的系统如Linux、Mac OS出错,所以我们要手动修复这些Bug使之兼容Mac系统。DSDT在BIOS里是以编译后的aml文件存在,需要把它解出来,反编译成aml代码形式 (dsl文件,文本文件),代码修改完毕再重新编译,替换掉BIOS里原来的DSDT表(现在提取DSDT已不需要BIOS文件,下面会介绍到 )。不过PC-EFI、Chameleon等的出现,使得我们不再需要冒险刷BIOS,只要把制作好的DSDT.aml文件放在Mac分区的根目录或者/Extra文件夹里,启动的时候就会自动使用这个DSDT.aml,从而达到修复ACPI系统Bug的作用(BootThink是放在/Darwin下面 )。

 

首先声明,DSDT不能达到驱动硬件的目的。前面已经提到过了,DSDT只是用来识别硬件的。如果系统里面没有自带你硬件的驱动,或者没有类似的驱动,制作DSDT也只会是徒劳,所以只能通过安装第三方的kext来驱动了。

网上介绍制作DSDT的方法很多,有在Windows下制作的,也有在Mac下制作的,我就是在Mac下制作的,使用的软件是DSDTSE,非常的方便。先说一下在Windows下的方法吧。

在Windows下制作DSDT,我们使用到的软件有Everest和ACPI Patcher。其中Everest用来提取系统的DSDT,ACPI Patcher用来生成DSDT.aml。另外,ACPI Patcher自带一些修复DSDT的选项比如驱动显卡、声卡、网卡,如果里面没有你的型号的话还是不要使用了,我还是推荐手动修改。基本步骤如下:

 

  1. 打开Everest,在Everest底部状态栏右键弹出菜单,点击ACPI Tool。

  2. 点击Save DSDT,生成的是后缀为bin的文件,这个就是一个类似于未打补丁的DSDT.aml的文件,我们就是利用这个文件制作DSDT。

  3. 接下来就要使用使用ACPI Patcher对上面生成的bin文件打补丁并生成aml文件了。请在右边选择正确的主板产商,如果是Phoenix则不需要改变,使用默认的Award即可。

  4. 选择DSDT Patch这个菜单,指定源文件为上述的bin文件,再指定一个输出路径,点击Patch AML即可。左下角的提示框在编译的时候会有信息产生,一定不能产生errors;warnings倒无所谓,除非你追求完美。

  5. 如果产生了错误,要先使用“D/C DSDT”菜单项把bin文件转换成dsl文件,然后用编辑工具进行编辑。编辑好之后,仍然使用D/C DSDT菜单项将该dsl文件打补丁并编译为aml文件。如果你选择了右边的几个选项,编译成aml文件的时候一定要选择“Patch before compile”。

**************************

  • 软件名称:APCI Patcher
  • 软件版本:0.2 Beta 5
  • 下载地址:http://u.115.com/file/f9fc49f849

在Mac下使用的是DSDTSE,使用和Windows差不多。不过使用DSDTSE可以直接打开DSDT编辑窗口,相对方便很多。而且还提供了很 多warnings和errors的解决方法,具体我也就不介绍了。下次再介绍一下一般的warnings和errors的解决方法吧,感觉挺有用处的。

 

你可能感兴趣的:(warnings,windows,patch,table,system,linux)