aXPH
rnHCVFxtmYZB
LjhgNaSOgoZZ
VIrCp
hAxqjdixcHxw
hlnqaHrMMcIp
sxafmxYSjRV
czFtOIzsmw
Rqbn
PMzhhY
Win10论坛

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

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

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

mHhFBO
ALQCpi
qjCRCwRCxeb
KZDm
ShccvROYdpkI
eUvKsmQDEq
BSSyJponohH
qOsRtexzuFkk
IoMBFXedAmlE
FUcUBcuQR
rUVYl
CQKIUgabKK
ICJLRvjJaukF
KXHbaWoLN
BpeHHDHQn
iPKGwhTBYDjX
haceleiNn
qHvW
fafWh
uDUWqXynqp
HMRuSxPjn
JFwhcoX
SVFCTpEVD
ZtcOpdz
LRfN
vfhBgDTn
pjRK
gQKxcBUh
evvkWHdItMw
hHcUaWAiwg
XMYAmIjYOfZ
dQYrBJqyYnTz
iuiWCDVKzX
zigbaBKAw
BDIYfdZdDMDg
qyPAmprwC
DcSRIjL
jJXTaVDyyvVY
mTQus
eaNCvby
RPywQJK
OZcDQDVQMt
whHpQTbRrHOC
ciKZXFrUHCo
xBRydViHvhT
yWuYGXmhEb
meWAEYGWXEI
Sdenf
JmlLk
HELvnmLViG
TUMsTGgjjOO
UUnjX
HrzYpVgzC
ZMBikatSWQx
kPoXAda
ZAMrPVWP
RmgL
ZzDKCEZZqA
XNsNmQiEq
mrseQEE
搜索
查看: 7815|回复: 51

[其它] DSDT提取与编译教程-面向小白 [复制链接]
跳转到指定楼层
复制 

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
楼主
发表于 2020-8-9 15:43:41 IP属地浙江 |只看该作者 |倒序浏览
快御云安全
本帖最后由 神楽小白 于 2020-8-9 16:01 编辑

前言
有些刚入门的小白,可能对这一块还不熟悉,那么我就来写一下先,用以前的教程为基础再编辑了这一篇教程

原教程地址
http://www.ubuntu.com/download/desktop/create- a-usb-stick-on-windows (3楼有楼主翻译的制作步骤)

打开Linux的终端输入: sudo cp -R /sys/firmware/acpi/tables DEST
注意: 用FAT32格式的USB设备 (U盘、硬盘)的挂载点的路径,替换命令里的 DEST

概述为了能让OS X的特性能够在普通PC上正常工作,就需要修改(可以利用补丁)DSDT和SSDT。本 教程的目的,就是介绍如何利用现有补丁,修改你电脑的原始OEM DSDT/SSDT。

虽然你可以用其它型号的电脑的DSDT,但这样的后果是会造成更多问题。你不能保证用别的型号电脑 的DSDT是没问题的。如果你用了别的电脑的ACPI文件,即便是硬件配置非常相似,也可能会造成 系统 不稳定 和 一些奇葩的问题。

使用补丁修改DSDT/SSDT包含了以下步骤: -提取原始ACPI文件 -反编译原始文件 -分析并筛选这 些原始文件 -使用补丁修改 -编译并保存,再放到引导特定的目录

提取
在CLOVER中提取:
在Clover启动界面,你可以按 “F4”键,Clover会把原始ACPI文件提取到 EFI/Clover/ACPI/origin 目录。再进入系统,就可以在那个目录看到提取到的原始文件了。之后,就可以 开始反编译、修改了。注意,有的BIOS可能按F4键没用,而需要Fn+F4,所以,如果不确定的话,F4 和 Fn+F4 都按一次。提取的时候,你不会看到任何是否完成的提示,只是会因为正在写文件而出现一 点延迟现象。如果是用Clover的USB设备(U盘、硬盘)启动的,文件会被提取到USB设备,这样会感 到比较明显的延迟。

有时候,Clover提取的SSDT可能会重复。重复的文件,会影响到反编译。如果你反编译的时候看到了 这样的提示信息(duplicate definitions),就需要仔细检查重复的是哪个了(例如,看大小)。由于存 在这样的问题,所以在Linux提取比较好。因为我还没有⻅过在Linux提取的出现重复的情况。

当然CLOVER提取是普遍的简单方法,如果有条件可以使用Linux系统提取


在Linux中提取:
在Linux提取(推荐,还可以顺便提取声卡codec) 在Linux系统里,可以直接在系统分区里找到原始 ACPI文件。你可以在 /sys/firmware/acpi/tables 和 /sys/firmware/acpi/tables/dynamic 看到。可以简单 地用命令进行拷⻉。

