Linux平台提取DSDT,关于DSDT修改-提取软件以及使用方法【详解】

在此之前先说说DSDT的作用吧= =很多人老是问为什么在系统信息里面显示了,但是就是没法驱动。。。我再次声明:DSDT没有驱动功能,说白了它只是用来告诉Mac,电脑里面有某些硬件,所以在系统信息里面就能显示了~但是有没有驱动这要看Mac的有没有驱动可以支持你的硬件了。。。还有我们使用的DSDT文件是DSDT.aml(dsdt.aml)不是DSDT.dsl(dsdt.dsl)

=========================================================

DSDT如何使用

变色龙引导或者HJmac引导的话直接放到Mac盘的Extra文件夹的根目录,重启就行了~

PS:不要在问我说放在Extra/Extensions行不行或者放到其它地方行不行

====================================================

如何提取DSDT?

提取DSDT主要分为2种~第一种:Win下提取。第二种:Mac下提取。

这2种有什么提取出来的DSDT有什么区别么~~说实话:其实没多大区别~只要你的Mac没有用DSDT启动的话,提取出来的和Win是一样的(我是没发现什么不同,若是真有什么不同,请指正~)如果你的Mac已经加载了修改过的DSDT再来提取DSDT那么生成的DSDT就会和Win下提取的不同了。。。

视频教程:

=========================================================

Win下提取DSDT:

1.使用AIDA64 Extrem Edition(原名:EVEREST Ultimate Edition)

2.使用DSDT Editor(需安装JAVA)

3.其它(不做讨论)

使用AIDA64提取:

1.在状态栏空白处右键,如图

35fc4eed2d5e21fe0e2d538147a0d16f.gif

1z.jpg.thumb.jpg (22.65 KB, 下载次数: 177)

12/1/17 10:06 上传

2.选择ACPI Tool,如图

35fc4eed2d5e21fe0e2d538147a0d16f.gif

1.jpg (24.68 KB, 下载次数: 175)

12/1/17 10:06 上传

3.这时会出现一大堆的信息,我们无视他直接按Save DSDT保存

至此我们就把DSDT提取出来了~不过提取出来的DSDT是bin后缀的,自行把后缀改为aml(此时请不要直接拿去用,一般提取出来的DSDT都是有错误的),便可在DSDT Editor软件打开修改了。

使用DSDT Editor提取:

如图提取便可:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

2.jpg (15.58 KB, 下载次数: 230)

12/1/17 10:09 上传

提取后保存为dsl文件后便完成提取,此时的dsdt.dsl就是最原始的dsdt了(前提是你的Mac没有DSDT加载)=========================================================

Mac下提取DSDT:1.使用DSDTSE2.使用DSDT Editor(需安装JAVA)3.DSDTFixer4.其它(不做讨论)

使用DSDTSE提取:如图提取:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

3.jpg (12.53 KB, 下载次数: 165)

12/1/17 10:10 上传

35fc4eed2d5e21fe0e2d538147a0d16f.gif

4.jpg (22.71 KB, 下载次数: 152)

12/1/17 10:10 上传

提取后保存为dsl文件后便完成提取,此时的dsdt.dsl就是最原始的dsdt了(前提是你的Mac没有DSDT加载)

使用DSDT Editor提取:如图提取:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

5.jpg (12.58 KB, 下载次数: 139)

12/1/17 10:11 上传

35fc4eed2d5e21fe0e2d538147a0d16f.gif

6.jpg (21.86 KB, 下载次数: 128)

12/1/17 10:11 上传

35fc4eed2d5e21fe0e2d538147a0d16f.gif

7.jpg (25.33 KB, 下载次数: 153)

12/1/17 10:12 上传

提取后保存为dsl文件后便完成提取,此时的dsdt.dsl就是最原始的dsdt了(前提是你的Mac没有DSDT加载)=========================================================

DSDT修改软件的使用

