Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 635404|回复: 5127

[教程] 威廉第三的MAC系列教程(一) ——使用ACPI Patcher制作DSDT补丁      关闭 [复制链接]

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 15:39:16
本帖最后由 威廉第三 于 2009-5-22 15:20 编辑

很早就开始接触Hacintosh了,也经常出没在各个hacintosh论坛,因此也积累了不少知识,但是很多东西都是英文的,却没有人引进到国内,导致很多人都不了解Hacintosh社区最新的进展,或者知其然不知其所以然,因此我在这里抛砖引玉,把自己知道的一些知识写出来和大家分享,也是想引出更多高手来。

      第一篇我想给大家介绍如何使用ACPI Patcher制作DSDT补丁。

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

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

      ACPI的信息包括:
      配置信息,这些信息从legacyPNP设备的配置,到多处理器,到NUMA,比如现在的MultipleCore的信息就只能从ACPI得到。Linux启动很多代码就是处理这些配置信息,比如APICIOAPIC设置等。
      ACPI相关设备,主要是笔记本电脑相关的设备,包括电源按钮,电池,外接电源,风扇,热键等。
      底层硬件,比如PCI中断路由,chipset(主要是南桥PCI-to-LPCbridge)操作等。
      电源管理ACPI定义的电源管理包括CPU的电源管理(调频率P-stateidleC-statethrotting T-state),设备电源管理(D-state),系统电源管理(Suspend-to-Ram,Suspend-to-Disk, power off)等。
      设备热插拔ACPI用一种统一的方式来描述设备的热插拔,这样的设备从单一的PCI设备,到笔记本电脑的DockingStation,到整个PCI hierarchyCPUMemory,甚至整个NUMA节点。

      可以说要理解现代PC平台必须了解ACPIACPI主要是由很多表(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规范,所以因为BIOSbug,这些代码本身可能有错,导致其他的系统,如linuxmac os出错。

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

      但是DSDT补丁怎么制作,却很少有人能详细的介绍,mac上的软件基本上只能制作解决双核,acpi问题的dsdt.aml,要想解决更多的问题,就必须回到windows,使用insanelymac论坛里的一款软件ACPIPatcher,这个软件相对比较复杂,今天我们就来了解一下这个软件的用法。

1.jpg


      软件界面如上图,左上可以指定bios和制作补丁,右上是具体选择补丁选项的地方,左下是输出信息,右下可以看到进度。
先来看左上部分各个标签的具体作用。

      BIOSPatch选择一个bios制作dsdt.aml,选择bios文件和指定输出dsdt.aml目录之后,选中GenerateDSDT.aml,然后按下Patch Bios按钮即可,输出目录不可以是bios目录,否则会出错

      DSDTPatch对一个已有的DSDT.aml进行acpi修复,选择DSDT.aml,指定输出目录,按下PatchAML即可

      ImportDSDT用已有的DSDT.dslbios打补丁,选择输入dsl文件和bios,按下PatchBios即可

      ExportDSDTbios里解出DSDT.dsl文件,选择bios文件和输出目录,按下Exact即可

      D/CDSDTDSL编译成AML文件,或者AML文件反编译成DSL文件,取决于选中Compile还是Decomplie,选中Compile的时候如果同时选中Patchbefore compile,可以在把DSL编译成AML文件的时候打上ACPI补丁。

      看完了左上的标签我们来看最重要的部分,右上bugfix的详细信息,

      General

      这里有三个最重要的修复,HPETPatchRTCPatchAliasesPatch,前两个可以解决一些时钟方面的问题,很多机器里如果有AppleIntelCPUPowerManagement.kext就会四国,或者不能正常使用,需要Disabler.kext,如果你选了前两项,从此可以扔掉Disabler.kext,因为AppleIntelCPUPowerManagement.kext可以正常工作了,第三个选项也许更加重要,AliasesPatch直接对应是否能开双核,对asusmsi的主板来说,这个选项是非常重要的,技嘉没有这个问题,选不选都无所谓。

2.jpg


      点击Fixes…可以看到一个新窗口

3.jpg


      这里都是一些针对编译时出现error或者warningfix,作者的意见是当出现这些error或者warning的时候可以选择,我的意见时全部选择,防止出现error或者warning,如果还有问题,就需要去网上搜索解决方案,自己动手修改代码然后再编译了。

      Network

      这里相对比较复杂,你需要知道硬件位置,这个可以用ioRegistryExplorer来看,Lan0应该是百兆网卡而GIGE是千兆网卡,FixGP9指增加一个GPIO9的控制项,UseTime Machine Fix修复Time Machine找不到内置网卡的问题,下面是针对技嘉P43 P45 Realtek 8111c千兆网卡的设置图,它的硬件位置在PEX 5

4.jpg


      Graphics

      这里合理设置后完全可以代替efi-stringnatitnvinjectnvdarwinnvkush等,首先在model那里选择显卡型号和显存大小,下面绿色的选项针对N卡,红色的针对A卡,N卡需要设置nvcap值,A卡需要设置FramebufferDevIDHardwarelocation需要用ioRegistryExplorer看下,PEGPUse DSDT GFX都要选中。

      这里以硬件地址PCI 0为例,分别给出nVidia8800 GT 512MBATI HD3870 512MB显卡的示例。

      nVidia 8800 GT512MB

5.jpg


      ATI HD3870 512MB

6.jpg


      Audio

      通过设置audio可以代替HDAEnabler.kext,设置很简单,AudioChipset里预置了三种,Realtek ALC888-0Realtek ALC888-2RealtekALC889aALC888分别对应address 0address 2,技嘉P43, P45板载的ALC888RealtekALC888-0ALC889Realtek ALC889a,此外还要选中Use HDEF Audio,下面以889为例

7.jpg



      看完bug fix来看看左下角的两个编译选项,ForceDSDT Compilation表示强制编译,即便出现错误,Stop on compilation Warning表示出现warning时停止编译,追求完美的人可以选择此项,因为0error0warningdsdt表示没有任何语法错误。

      右边还有一个选项是bios类型选择,根据你的bios类型选择Award还是AMI,技嘉的biosAward

8.jpg


      下面我们以技嘉GIGA EP43-UD3L为例,实际操作一次,显卡是nVidiaGeforce 9800 GTX 512MB,声卡是ALC888
设置输入输出路径,BIOS类型,Stopon warningGeneral设置

9.jpg


      补丁详细设置

13.jpg


14.jpg


10.jpg


11.jpg



      然后按下Patch Bios,运行完毕可以看到成功编译,而且可以看到编译过程中出现 0Errors, 0 Warnings, 0 Remarks, 660 Optimizations

12.jpg


      此时到输出目录里可以看到dsdt.aml,此外,bios文件下面还会生成patch过的以new结尾的bios文件,如ep43ud3l.f4.new,如果你确认dsdt.aml可以使用,那么这个bios也是可以使用的,有需要的话可以自行刷bios,不过刷机有风险,还请慎重。

      dsdt.aml的使用非常简单,首先确保你安装了支持dsdt的引导,如PC-EFIV9Chameleon1.0.12或者Chameleon 2 RC1,推荐最新的Chameleon2 RC1,然后把dsdt.aml放在系统盘的根目录或者Extra文件夹里,如果是efi分区启动,放在efi分区的Extra文件夹里就可以了。

      到此,本次讲座就算是结束了。全文完整的doc档和acpi patcher可以在附件下载到。

一点小更新,如果你用
acpi patcher得不到DSDT,比如ASUS,MSI的部分主板,你可以在linux下通过在终端里运行
cat /proc/acpi/dsdt > dsdt.aml
得到,然后用acpi patcher把它反编译得到dsdt.dsl就可以修改了
如果你可以进入mac,那么用附件里的getdsdt脚本也可以得到dsdt.dat,重命名为dsdt.aml即可
还可以参考yanjin的帖子http://home.pcbeta.com/space.php?uid=46240&do=blog&id=1602
此外yanjin另外一个帖子给手动修改的朋友提供了很多示例http://bbs.pcbeta.com/thread-486183-1-1.html


doc.rar

254.85 KB, 下载次数: 21200, 下载积分: PB币 -1

Patcher02Beta5.zip

405.97 KB, 下载次数: 58086, 下载积分: PB币 -1

getDSDT.rar

227 Bytes, 下载次数: 25437, 下载积分: PB币 -1

46

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
70143
帖子
2833
PB币
5824
贡献
0
技术
4
活跃
1307
发表于 2009-5-20 15:52:30
本帖最后由 mlhan 于 2009-5-20 16:53 编辑

不错,这个软件已经下载,一直等你发教程了。

上个IORegistryExplorer

IORegistryExplorer.zip

224.87 KB, 下载次数: 11577, 下载积分: PB币 -1

8

查看全部评分

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 16:04:18
2# mlhan
技嘉的主板是最适合做dsdt补丁的,非常的规范

Rank: 7Rank: 7Rank: 7

UID
70143
帖子
2833
PB币
5824
贡献
0
技术
4
活跃
1307
发表于 2009-5-20 16:12:18
可惜我的显卡HD4870不在支持列,多谢楼主,这个贴收藏了。

Rank: 7Rank: 7Rank: 7

UID
70143
帖子
2833
PB币
5824
贡献
0
技术
4
活跃
1307
发表于 2009-5-20 16:15:42
本帖最后由 mlhan 于 2009-5-20 16:48 编辑

教程二什么时候有啊?
顺便请楼主看一下我的网卡硬件位置是不是在PEX0???
1.jpg

Rank: 1

UID
735148
帖子
34
PB币
100
贡献
0
技术
0
活跃
0
发表于 2009-5-20 16:25:20
谢谢你了版主采纳了你的意见,我的电脑最后的配置是:
技嘉 GA-Ex58-ud3r     
CPU INTEL酷睿i7 920(盒)  
金士顿  2G  ddr3 1333  4根
蓝宝石  9800
希捷  sata a32 1T  
电源你给我找个650—800瓦之间的吧,
刻录机:先锋DVR-217VXL  
不知道去那找你,所以就在你的教程里给你留个言,但是能不能安装MAC,还是听困扰我的,款都打出去了。

Rank: 5Rank: 5Rank: 5

UID
596356
帖子
743
PB币
2073
贡献
0
技术
0
活跃
9
发表于 2009-5-20 16:40:08
非常好的教程.
期待出系列

Rank: 2Rank: 2

UID
582727
帖子
229
PB币
189
贡献
0
技术
5
活跃
3
发表于 2009-5-20 16:55:42
楼主 我的是微星X58 PRO 可以用这个方法吗 之前一直搞不定4核

此号已经退役,转向UID:780110

UID
510934
帖子
21208
PB币
309
贡献
0
技术
459
活跃
6
发表于 2009-5-20 17:21:20
先收藏慢慢看

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 17:32:47
可惜我的显卡HD4870不在支持列,多谢楼主,这个贴收藏了。
mlhan 发表于 2009-5-20 16:12

其实可以弄进去,但是natit里面含有4870mac版的rom,实在是有点大了,所以还是不要冒险的好,另外4870升级到10.5.7以后只需要natit就可以了,你可以把它放在extra里,记得加上root属性就行

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 17:36:34
教程二什么时候有啊?
顺便请楼主看一下我的网卡硬件位置是不是在PEX0???
mlhan 发表于 2009-5-20 16:15

你把ioreg发上来我看看,终端里运行 ioreg -l -w0 > dump.txt

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 17:36:59
楼主 我的是微星X58 PRO 可以用这个方法吗 之前一直搞不定4核
jiaofu999 发表于 2009-5-20 16:55

应该是可以的,你可以试试看

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 17:39:07
非常好的教程.
期待出系列
lanike88 发表于 2009-5-20 16:40

系列可能会出的比较慢,不过保证尽力多写几篇
头像被屏蔽

折腾者

Rank: 2Rank: 2

UID
439147
帖子
199
PB币
0
贡献
0
技术
1
活跃
66
发表于 2009-5-20 17:39:09
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 5Rank: 5Rank: 5

UID
303612
帖子
500
PB币
0
贡献
0
技术
0
活跃
29
发表于 2009-5-20 17:41:08
提示: 作者被禁止或删除 内容自动屏蔽

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 17:42:10
本帖最后由 威廉第三 于 2009-5-20 17:49 编辑
谢谢你了版主采纳了你的意见,我的电脑最后的配置是:
技嘉 GA-Ex58-ud3r     
CPU INTEL酷睿i7 920(盒)  
金士顿  2G  ddr3 1333  4根
蓝宝石  9800
希捷  sata a32 1T  
电源你给我找个650—800瓦之间的吧 ...
霹雳闪客 发表于 2009-5-20 16:25

i7平台内存是3通道的,2G*3就够了,显卡可以选索泰,Inno 3D,XFX的,电源可以到京东,易迅上的电源,找大容量的挑一个,这些网站我现在不方便上,我推荐一个的话就Antec TPN650吧,过了80plus铜牌认证了,嫌小就TPN750好了

UID
38564
帖子
1153
PB币
5534
贡献
1
技术
172
活跃
493

远景技术达人

发表于 2009-5-20 18:13:42
本帖最后由 威廉第三 于 2009-5-20 18:16 编辑
应该是可以的,你可以试试看
威廉第三 发表于 2009-5-20 17:36

刚刚看了下x58的bios,发现不能直接得到DSDT,如果你愿意的话,需要你手动在mac下获得dsdt,然后我可以帮你看下,能否修正,
在mac下获得dsdt的方法是运行附件里的脚本,然后可以在你的用户文件夹根目录找到dsdt.dat,把这个上传到论坛来

getDSDT.rar

227 Bytes, 下载次数: 468, 下载积分: PB币 -1

Rank: 7Rank: 7Rank: 7

UID
70143
帖子
2833
PB币
5824
贡献
0
技术
4
活跃
1307
发表于 2009-5-20 18:18:36
你把ioreg发上来我看看,终端里运行 ioreg -l -w0 > dump.txt
威廉第三 发表于 2009-5-20 17:36


你要的是这个dump吗? 给看看吧,麻烦你了

dump.txt.zip

107.4 KB, 下载次数: 110, 下载积分: PB币 -1

Rank: 5Rank: 5Rank: 5

UID
568216
帖子
1096
PB币
1073
贡献
0
技术
16
活跃
128
发表于 2009-5-20 18:53:32
精华呀!  本人英语水平不行 国外Hacintosh社区只能看懂一点.  楼主发的内容正是急需的,  本来是要刷bios开双核.
pb83
1

查看全部评分

Rank: 2Rank: 2

UID
143689
帖子
376
PB币
0
贡献
0
技术
2
活跃
1733
发表于 2009-5-20 19:47:23
不知我理解的对不对,好像最后还得刷BIOS,风险很大啊,外一制作的不对,再刷BIOS出了问题可就麻烦啦。我的技嘉主板不用DSDT还算正常,但我真的很想按楼主的方法来个一劳永逸,不过一想到要刷BIOS还是很担心的。不知我理解的对不对,是非得要重刷BIOS吗?
6

查看全部评分

回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件