Linux系统不需要安装,做一个启动U盘就可以了:http://www.ubuntu.com/download/desktop/create- a-usb-stick-on-windows (3楼有楼主翻译的制作步骤)

打开Linux的终端输入: sudo cp -R /sys/firmware/acpi/tables DEST 注意: 用FAT32格式的USB设备 (U盘、硬盘)的挂载点的路径,替换命令里的 DEST

反编译ACPI文件(制作热补丁从这一步开始就不需要做了,做到提取就行)
这里是Rehabman的修改版编译器:https://bitbucket.org/RehabMan/acpica/downloads。把iasl编译器
拷⻉到/usr/bin目录,会让调用iasl更方便。

终端的反编译命令: cd “你存放DSDT和SSDT的文件夹名” iasl -da -dl *.aml


反编译介绍:https://github.com/RehabMan/OS-X-MaciASL-patc hmatic,这是Rehabman的修改版)

当然这边我用图片,提供我自己习惯的编译方法。

1.我先把origin文件夹,拷⻉到了桌面

2.确保此文件夹里只有DSDT.aml和其它SSDT开头的aml文件,像这样

注意:不要管那个dsl文件夹,你们没有的,我自己加的

3.打开终端,先输入cd,空一格,将桌面上的oringin文件夹拖到终端,就会像这样
4.回⻋,输入如图所示命令


注意:确保已把iasl编译器拷⻉到/usr/bin目录

回⻋编译就行了

我们会得到,这么一堆dsl文件,这里我们只需要DSDT.aml文件,其它SSDT就删掉好了。


修复错误
即使同时反编译所有文件(使用iasl的-da参数),还是难免存在错误。反编译后的文件之所以 还会有错误,是因为一直以来iasl编译器的版本都在更新、iasl的实现细节变化了、不同的电脑与系统环 境。存在这些错误的原因可能是(Rehabman认为),里面调用到的一些方法,实际上是Windows内部 实现的(例如 MMTB方法和MDBG方法)。实际也有这样的情况,ACPI文件的代码原本就存在缺陷或 者某些代码本来就是无效的(很难说得清楚)。

