分享

DSDT提取、修改等基础视频教程及DSDT编译错误修改方法【从零开始轻松使用上DSDT】

 Photoshop321 2016-05-08
本帖最后由 绝情奶牛 于 2012-12-27 23:59 编辑

本帖非技术帖,勿灌水、勿顶!!不要回复与此贴无关的内容。本帖属于初级教程,没有含金量,只是做个视频给大家看看。想要深入研究DSDT的朋友,强烈推荐Z版的帖子。

一年前开始折腾Hackint0sh,过程却很坎坷,不是我玩苹果,而是苹果玩我。当时A卡很难驱动,特别是4系列,要修改Frambuffer,如果我的显卡能得到Frambuffer倒没什么,可我那破卡得不到任何信息,还要通过Ubuntu提取文件来猜Frambuffer【18组】,更难受的还不知道要替换哪个Ati Config【18*?】,好了,修改好Frambuffer还得安装mac变色龙。当时creazybird还没更新变色龙,能找到一个安装版的变色龙算很幸运了,哪里像现在这么幸福【
向crazybirdy大神致敬,一直在更新变色龙】 。由于我把Mac安装在逻辑分区了,不管手动还是使用变色龙安装包都无法引导系统,而且坛子里的帖子也很少介绍如何在逻辑分区安装mac变色龙,安装变色龙都花了整整一下午时间。我想现在还有很多人不知道可以在逻辑分区安装mac变色龙吧。
关于安装mac 版变色龙(以win盘为活动分区)和修改wowpc变色龙方法

为什么我非要安装mac变色龙呢?侦测显卡GraphicsEnabler=Yes)!!以前很多人BootThink,以前还没有wowpc,所以侦测显卡只能通过mac变色龙!!除了显卡,我的其它硬件都很容易并能全部驱动。在驱动上全部硬件后就开始搞捣鼓DSDT,坛子里有很多DSDT的初级教程,我看的第一篇DSDT帖子是
[教程] 威廉第三的MAC系列教程(一) ——使用ACPI Patcher制作DSDT补丁
不过说实话,那时以我对黑苹果的了解,不会使用ACPI Pathcher—因为它的局限性,所以不推荐新手接触该软件。不过威廉第三的那篇帖子还是很值得看得,因为那篇帖子是坛子里唯一一篇详细介绍“DSDT到底是什么东西”

前面花了很多精力折腾显卡、mac变色龙,我对黑苹果都有恐惧感了。在看了威廉第三的上面那篇神帖和他另一篇帖子后
威廉第三的小秘密 --- Snow Leopard一定需要DSDT补丁吗?
最终我放弃了DSDT,由于我没使用DSDT并使用了额外乱七八糟的kext,mac性能很差,还经常五国死机,再加上被当时很流行的一句话影响:珍惜生命、远离苹果。最后就把mac删除了,之后有3个月没Hackintosh。扯这么多废话,主要说明刚开始接触黑苹果的时候我也是一笨菜鸟,还是最笨那只,所以刚接触黑苹果的每只菜鸟没理由怕DSDT。虽然我很笨,但我只发过2篇救助帖【当时还是无解的】,因为我善于搜索、拼命爬帖。
看看威廉第三如何介绍“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添加
复制代码
想深入学习SSDT去看p.H版主的帖子
自定义SSDT - 10.7.4电源管理优化 - 图文版




接下来说DSDT的作用


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

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


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


复制代码


有些主板原生支持电源管理,则无需在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添加
复制代码
解决该问题。如果使用DSDT内建网卡后,也要记得把該行代码删除。
但并不是所有主板都要手动添加内建网卡代码,我的原始DSDT已经有内建代码信息,不过内建名称不是GIGE,而是
复制代码
上面这段代码只是拿出来看一下!!!不是规范的内建代码,规范的内建代码请看附件里的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./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文件所在路径不能有中文】

DSDT Editor For win:
DSDT Editor.zip (1.31 MB)
(下载次数: 41841, 2012-7-21 13:43 上传)

下载积分: PB币 -1


视频中的word文档下载:
DSDT基本修改.zip (891.24 KB)
(下载次数: 31120, 2012-12-27 23:59 上传)

下载积分: PB币 -1




上视频。。该视频支持超清【720P】,请选择超清模式并全屏观看,否则看不清楚。



视频播放地址:  传送门

视频下载地址: QQ旋风  迅雷快传




后面楼层用于更新DSDT常见错误、警告及修复方法
更新方法:如果谁提取原始DSDT文件后按照视频或帖子里的方法
无法修复错误,可直接上传原始DSDT文件【acpi_dsdt.bin】,我会尽我最大努力修复错误。

但是给你们伸手的机会也要有前提:在此帖中本人只作原始DSDT文件修改,如果谁添加什么代码出错后再上传,我不会修改,因为我能力有限。还有,如果你真的要伸手,请确定你按照视频操作并且此贴也还没更新该错误的修改方法,你才可以上传附件让我帮你修改,如果视频中有提到或者此贴已经更新该错误,一率不理这些伸手党。给你们伸手的机会是为了让后面的人不用去伸手。
最后还
要说明的是:因个人能力、时间有限,肯定不能帮每个人修改DSDT。

今天写帖有点累了,后面慢慢更新一些DSDT常见错误修改方法。




























    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多