如何使用ACPI Patcher制作DSDT补丁

作者&投稿:住怎 (若有异议请与网页底部的电邮联系)
如何使用ACPI Patcher制作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 theDifferentiated 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补丁怎么制作,却很少有人能详细的介绍,mac上的软件基本上只能制作解决双核,acpi问题的dsdt.aml,要想解决更多的问题,就必须回到windows,使用insanelymac论坛里的一款软件ACPIPatcher,这个软件相对比较复杂,今天我们就来了解一下这个软件的用法。

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

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

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

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

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

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

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

General:

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

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

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

Network:

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

Graphics:

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

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

nVidia 8800 GT512MB

ATI HD3870 512MB

Audio:

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

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

朋友,这是你的电脑误删了系统文件,或系统文件被顽固木马破坏!(答案原

创,原作者:力王历史)提示:急救箱无法联网,就用:“离线模式”!

1.下载个“360系统急救箱”,已经安装了“360安全卫士”的朋友,直接打开

“查杀木马”,“自定义扫描”的下面的“360系统急救箱”,点击它:

【1】。开始急救!急救完毕后,立即处理,重启!

【2】。开机后,“文件恢复区”,彻底删除文件!

【3】。“系统修复”,全选,立即修复!【关键】

【4】。网络修复,开始修复,重启电脑!【关键】

【5】。dll文件恢复,扫描一下,如果有丢失,添加恢复,没有就行了!

2。用“360安全卫士”的“系统修复”,点“IE常用设置”,“修改主页”,

“使用360安全网址导航”,点:“一键修复”!

3。用“360安全卫士”的“扫描插件”,然后再点:“清理插件”,把“恶评

插件”删除!

4。再用“360杀毒双引擎版”,勾选“自动处理扫描出的病毒威胁”,“全盘

扫描”与“自定义扫描”,病毒木马,再点删除!重启电脑后,来到“隔离

区”,点“彻底删除”!

5。木马查杀,“全盘扫描”与“自定义扫描”,查杀到木马,立即处理!重

启!“文件恢复区”,彻底删除!

6。再不行,试试:金山急救箱,勾选“扩展扫描”,立即扫描,完毕后,

立即处理,重启电脑!

7。再不行,试试:金山网盾,一键修复!

8。实在不行,只能:一键还原(方法:访问我的“百度空间”博客)或重装系统!

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

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

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

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

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

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

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

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

General:

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

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

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

Network:

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

Graphics:

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

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

nVidia 8800 GT512MB

ATI HD3870 512MB

Audio:

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

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

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

  目前市面上较流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三种类型。
Award
  Award BIOS是由Award Software公司开发的BIOS产品,在目前的主板中使用最为广泛。Award BIOS功能较为齐全,支持许多新硬件,目前市面上多数主机板都采用了这种BIOS。
AMI
  AMI BIOS是AMI公司(全称:American Megatrends Incorporated)出品的BIOS系统软件,开发于80年代中期,早期的286、386大多采用AMI BIOS,它对各种软、硬件的适应性好,能保证系统性能的稳定,到90年代后,绿色节能电脑开始普及,AMI却没能及时推出新版本来适应市场,使得Award BIOS占领了大半壁江山。当然现在的ami也有非常不错的表现,新推出的版本依然功能强劲。
Phoenix
  Phoenix BIOS是Phoenix公司产品,Phoenix意为凤凰或埃及神话中的长生鸟,有完美之物的含义。Phoenix BIOS 多用于高档的586原装品牌机和笔记本电脑上,其画面简洁,便于操作。
Insyde
  Insyde bios 是台湾的一家软件厂商的产品,是一种新兴的BIOS类型,被某些基于英特尔芯片的笔记本电脑采用,如神舟、联想。

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

补丁详细设置

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

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

dsdt.aml的使用非常简单,首先确保你安装了支持dsdt的引导,如PC-EFIV9,Chameleon1.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即可

很多人都知道使用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设备的配置,到多处理器,到NUM...