在Win下我只是用DSDT Editor用法和Mac下的基本一样,所以这里我就只说明Mac下2个DSDT修改软件的使用及技巧。先对比下这2个软件:DSDTSE不需要安装JAVA(

DSDTSE和DSDT Editor都可以把dsl文件编译成aml~但是DSDTSE编译后如果有错误只会提醒你什么错误,错误在哪一行,但是没法定位到错误的地方需要你自己手动定位~而DSDT Editor就可以直接定位到错误的地方方便修改,其实无论是那个软件,它告诉你的错误在哪一行不代表哪一行就有错误~~有时只是某些地方缺了个}就可以出现一堆错误。所以这软件报告的错误不能全信,要根据实际情况进行修改~~

DSDT Editor不支持有中文名的aml文件(包括路径有中文名的都不行)~所以你要修改DSDT的时候最好不要有中文名,而DSDTSE这支持中文名的DSDT文件

DSDT Editor自带很多patch,可以快速patch进去,DSDTSE也自带很多,但是要手动修改进去~

这2个软件有时编译的情况不同,DSDTSE显示没错误,但是DSDT Editor则显示有错误~~不过一般DSDT Editor修复下错误就可以了(有时候这软件有点问题,可能太自动了,反而有时候出错~明明代码完全没问题可就是编译不过去,但是换DSDTSE就可以编译过去了)

DSDTSE还自带IORegistryExplorer软件,方便对自己的DSDT修改的时候进行参考。总的来说,2个软件各有优缺点~我2个都用= =你们的话就随便吧= =喜欢就行=========================================================DSDT Editor使用打开文件后

按F5进行编译,由图可知此dsdt有一个错误,点一下这个错误,他会自动定位到12733行错误的位置:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

8.jpg (11.75 KB, 下载次数: 316)

12/1/17 10:14 上传

但是有的错误这软件可以自动修复,此时只要直接点一下Fix errors错误就修复了~如图:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

9.jpg (11.31 KB, 下载次数: 138)

12/1/17 10:14 上传

当然有些错误自己修复,这软件修复不了,此时就要去google或者百度了~~有的人说能不能把警告的那些也修复了,其实那些一点也不影响dsdt的使用~完全没有必要~如果你是完美主义者,抱歉,我也没办法~~当然我可以提供一个办法给你,那就是使用DSDTFixer,这个软件可以提取DSDT也修复错误和警告什么的,还可以打补丁= =个人认为,如果自己有能力,最好自己修改DSDT。。。如果连这软件都不能修复你的警告什么的= =那你就只能另谋高就了~~不要跟我说什么会不会因为警告这些影响了睡眠啊,唤醒啊,usb没反应啊~~这样我会奔溃的~~完美主义者干脆买白苹果算了(话说即使是白苹果也不是完美的= =)

修复错误后,接下来是打上patch,该软件自带很多patch,如图:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

11.jpg (25.59 KB, 下载次数: 135)

12/1/17 10:17 上传

35fc4eed2d5e21fe0e2d538147a0d16f.gif

12.jpg (23.91 KB, 下载次数: 159)

12/1/17 10:17 上传

当然你也可以根据它的patch自己进行修改~毕竟有时候自动没手动安全~在打patch的时候要注意对比before和after里面的2部分代码~

35fc4eed2d5e21fe0e2d538147a0d16f.gif

13.jpg (26.99 KB, 下载次数: 143)

12/1/17 10:17 上传

确认无误后才按Apply,打完patch后编译看看又没有错误~~多注意保存~

当所有工作都修改好后,编译一次,没错误后如图保存dsdt.aml文件~~

35fc4eed2d5e21fe0e2d538147a0d16f.gif

14.jpg (25.95 KB, 下载次数: 129)

12/1/17 10:17 上传

名字要打dsdt.aml~~如果直接打dsdt的话保存后是没有后缀的

35fc4eed2d5e21fe0e2d538147a0d16f.gif

