关键词不能为空

当前您在: 主页 > 英语 >

使用ACPI_Patcher制作DSDT补丁

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-13 11:55
tags:

-

2021年2月13日发(作者:猪鬃草)


威廉第三的


MAC


系列教程(一)



——


使用


ACPI Pa tcher


制作


DSDT


补丁




很早就开始接触


H acintosh


了,


也经常出没在各个


hacintosh


论坛,


因此也积累了不少知识,


但是很多东西都是英文的,


却没有人引进到国内,


导致很多人都不了解


Hacintosh


社区最新

< p>
的进展,


或者知其然不知其所以然,


因此我在这里 抛砖引玉,


把自己知道的一些知识写出来


和大家分享,也是想引 出更多高手来。










第一篇我想给大家介绍如何使用


ACPI Patcher


制作


DSDT


补丁。




很多人都知道使用


DSDT


补丁可以开双核,但


DSDT


的功能不仅仅 如此,除了开双核,还


可以可以修复


ACPI

< br>缺陷(不需要



,原版


cpupo wermanagement


正常使用)


RTC



HPET


缺陷

< p>
(


原版


kext


正常工作


)


,显卡(代替


efistring< /p>



,声卡(只是代替了


< br>)


,网卡(包括


TimeMachine


问题)


,此外还可以解决其他很多奇奇怪怪


的问题,< /p>


因此建议尽可能使用


DSDT


补丁。


但是


DSDT


到底是什么东西,

< p>
怎么这么神奇呢?


这个要从


ACPI


说起了,


ACPI



Int el



i386


x86_64



IA64


)平台的 标准固件规范,绝大


部分


OS


需要从< /p>


BIOS


得到的信息都可以从


ACPI< /p>


得到,并且现在的趋势是未来的任何新的


特性相关的信息都只能从


ACPI


得到。










ACPI


的信息包括:



配置信息


,这些信息从


legacyPNP


设备的配置,到多处理器,到


NUMA


,比如现 在的


MultipleCore


的信息就只能从


ACPI


得到。


Linux


启 动很多代码就是处理这些配置信息,比



APIC



IOAPIC


设置等。



ACPI


相关设备


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


热键等。



底层硬件


,比如


PCI


中断路由,


chipset


(主要是南桥


PCI-to-LPCbridge)


操作等。


< /p>


电源管理



ACPI

定义的电源管理包括


CPU


的电源管理

(调频率


P-state



idl eC-state



throtting

T-state




设备电源管理


(D-state)



系统电源管理< /p>



Suspend-to-Ram,Suspend-to- Disk, power


off


)等。



设备热插拔



ACPI


用一种统一的 方式来描述设备的热插拔,


这样的设备从单一的


PCI


设备,


到笔记本电脑的


DockingStat ion



到整个


PCI hierar chy



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.



简单说就是包含了所有和基本系统

< p>


basesystem



不同的设备的信息,


basesystem


每台机

< p>
器都是一样的,这个是在


acpispec


里指定 的,但是每台机器都是不相同的,所以不相同的


设备大都是由


D SDT


表来描述。它包含了很多


AML


代码。大多数


BIOS


是针对


wind ows


开发的,而


windows


自己 也不完全遵循


acpi


规范,所以因为


BIOS



bug


,这些代码本身


可能有错,导致其他的系统,如


linux



mac os


出错。我们可以手动修复这些

< br>bug


使之兼容


MAC


系统。< /p>


DSDT



bios

里是以编译后的


aml


文件存在,需要把它解出来,反编译 成


aml


代码形式


< br>dsl


文件,


文本文件)



代码修改完毕再重新编译,


替换掉


bios


里原来的


dsdt


表。


不过


PC-EFI



Cham eleon


的出现,使得我们不再需要冒险刷


bios


,只要把制作好的



文件放在根目录或者


/Extra


文件夹里,


启动的时候就会自动使 用这个




从而达到修复


ACPI


系统


bug


的作用。




但是


DS DT


补丁怎么制作,却很少有人能详细的介绍,


mac


上的软件基本上只能制作解决


双核,


acpi< /p>


问题的




要想解 决更多的问题,


就必须回到


windows


使用


insanelymac


论 坛里的一款软件


ACPIPatcher


这个软件相对比较复杂,


今天我们就来了解一下这个软件


的 用法。






软件界面如上图,左上可以指定


bios


和制作补丁,右上是具体选择补丁选项的地方,左下


是输出信息,右下可以看到进度。



先来看左上部分各个标签的具体作用。




BIOSPatch


:选择一个


bios


制作



,选 择


bios


文件和指定输出


< p>
目录之后,


选中



,然后按 下


Patch


Bios


按钮即可,输 出目录不可以是


bios


目录,


否则会 出错




DSDTPatch


:对一个已有的



