-
很早就开始接触
Hacintosh
了,
也经常出没在各个
hacintosh
p>
论坛,
因此也积累
了不少知识,
但是很多东西都是英文的,
却没有人引进到国内,
导致很多人都不
了解
Hacintosh
社区最新的进展,
或者知其然不知其所以然,
因此我在这里抛
砖
引玉,把自己知道的一些知识写出来和大家分享,也是想引出更多高手来。
第一篇我想给大家介绍如何使用
ACPI Patcher
p>
制作
DSDT
补丁。
很多人都知道使用
DSDT
p>
补丁可以开双核,
但
DSDT
的功能不仅仅如此,
除了开双
核,
< br>还可以可以修复
ACPI
缺陷
(
不需要
,
原版
cpupowermanagement
正常使用),
RTC<
/p>
,
HPET
缺陷
(
原版
kext
正常工作
)
,显卡(代替
efistring
),
声卡(只是代替了
),网
卡(包括
TimeMachine
问题),此外
还可以解决其他很多奇奇怪怪的问题,因此建议尽可能使用
DSDT
补丁。
但是
DSDT
到底是什么东西,怎么这么神奇呢?这个要从
< br>ACPI
说起了,
ACPI
是<
/p>
Intel
(
i386
< br>,
x86_64
,
IA64
p>
)平台的标准固件规范,绝大部分
OS
需要
从
BIOS
得到的信息都可以从
ACP
I
得到,并且现在的趋势是未来的任何新的特性相关的
信息都只
能从
ACPI
得到。
ACPI
的信息包括:
配置信息
,这些信息从
legacyPNP
设备的配置,到多处理器,到
NUMA
,比如现
在的
MultipleCore
的信息
就只能从
ACPI
得到。
Linux<
/p>
启动很多代码就是处理这
些配置信息,比如
APIC
,
IOAPIC
设置等。<
/p>
ACPI
相关设备
,主要是笔记本电脑相关的设备,包括电源按钮,电池,外接电
源,风扇,热键等。
底层硬件
,比如
PCI
中断路由,
chipset
(主要是南桥
PCI-to-
LPCbridge)
操作
等。
p>
电源管理
,
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
。
A
CPI
主要是由很多表
(
Table<
/p>
)
组成
,
而
p>
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
每台机器都是一样的,这个是在<
/p>
acpispec
里指定的,但是每台机器都是不相同
的,所以不相同的设备大都是由
DSDT
表来描述
。它包含了很多
AML
代码。大多
数
BIOS
是针对
windows
开发的,
而
p>
windows
自己也不完全遵循
acpi
规范,
所以
因为
BIOS
的
bug
,这些代码本身可
能有错,导致其他的系统,如
linux
,
mac
os
出错。
我们可以手动修复这些
bug
使之兼容
MAC
系统。
DSDT
在
bios
里是以编译后的
aml
文件存在,需要把它解出来,反编译成
< br>aml
代码形式(
dsl
文件,
文本文件),
代码修改完毕再重新编译,替换掉
bios
里原来的
dsdt
表。不过
< br>PC-EFI
,
Chameleon
的出现,使得我们不再需要冒险刷
bios
,只要把制作好
的
文件放在根目录或者
/Extra<
/p>
文件夹里,
启动的时候就会自动使用这个
,
从而达到修复
ACPI
系统
bug
的作用。
但是
DSDT
补丁怎么制作,却很少有人能详细的介绍,
mac
上的软件基
本上只能
制作解决双核,
acpi
问题
的
,要想解决更多的问题,就必须回到
windows
,使用
insanelymac
论坛里的一款软件
ACPIPatcher
,这个软件
相对比
较复杂,今天我们就来了解一下这个软件的用法。
p>
软件界面如上图,左上可以指定
bios
和
制作补丁,右上是具体选择补丁选项的
地方,左下是输出信息,右下可以看到进度。
p>
先来看左上部分各个标签的具体作用。
BIOSPatch
:
选择一个
bios
制作
p>
,
选择
bios
文
件和指定输出
目录之后,选中
,然后按下
Patch
Bios
按钮即可,输出目录
不可以是
bios
目录,否则会出错
DS
DTPatch
:对一个已有的
进行<
/p>
acpi
修复,选择
,指定输出
目录,按下
PatchAML
< br>即可
ImportDSDT
:用已有的
对
bios
打补丁,选择输入
dsl
文件
和
bios
,
按下
PatchBios
即可
p>
ExportDSDT
:从
bios
里解出
文件,选择
b
ios
文件和输出目录,按下
Exact
即可
D/CDSDT
:
< br>DSL
编译成
AML
文件,或者
AML
文件反编译成
DSL
文件,取决于选中
Compile
还是
Decomplie
,选中
Compile
的时候如果同时选中
Patchbefore
compile
,可以在把
DSL
编
译成
AML
文件的时候打上
ACPI<
/p>
补丁。
看完
了左上的标签我们来看最重要的部分,右上
bugfix
的详细
信息,
General
:
这里有三个最重要的修复,
HPET
Patch
,
RTCPatch
和
p>
AliasesPatch
,
前两个可以<
/p>
解决一些时钟方面的问题,很多机器里如果有
就会四国,或者不能正常使用,需要
,如果你选了前两项,
从此可以扔掉
,因为
< br>可以正常工作了,
第三个选项也许更加重
要,
AliasesPatch
直接对应是否能开双核,对
asus
,
msi
的主板来说,这
个选
项是非常重要的,技嘉没有这个问题,选不选都无所谓。
点击
Fixes…可以看到一个新窗口
p>
这里都是一些针对编译时出现
error
或
者
warning
的
fix
,
作者的意见是当出现
这些
error
或者
warning
的时
候可以选择,
我的意见时全部选择,
防止出现
< br>error
或者
warning
,如果还有问题,就需要去网上搜索解决方案,自己动手修改代码
然后再编译了。
Network
:
这里相
对比较复杂,你需要知道硬件位置,这个可以用
ioRegistryExplorer
来
看,
Lan0
应该是百兆网卡而
GIGE
是千兆网卡,
FixGP9
指增加一个
GPIO9
的控制
项,
UseTime Machine
Fix
修复
Time Machine
找不到内置网卡的问题,下面是
针对技嘉
P43 P45
Realtek
8111c
千兆网卡的设置图,它的硬件位置在
PEX 5
Graphics
:
这里合理设置后完全可以代替
efi-string
,
natit
,
nvin
ject
,
nvdarwin
,
nvkush
等,
首先在
model
那里选择显卡型号和显存大小,
下面绿色的选项
针对
N
卡,
红
色的针对
A
卡,
N
卡需要设置
nvcap
值,
A
p>
卡需要设置
Framebuffer
和
p>
DevID
,
Hardwarelocat
ion
需要用
ioRegistryExplorer
看下,
PEGP
和
Us
e DSDT GFX
都
要选中。
这里以硬件地址
PCI
0
为例,
分别给出
nVi
dia8800
GT
512MB
和
ATI
HD3870
512MB
显卡的示例。
nVidia 8800 GT512MB
ATI HD3870 512MB