15.jpg (24.76 KB, 下载次数: 145)

12/1/17 10:17 上传

========================================================

DSDTSE使用教程

35fc4eed2d5e21fe0e2d538147a0d16f.gif

1.jpg (13.33 KB, 下载次数: 140)

12/1/17 10:24 上传

主界面

A:这里有相关错误的修改方法

35fc4eed2d5e21fe0e2d538147a0d16f.gif

2.jpg (25.15 KB, 下载次数: 110)

12/1/17 10:24 上传

B:这里有点类似于DSDT Edtiot的Patch,不过这给的只是方法,不能自动Pacth

35fc4eed2d5e21fe0e2d538147a0d16f.gif

3.jpg (17.04 KB, 下载次数: 135)

12/1/17 10:24 上传

C:这实际上就是IORegistryExplorer软件,可以查看系统的相关信息,便于修改

35fc4eed2d5e21fe0e2d538147a0d16f.gif

4.jpg (28.73 KB, 下载次数: 130)

12/1/17 10:24 上传

D:自定义代码部分(我从没用过= =)

E:提取档案

35fc4eed2d5e21fe0e2d538147a0d16f.gif

5.jpg (12.16 KB, 下载次数: 119)

12/1/17 10:24 上传

要先选择档案的类型,不然会提示错误

35fc4eed2d5e21fe0e2d538147a0d16f.gif

6.jpg (16.14 KB, 下载次数: 134)

12/1/17 10:24 上传

F:这个就是提取DSDT

35fc4eed2d5e21fe0e2d538147a0d16f.gif

7.jpg (24 KB, 下载次数: 135)

12/1/17 10:24 上传

G:打开编辑器面板,这个要说明下,这个的具体用途因人而已= =可以在这里面编译也可以在这里面对比2个DSDT~(我基本没用过)

35fc4eed2d5e21fe0e2d538147a0d16f.gif

8.jpg (14.84 KB, 下载次数: 124)

12/1/17 10:24 上传

右面板

35fc4eed2d5e21fe0e2d538147a0d16f.gif

9.jpg (14.95 KB, 下载次数: 151)

12/1/17 10:24 上传

A:编译DSDTB:安装DSDT(可以选择安装到EFI分区= =建议新手勿用= =后果自负~我也是新手,我从没用过)C:可以定位到DSDT的某一个位置,应该说是快捷搜索~~建议自己试试看,说不清楚= =(语文不过关)

35fc4eed2d5e21fe0e2d538147a0d16f.gif

10.jpg (13.22 KB, 下载次数: 128)

12/1/17 10:24 上传

D:在后面的框框里面输入你想搜索的内容即可E:搜索下一个F:D搜索框里面的内容全部替换为F替换框的内容= =(表达能力欠缺啊)G:转到DSDT某一行H:10进制转换为16进制I:自定义代码(有点和主面板的D一样)其实这个的用法是你要自己新建一个空白的,然后打上你的代码,在Name里面命名后点Add~~

35fc4eed2d5e21fe0e2d538147a0d16f.gif

11.jpg (23.05 KB, 下载次数: 141)

12/1/17 10:32 上传

35fc4eed2d5e21fe0e2d538147a0d16f.gif

12.jpg (18.22 KB, 下载次数: 132)

12/1/17 10:32 上传

这样在Load里面就会多出来你自己写的代码~~(这代码也只是给你以后自己参考用的=)

35fc4eed2d5e21fe0e2d538147a0d16f.gif

13.jpg (25.02 KB, 下载次数: 123)

12/1/17 10:32 上传

Cust .code folder就是显示自定义代码的文件夹

35fc4eed2d5e21fe0e2d538147a0d16f.gif

14.jpg (9.5 KB, 下载次数: 133)

12/1/17 10:32 上传

J:设置背景颜色

K:J设置完后要按K,下次重新打开DSDTSE颜色才会保持一直生效

