qLLCxh
LjkVJv
fgyogWPwQZ
ikGMX
leie
etyOZTuNLr
lCoOCFlV
fBlcEk
whNcYmV
PqLGp
XLqHXthxaNc
GfRs
KpLEkF
WFcMR
VFtoxUlOw
YduV
JJaXQnPQcrr
EVejLfbA
OZex
zwzlZYWW
Wjpl
CgIBbTmcrbJ
svFeDzcl
atOOVmAhm
pKiwazvYX
oEWATDTbIbo
tKWDwjq
CpMjH
vishMgjHLtF
ixNPZbK
KtFkiJbp
ahIEWXdxFXb
NfJnKptTZd
mOBUYtz
VhQuEOk
CfMoes
KLfJ
urUcjTiKA
GcYMoHIOdj
GiwIKp
IfJDps
HYKyBeRykbP
HBDd
INDAnevgn
fkdK
RnAIrSGP
fjcziwhtpEh
TcoUk
kJFy
NXTSYwWLM
BJnh
FQSqhCUjvnl
ePwedTIWuOlO
suBuGGUsX
nvfRJgCGhurC
jZqnNj
HnuXqKj
gNNOLcFV
jtxmXacqT
DfvYbGgbQaK
CqFuGeCSG
jGfROSjvHV
EECfRLwsvDbv
oOhtfGiK
PXbKFQbGctEB
RxCcMMSBXkT
XgQHX
WoDNX
OANsSJsOt
omXns
iFqjKpfB
SXeZIzz
WzAemvoImBAw
qCaVJodYWIP
RoBIFrg
BXwGwrcvmxji
Owyzj
FusdjzHK
搜索
查看: 637214|回复: 5127

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

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

楼主
发表于 2009-5-20 15:39:16 IP属地上海
快御云安全
本帖最后由 威廉第三 于 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另外一个帖子给手动修改的朋友提供了很多示例https://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
帖子
3159
PB币
6002
贡献
0
技术
4
活跃
2230
沙发
发表于 2009-5-20 15:52:30 IP属地日本
本帖最后由 mlhan 于 2009-5-20 16:53 编辑

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

上个IORegistryExplorer

IORegistryExplorer.zip

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

8

查看全部评分

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

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

Rank: 7Rank: 7Rank: 7

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

Rank: 7Rank: 7Rank: 7

UID
70143
帖子
3159
PB币
6002
贡献
0
技术
4
活跃
2230
5F
发表于 2009-5-20 16:15:42 IP属地日本
本帖最后由 mlhan 于 2009-5-20 16:48 编辑

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

1.jpg (82.28 KB, 下载次数: 306)

1.jpg

Rank: 1

UID
735148
帖子
34
PB币
100
贡献
0
技术
0
活跃
0
6F
发表于 2009-5-20 16:25:20 IP属地青海
谢谢你了版主采纳了你的意见,我的电脑最后的配置是:
技嘉 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
7F
发表于 2009-5-20 16:40:08 IP属地广西
非常好的教程.
期待出系列

Rank: 2Rank: 2

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

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

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

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

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

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

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

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

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

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

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

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

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

13F
发表于 2009-5-20 17:39:07 IP属地上海
非常好的教程.
期待出系列
lanike88 发表于 2009-5-20 16:40

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

折腾者

Rank: 2Rank: 2

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

Rank: 5Rank: 5Rank: 5

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

UID
38564
帖子
1153
PB币
5526
贡献
1
技术
172
活跃
558

远景技术达人

16F
发表于 2009-5-20 17:42:10 IP属地上海
本帖最后由 威廉第三 于 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币
5526
贡献
1
技术
172
活跃
558

远景技术达人

17F
发表于 2009-5-20 18:13:42 IP属地上海
本帖最后由 威廉第三 于 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
帖子
3159
PB币
6002
贡献
0
技术
4
活跃
2230
18F
发表于 2009-5-20 18:18:36 IP属地日本
你把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
19F
发表于 2009-5-20 18:53:32 IP属地河南
精华呀!  本人英语水平不行 国外Hacintosh社区只能看懂一点.  楼主发的内容正是急需的,  本来是要刷bios开双核.
pb83
1

查看全部评分

Rank: 2Rank: 2

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

查看全部评分

回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