进行


a cpi


修复,选择



,指定输出目录,< /p>


按下


PatchAML


即可




ImportDSDT



用已有的




bios


打补丁,


选择输入


dsl


文件和


bios



按下


PatchBios


即可




ExportDSDT


:从


bios


里解出



文件, 选择


bios


文件和输出目录,按下


E xact






D/CDSDT


< br>DSL


编译成


AML


文件,


或者


AML


文件反编译成

< br>DSL


文件,


取决于选中


Com pile


还是


Decomplie


,选 中


Compile


的时候如果同时选中


Patchbefore compile


,可以在把


DSL< /p>


编译成


AML


文件的时候打上

< p>
ACPI


补丁。




看完了左上的标签我们来看最重要的部分,右上


bugfix


的详细信息,




General





这里有三个最重要的修复,


HPET Patch



RTCPatch



AliasesPatch


,前两个可以解决一

些时钟方面的问题,很多机器里如果有



就会四国,


或者不能正常使用,


需要




如果你选了前两项,


从此可以扔掉




因为



可以正 常工作了,第三个选项也许更加重要,


AliasesPatch


直接对应是否能开双核,



asus



msi


的主板来说,


这个选项是非常 重要的,


技嘉没有这个问题,选不选都无所谓。






点击< /p>


Fixes


?可以看到一个新窗口






这里都 是一些针对编译时出现


error


或者


warning



fix


,作者的意见 是当出现这些


error




warning


的时候可以选择,我的意见时全部选择,防止出现


error


或者


warning


,如果还


有问题,就需要去网上搜索解决方案,自己动手修改代码然后再编译 了。


Network




这里相对比较复杂,你需要知道硬件位置,这个可以用


ioRegistry Explorer


来看,


Lan0


应< /p>


该是百兆网卡而


GIGE


是千兆网卡,< /p>


FixGP9


指增加一个


GPIO9


的控制项,


UseTime Machine


Fix


修复


Time Machine


找不到内置网卡的问题,下面是针对技嘉


P43 P45 Realtek 8111c


千兆网卡的设置图,它的硬件位置在


PEX 5






Graphics




这里合理设置后完全可以代替


efi-string

< p>


natit



nvin ject



nvdarwin



nvkush


等,首先在


model


那里选择显卡型号和显存大小,下面绿色的选项针对


N

< br>卡,红色的针对


A


卡,


N



需要设置


nvcap


值,


A


卡需要设置


Framebuf fer



DevID



Hardwarelocation


需要用


ioReg istryExplorer


看下,


PEGP

< br>和


Use DSDT GFX


都要选中。




这里以硬件地址


PCI 0


为例,分别给出


nVidia8800 GT 512MB



ATI HD3870 512MB



卡的示例。










nVidia 8800 GT512MB












ATI HD3870 512MB






Audio





通过设置


audio


可以代替



,设置很简单,


Au dioChipset


里预置了三种,


Realtek ALC888-0



Realtek ALC888-2



RealtekALC889a



ALC888


分别对应


address 0



address


2


,技嘉


P43,

< br>P45


板载的


ALC888


选< /p>


RealtekALC888-0



AL C889



Realtek


ALC889a


,此外还要选中


Use HDEF Audio


,下面以


889


为例







看完


bug fix


来看看左下角的两个编译选项,


ForceDSDT C ompilation


表示强制编译,即便


出现错误,


Stop on compilation Warning


表示出现< /p>


warning


时停止编译,


追求完美的 人可以


选择此项,因为


0error



0warning



dsdt


表示没有任何语法错误。



< br>右边还有一个选项是


bios


类型选择,


根据你的


bios


类型选择


A ward


还是


AMI



技嘉的


bios



Award






下面我们以技嘉


GIGA EP43-UD3L


为例,


实际操作一次,


显卡是


nVidiaGeforce 9800 GTX


512MB


,声卡是


ALC888



< p>
设置输入输出路径,


BIOS


类型,


Stopon warning



General< /p>


设置






补丁详细设置













然后按下


Patch Bios



运行完毕可以看到成功编译,


而且可以看到编译过程中出现



0Errors,


0 Warnings, 0 Remarks, 660 Optimizations







此时到输出目录里可以看到



,此外,


bios


文 件下面还会生成


patch


过的以


ne w



尾的


bios

文件,如



,如果你确认


< p>
可以使用,那么这个


bios


也是


可以使用的,有需要的话可以自行刷


bios


,不过刷 机有风险,还请慎重。











的使用非常简单,首先确保你安装了 支持


dsdt


的引导,如


PC-EFI V9



Chameleon1.0.12


或者


Chameleon 2 RC1


推荐最新的


Chameleon2 RC1



然后把



放在系统盘的根目录或者

Extra


文件夹里,


如果是


ef i