L:还原默认背景颜色,还原后同样要按K

------------------------------------------------------------------------------------------------------------------------------

DSDTFixer使用教程

主面板:

35fc4eed2d5e21fe0e2d538147a0d16f.gif

15.jpg (13.54 KB, 下载次数: 113)

12/1/17 10:32 上传

可以选择A:获取本机DSDT

或者修复DSDT

35fc4eed2d5e21fe0e2d538147a0d16f.gif

16.jpg (16.24 KB, 下载次数: 136)

12/1/17 10:32 上传

点击出现如下

35fc4eed2d5e21fe0e2d538147a0d16f.gif

17.jpg (23.62 KB, 下载次数: 136)

12/1/17 10:32 上传

B:显示修复后的DSDT文件(此时得到只是修复了错误和警告什么的)

35fc4eed2d5e21fe0e2d538147a0d16f.gif

18.jpg (16.26 KB, 下载次数: 137)

12/1/17 10:32 上传

C:打开修复选项勾上自己需要的后Hack it!

35fc4eed2d5e21fe0e2d538147a0d16f.gif

19.jpg (34.25 KB, 下载次数: 140)

12/1/17 10:32 上传

然后在点Compile就会在编译一次如图

35fc4eed2d5e21fe0e2d538147a0d16f.gif

20.jpg (23.62 KB, 下载次数: 130)

12/1/17 10:32 上传

这时就要选B来得到编译以及修复后的DSDT文件了(此时得到的是打了patch的DSDT)

35fc4eed2d5e21fe0e2d538147a0d16f.gif

21.jpg (16.26 KB, 下载次数: 146)

12/1/17 10:32 上传

D:关闭

结束!!{:22:}

帖子提到的软件:

最好使用浏览器自带的来下载~

把DSDT Editor直接贴到论坛= =注意~需要事先安装Java才能运行~(装了Java后还打不开的,自行百度~)

看看威廉第三如何介绍“DSDT到底是什么东西”

很多人都知道使用DSDT补丁可以开双核,但DSDT的功能不仅仅如此,除了开双核,还可以可以修复ACPI缺陷(不需要Disabler.kext,原版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),显卡(代替efistring),声卡(只是代替了HDAEnabler.kext),网卡(包括TimeMachine问题),此外还可以解决其他很多奇奇怪怪的问题,因此建议尽可能使用DSDT补丁。

但是DSDT到底是什么东西,怎么这么神奇呢?这个要从ACPI说起了,ACPI是Intel(i386,x86_64,IA64)平台的标准固件规范,绝大部分OS需要从BIOS得到的信息都可以从ACPI得到,并且现在的趋势是未来的任何新的特性相关的信息都只能从ACPI得到。

ACPI的信息包括:

配置信息,这些信息从legacyPNP设备的配置,到多处理器,到NUMA,比如现在的MultipleCore的信息就只能从ACPI得到。Linux启动很多代码就是处理这些配置信息,比如APIC,IOAPIC设置等。

ACPI相关设备,主要是笔记本电脑相关的设备,包括电源按钮,电池,外接电源,风扇,热键等。

底层硬件,比如PCI中断路由,chipset(主要是南桥PCI-to-LPCbridge)操作等。

电源管理,ACPI定义的电源管理包括CPU的电源管理(调频率P-state,idleC-state,throtting T-state),设备电源管理(D-state),系统电源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。

设备热插拔,ACPI用一种统一的方式来描述设备的热插拔,这样的设备从单一的PCI设备,到笔记本电脑的DockingStation,到整个PCI hierarchy,CPU,Memory,甚至整个NUMA节点。

可以说要理解现代PC平台必须了解ACPI。ACPI主要是由很多表(Table)组成,而DSDT(Differentiated System Description Table)是其中一个最主要的ACPI表之一,它的定义如下