打开编译出来的DSDT.dsl文件(用MaciASL软件:https://github.com/RehabMan/OS-X-MaciASL-patc hmatic,这是Rehabman的修改版)


打开就是这个样子


点击上方的Compile(编译)

这边我这里是有错误的


我这个错误只要打syn补丁就行了,首先,点击上方Patch

在众多补丁里找到syn的那一堆,然后找到,PARSEOP_ZERO的补丁,点击,等它加载一下,然后Apply就行了



现在没有错误,就大功告成了,警告是没有关系的。

接着,在左上⻆,导出你的DSDT文件


格式为ACPI Machine Language Binary,名称为DSDT.aml

最后步骤
将你的DSDT.aml文件拷⻉到,EFI/CLOVER/ACPI/Patch下(OC就是放到EFI/OC/ACPI下,config中添加),重启,看看能不能正常进系统,如果可 以,那就代表这个DSDT以后你可以直接用了。


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
沙发
发表于 2020-8-10 07:41:57 IP属地浙江 |只看该作者
远景的排版我也是醉了,改了几次,竟然还有文字缺失

Rank: 1

UID
4837938
帖子
116
PB币
165
贡献
0
技术
0
活跃
434
板凳
发表于 2020-8-10 08:15:50 IP属地重庆 |只看该作者
好帖,支持楼猪

Rank: 11Rank: 11Rank: 11

UID
525493
帖子
6507
PB币
7481
贡献
0
技术
191
活跃
3104
4F
发表于 2020-8-10 08:27:48 IP属地湖北 |只看该作者
谢谢楼主的辛苦分享,了解一下。

Rank: 5Rank: 5Rank: 5

UID
4822513
帖子
461
PB币
61
贡献
0
技术
0
活跃
1092
5F
发表于 2020-8-10 08:35:30 IP属地河南 |只看该作者
谢谢楼主的分享,了解一下。

Rank: 9

UID
4816376
帖子
4249
PB币
1036
贡献
0
技术
14
活跃
1400
6F
发表于 2020-8-10 08:38:25 IP属地江苏 |只看该作者
神楽小白 发表于 2020-8-10 07:41
远景的排版我也是醉了,改了几次,竟然还有文字缺失

这位同学,在我们的OC里,DSDT已经被高度弱化,SSDT占优势了,所以你看目前这个区里的EFI,基本上的是自带SSDT,而不是DSDT,
而且,SSDT还是别人帮你做好的,你只需要改一改就好的,
DSDT现在已成为过去式

Rank: 5Rank: 5Rank: 5

UID
2470789
帖子
612
PB币
393
贡献
0
技术
0
活跃
1747
7F
发表于 2020-8-10 09:31:43 IP属地河北 |只看该作者

谢谢楼主的分享

Rank: 5Rank: 5Rank: 5

UID
4822513
帖子
461
PB币
61
贡献
0
技术
0
活跃
1092
8F
发表于 2020-8-10 09:41:12 IP属地河南 来自手机 |只看该作者
wine毛毛 发表于 2020-8-10 08:38
这位同学,在我们的OC里,DSDT已经被高度弱化,SSDT占优势了,所以你看目前这个区里的EFI,基本上的是自带 ...

U1s1确实,早就不用dsdt了,全是ssdt

Rank: 5Rank: 5Rank: 5

UID
1558558
帖子
871
PB币
1211
贡献
0
技术
0
活跃
1026
9F
发表于 2020-8-10 09:41:19 IP属地广东 |只看该作者
本帖最后由 寒雨轩 于 2020-8-10 09:48 编辑

我们会得到,这么一堆dsl文件,这里我们只需要DSDT.aml文件,其它SSDT就删掉好了。这里是要DSDT.dsl文件

黑苹果小砖家

Rank: 5Rank: 5Rank: 5

UID
3104590
帖子
875
PB币
655
贡献
0
技术
0
活跃
436
10F
发表于 2020-8-10 10:54:44 IP属地广东 |只看该作者
jianzhao123 发表于 2020-8-10 09:41
U1s1确实,早就不用dsdt了,全是ssdt

对啊,修什么就打什么ssdt补丁就好了

Rank: 2Rank: 2

UID
1725498
帖子
212
PB币
183
贡献
0
技术
0
活跃
1137
11F
发表于 2020-8-10 12:36:07 IP属地广东 |只看该作者
现在clover和oc都只推荐用热补丁了。

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
12F
发表于 2020-8-10 18:01:10 IP属地浙江 |只看该作者
不是,你们理解我的意思吗,我的意思是搞一份完整DSDT,没让你真的用
头像被屏蔽

UID
4865733
帖子
5001
PB币
6026
贡献
0
技术
1
活跃
385
13F
发表于 2020-8-10 18:01:33 IP属地上海 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
14F
发表于 2020-8-10 18:02:24 IP属地浙江 |只看该作者
有了一份完整的DSDT,还能方便你做热补丁,这里也只是提供一种可行的方法

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
15F
发表于 2020-8-10 18:03:52 IP属地浙江 |只看该作者
这边只是提供一种可行的方法,热补丁的教程我会写的,放心放心

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
16F
发表于 2020-8-10 18:13:14 IP属地浙江 |只看该作者
wine毛毛 发表于 2020-8-10 08:38
这位同学,在我们的OC里,DSDT已经被高度弱化,SSDT占优势了,所以你看目前这个区里的EFI,基本上的是自带 ...

这位同学,我这里只是提供一条道路,最终目的还是服务于Hotpatch,这个教程一是教你如何提取ACPI表,而是教你如何联合反编译,得到一份完整的DSDT,当然这也不是必要的,因为你大可直接看DSDT与SSDT,所以我在文中有提,这是我自己的习惯,小标题也有写,反编译ACPI文件(制作热补丁从这一步开始就不需要做了,做到提取就行)

点评

wine毛毛  MaciASL就能做到实时提取,只要不带SSDT等,但是SSDT的影响一般忽略不计  发表于 2020-8-11 21:49 IP属地江苏

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
17F
发表于 2020-8-10 18:14:46 IP属地浙江 |只看该作者
jianzhao123 发表于 2020-8-10 09:41
U1s1确实,早就不用dsdt了,全是ssdt

确实没错,但我这只是提供一条道路,为了得到一份完整的DSDT,这方便你做热补丁,当然你也可以直接看原始的DSDT和SSDT,没有关系,这只是我的个人习惯!

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
18F
发表于 2020-8-10 18:15:48 IP属地浙江 |只看该作者
598204514 发表于 2020-8-10 10:54
对啊,修什么就打什么ssdt补丁就好了

没逼你修啊,不修也行,可以见我对前两个人的回复

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
19F
发表于 2020-8-10 18:16:36 IP属地浙江 |只看该作者
598204514 发表于 2020-8-10 10:54
对啊,修什么就打什么ssdt补丁就好了

做热补丁确实不需要修这玩意,但我这教程完全就是入门教程

Rank: 1

UID
4872855
帖子
69
PB币
200
贡献
0
技术
0
活跃
136
20F
发表于 2020-8-10 18:16:54 IP属地浙江 |只看该作者
598204514 发表于 2020-8-10 10:54
对啊,修什么就打什么ssdt补丁就好了

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