中站区18814183489: 如何使用ACPI Patcher制作DSDT补丁 -
祁贾特治: 很多人都知道使用DSDT补丁可以开双核,但DSDT的功能不仅仅如此,除了开双核,还可以可以修复ACPI缺陷(不需要Disabler.kext,原 版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),显卡(代替efistring),声...

中站区18814183489: intel compiler patcher怎么用 -
祁贾特治: 很多人都知道使用DSDT补丁可以开双核,但DSDT的功能不仅仅如此,除了开双核,还可以可以修复ACPI缺陷(不需要Disabler.kext,原版cpupowermanagement正常使用),RTC,HPET缺陷(原版kext正常工作),显卡(代替efistring),声卡(只是代替了HDAE...

中站区18814183489: intel compiler patcher怎么使用 -
祁贾特治: 这是intelCPU自带的核心显卡.hd4000是最早的核显.这个程序是显卡的选项程序,点击进入

中站区18814183489: BIOS里面,acpi suspend type 怎样设置最好! -
祁贾特治: S0 正常.无休眠. S1 CPU停止工作.唤醒时间:0秒. S2 CPU关闭.唤醒时间:0.1秒. S3 除了内存外的部件都停止工作.唤醒时间:0.5秒.(睡眠状态) S4 内存信息写入硬盘,所有部件停止工作.唤醒时间:30秒.(休眠状态) S5 关...

中站区18814183489: 如何制作自己的GHOST系统 -
祁贾特治: 第一.关闭系统还原,打开控制面板,双击“系统”,在弹出的对话框里选择“系统还原”选项,选中“在所有驱动器上关闭系统还原”,然后点“确定”就可以了.第二.关闭系统休眠,打开控制面板,双击“电源选项”,选择“休眠”,...

中站区18814183489: 联想小新700如何设置acpi -
祁贾特治: 不需要设置的,只要主板支持ACPI,默认就是开启的.管理所有电源管理接口标准.由于主板不同,bios也是有区别的.需要说明一下,可能有些主板没相关的设置,特别是些原装电脑主板.总的来说,具体主板具体设置.这里以awarbios主板为例设置开启acpi.开机猛按del键,进入主板bios,用鼠标找到Advanced bios featres标准设置选项,回车找到所有ACPI字眼的选项,将后面的选项参数都改为enablad或yes,然后在按一下f10键保存,再按y键或ok键退出.

中站区18814183489: 怎么制作适合任何主板的GHOST系统? -
祁贾特治: 十分钟打造适用所有电脑的Windows封装包对于那些经常需要给朋友攒机或者重新安装操作系统的电脑高手来说,每次安装Windows系统所经历的漫长等待无异于一次折磨.虽然身边有Ghost之类分区镜像软件,但是每台计算机配置不同造成...

中站区18814183489: 开启acpi自动配置是什么 -
祁贾特治: ACPI可实现以下功能 1、用户可以使外设在指定时间开关; 2、使用笔记本电脑的用户可以指定计算机在低电压的情况下进入低功耗状态,以保证重要的应用程序运行; 3、操作系统可以在应用程序对时间要求不高的情况下降低时钟频率; 4、操作系统可以根据外设和主板的具体需求为它分配能源; 5、在无人使用计算机时可以使计算机进入休眠状态,但保证一些通信设备打开 6、即插即用设备在插入时能够由ACPI来控制.

中站区18814183489: 如何在 Linux 终端下检查笔记本电池状态 -
祁贾特治: 在终端下检查笔记本电池状态 我们可以使用下面的三种方法来从命令行中查找到笔记本电池状态.方法一 – 使用 upower 命令 upower 命令预装在大多数的 Linux 发行版本中.为了使用 upower 命令来展示电池的状态,打开终端并运行如下命令:...

中站区18814183489: win7怎么运行dsdt editor -
祁贾特治: 论坛上随处可见.到处充斥着修改dsdt的软件.比如. dsdt auto pactor(但其中有好多坛友提出,自己的主板型号里面都没有).dsdt se (此软件集修改和修复于一身,我也汉化dsdt se了一下,下面有下载地址).还有dsdt edit& auto fix/...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网