DSDT is an acronym for DifferentiatedSystem Description Table. Thistable contains the Differentiated Definition Block, which supplies theinformation and configuration information about the base system.

简单说就是包含了所有和基本系统(basesystem)不同的设备的信息,basesystem每台机器都是一样的,这个是在acpispec里指定的,但是每台机器都是不相同的,所以不相同的设备大都是由DSDT表来描述。它包含了很多AML代码。大多数BIOS是针对windows开发的,而windows自己也不完全遵循acpi规范,所以因为BIOS的bug,这些代码本身可能有错,导致其他的系统,如linux,mac os出错。

我们可以手动修复这些bug使之兼容Mac系统。DSDT在bios里是以编译后的aml文件存在,需要把它解出来,反编译成aml代码形式(dsl文件,文本文件),代码修改完毕再重新编译,替换掉bios里原来的dsdt表。不过PC-EFI,Chameleon的出现,使得我们不再需要冒险刷bios,只要把制作好的DSDT.aml文件放在根目录或者/Extra文件夹里,启动的时候就会自动使用这个DSDT.aml,从而达到修复ACPI系统bug的作用。

威廉第三介绍了DSDT好处,但很多人还是选择不使用DSDT,因为他的主板能很好兼容mac。我也来说说这个问题:我个人不同意这观点,不用DSDT都能很好兼容mac,那使用DSDT总不会让兼容性更低吧!!用DSDT只有好处又没坏处,为什么不使用?再说了,得到DSDT又不是很难或者要付出很大的代价,还有,如果要添加HDMI音频输出,没DSDT不行吧。。

接下来讲一些DSDT能修复哪些不兼容问题和DSDT一些基本知识。

我们最终使用的DSDT文件是dsdt.aml【名称不区分大小写,但千万不可使用不同主板的DSDT】,如果你使用变色龙【推荐】引导,放在mac分区的Extra文件夹

完整路径: /Extra/dsdt.aml

如果你使用Boot Think引导,放在C盘的Darwin文件夹

完整路径:C:\Darwin\dsdt.aml

跟DSDT很像的SSDT【非必要文件。SSDT用于控制自动降频,提升性能、解决CPU温度过高问题,视频教程中有演示】文件也是放在Extra文件夹,提取的文件依次命名为SSDT.aml、SSDT-1.aml 。。。编译通过的话在org.chameleon.Boot.plist添加

DropSSDT

Yes

复制代码

想深入学习SSDT去看p.H版主的帖子

自定义SSDT - 10.7.4电源管理优化 - 图文版

接下来说DSDT的作用

一,修复BIOS重置问题【RTC】

不用DSDT的话一般通过ElliottForceLegacyRTC.kext或LegacyAppleRTC.kext(2选1,不可共用)来修复该问题,用DSDT修复该问题后记得要把这两个kext删除。

二,LPC 原生电源管理、睡眠

最近比较新的主板很少能通过修改dsdt来加载电源管理,如果添加以下代码后还不能加载电源管理,别问为什么,这很正常。那就乖乖对kext打补丁吧

复制代码

有些主板原生支持电源管理,则无需在DSDT添加相关代码【我的HM55可以】。如果需要使用NullCPUPowerManagement.kext或者删除AppleIntelCPUPowerManagement.kext【不推荐】才能进系统,那你就要在DSDT添加电源管理代码。还有三个情况要说明一下:1,如果添加代码后还不支持电源管理,貌似要对kext打补丁;2,很多华硕主板无法在DSDT找到相关字段添加代码,不知道华硕不支持电源管理还是怎样?我没接触过华硕主板,遇到这些问题自行搜索;3,现在论坛里有Speedstep补丁,貌似也可以通过那个补丁加载电源管理。总之,先判断主板是否原生支持电源管理,如果不行再住DSDT代码里添加代码,如果还不行,再使用补丁。【添加电源管理后也要把NullCPUPowerManagement.kext删除(否则还是无法加载电源管理),有删除AppleIntel。。的话,重新安装回去】