分区启动,


放在


efi


分区的


Extra


文件


夹里 就可以了。




到此,本次讲座就算是 结束了。全文完整的


doc


档和


acp i patcher


可以在附件下载到。




一点小更新,如果你用


acpi p atcher


得不到


DSDT


,比如< /p>


ASUS,MSI


的部分主板,你可以在


linux


下通过在终端里运行


cat /proc/acpi/dsdt >



得到,然后用


acpi patcher


把它反编译得到



就可以修改了



如果你可以进入


mac


< br>那么用附件里的


getdsdt


脚本也可以得到




重命名为


< p>
即可








yanjin





/?uid= 46240&do=blog&id=1602



< p>


yanjin















< br>提








/



一点小更新,


如果你用


acpi pa tcher


得不到


DSDT



比如


ASUS,MSI


的部分主板,

< p>
你可以在


linux


下通过在终端里运行



cat /proc/acpi/dsdt >


得到,然后用


acpi patcher


把它反编译得到



就可以修改了



如果你可以进入


mac


< br>那么用附件里的


getdsdt


脚本也可以得到




重命名为


< p>
即可



还可以参考


yan jin


的帖子


/?uid=46240&do=blog&id =1602




yanjin





< p>
















例< /p>


/




修改< /p>


n7as


主板的


AMI BIOS


解决安装


leopard


问题




1




使用< /p>


MMTool


提取:



做过给


AMI BIOS


添加


SLIC


以激活


VISTA

的用户对


MMTool


应该很熟悉,我们这次的目的和


添加


SLIC


类似,都是要修改

< p>
ACPI



n7as


的< /p>


dsdt


表与



其他主板不同,不在


1B


模块,而是



10


模块



名 称叫



,独立存在。


< br>因此提取


10


模块


< p>
取名叫



。同样提取


10< /p>


的时候要选中“In uncompressed form”。




winhex


打开

< br>


模块文件,


看文件


< p>
是否是


dsdt


开头,


w akh


结尾。



,

另存为




2




修改


DSDT


这时我们需要


intel


的一个工具――iasl,下载地址为:


/download/



< /p>


们只需要里面的





首先反编译


DSDT


,在命令行下 输入:



iasl -d


得到一个



,这是个文本文件,打开找到代码的最前面,把


Scope ( _PR)


后面的大


括号里


Alias< /p>


开头的那四行删掉,保存。



然后重新



编译:



iasl


生成新的




3




用新的


DSDT


替换原


DSDT

< p>
同样是用


winhex


来编辑刚才的


10


模块。替换的时候有个问题,


ACPI


里面每个表都对应一


个偏


移量,在替换的时候如果不想带来其它改动,就要保证这个偏移量不变。如果


DSD T


表的大小变了,就会影响后面的表的偏移量,这是我们要避免的。




于新的

DSDT


比老的要小,所以并在结尾补上一些


0

< p>
,保证结束地址不变。另外还要把新



DSDT< /p>


紧挨着最后一个“WAKh”右面的一个字节改成


2E

< p>





改方式如下(参考):




winhex


打开



,打开新的



1)

< br>全部选中


10


模块中,将其全部置为

0




2)



文件中全部选中,复制,



3)


粘贴到


10

模块中;



4)


将新粘入的内容 后面的第一个


0


改成


2E


。其他仍然保持为


0


。保存退出。

< br>



最后用


MMTool


把新的


10


模块替换到

BIOS


文件中,刷入。重启,祈祷??



整个过程必须慎之又慎,因为是手动替换


DSDT


表, 如果出错后果自不必说。当然真刷坏了


也不是啥大不了的事,只要有备份,找个修电脑的 再刷回去



就行。





手动修改的例子:



听说苹果新的



mac




macbook


都是用的


mcp79


的平台加扣肉。为了追求完美的< /p>


mac



入了一个昂达的


n7as


主板,配合我原有的




扣肉


6300


,开始了我的


mac


历程。




一开始,哇,不要说原版


leopard 10.5.6


就是


ipc 10.5.6 , ideb1.4 *** 10.5.6


没有一个能正常


安装。


ideb1.4


,可以安装但是不能启动



,还不如我原先的七彩虹


975x


主板。怎么办。问


google .


通过一番搜索,


明白了这是



著名的


CPUS=1


问题是

< br>bios




acpi dsdt


不兼容导致的。



我阅读了如下帖子。



/bbs/


/?showtopic=90505



里面讲述了如何修改


dsdt


解决



cpus=1


的问题,但是我照着做时,发现无法走通,经过研


究发现,我的


bios


与文中的不同,我的


dsdt

< p>


-


-


-


-


-


-


-


-



本文更新与2021-02-13 11:55,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/649993.html

使用ACPI_Patcher制作DSDT补丁的相关文章