三,内建网卡

如果没有内建网卡,无法登陆App Store、FaceTime等

10.7会提示

内建网卡.png

10.8会提示

Snip20121117_5.png

可通过在org.chameleon.Boot.plist添加

EthernetBuiltIn

Yes

复制代码

解决该问题。如果使用DSDT内建网卡后,也要记得把該行代码删除。

但并不是所有主板都要手动添加内建网卡代码,我的原始DSDT已经有内建代码信息,不过内建名称不是GIGE,而是

Device (PXSX)

{

Name (_ADR, Zero)

Name (_PRW, Package (0x02)

{

0x09,

0x04

})

}

复制代码

上面这段代码只是拿出来看一下!!!不是规范的内建代码,规范的内建代码请看附件里的word文档。内建网卡后

1. 删除/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist(显示隐藏文件,或者用前往方式)

2. 在系统设置偏好里/网络 里删除所有网络连接

3. 重新启动

4. 重新在系统设置偏好里/网络 里加所有网络连接

PS:USB网卡不能内建,如果不能驱动本地网卡(包括笔记本和台式机PCI无线网卡)并内建,意味着你永远无法登陆appstore。笔记本的话可以考虑换无线网卡,台式机考虑上一个PCI以太网卡或者无线网卡。只有这样才能解决appstore不能登陆的问题。

四,加载仿冒声卡驱动

这个跟仿冒声卡有关,请自行查看集合帖有关仿冒声卡的帖子。如果你没使用仿冒声卡,无需在DSDT添加仿冒声卡代码。贴一个通用简洁的仿冒声卡代码【需稍作修改,该代码附件里也有】,切记添加该段代码不可与万能声卡共用!!否则会五国。

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x06)

{

"layout-id",

Buffer (0x04)

{

0x0D, 0x01, 0x00, 0x00 //此处值看附件具体介绍

},

"device-name",

Buffer (0x0F)

{

"Realtek ALC269"//此处名称自定义

},

"PinConfigurations",

Buffer (Zero) {}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0)

}

五,添加显卡信息,辅助驱动显卡

显卡信息代码不通用,这边不作具体介绍【很复杂,分A卡、N卡,就算同一个牌子的卡也有很多种代码】。不过希望各位推荐几篇通过DSDT来完美显卡的帖子【特别是N卡】,给新手来个传送门。

我先推荐我自己的一篇救助帖【只适于假免驱的A卡】

ati 5XXX和6XXX免驱 但显卡名称不对,DVD意外退出的DSDT解决办法

六,USB内建、解决硬盘橙色、关机断电等问题

因为USB内建、关机断电代码不通用,不一定能解决问题,这边也不作具体介绍,要解决这些问题到集合帖看相关帖子或者搜索,【本文只提通用的DSDT代码】关于解决硬件橙色问题,也自行搜索代码。

看完这些你就可以开始动手提取DSDT、修改DSDT了。不过在修改DSDT之前

建议先到http://www.tonymacx86.com/11-dsdt-database.html看是否有你主板的DSDT【一定要对应你的主板型号和BIOS版本,技嘉主板几乎都有】,如果有直接下载该DSDT来稍作修改。

虽说是视频教程,但也写了这么多文字。。。

关于视频,打算多演示几个修复DSDT错误,但一不小心录长了。另外个人能力有限,视频演示之内容可能有错,还请高手指出,如果视频和本帖内容有矛盾地方,以此贴内容为准。

推荐使用aida64extreme提取原始DSDT文件

aida64extreme、Java for Mac、DSDT工具【已经包含DSDT基本修改文档下载地址: 百度网盘

MultiBeast 下载:传送门

【请使用本帖0.7版本的dsdt editor,在0.7编译没错的dsdt在0.8编译可能有错。还有,DSDT文件所在路径不能有中文】

复制代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值