# DSDT 补丁

通过DSDT的方式修复问题

本篇仅作基本的介绍和指引,更多实际应用请前往其他解决特定问题的板块进行查看

# 介绍

由于黑苹果安装的硬件并不在Apple的官方支持范围内,我们的黑苹果在使用时由于这些硬件差异性经常会出现各种问题。比如笔记本电池电量无法显示、亮度无法调节、笔记本的快捷功能按键无法使用等等。为了解决这些问题,我们需要对我们的硬件量身定制一套黑苹果方案。这里就要来介绍DSDT/SSDT。

# 什么是DSDT

ACPI 全称为 Advanced Configuration and Power Interface ,即高级配置和电源管理接口,是由 HP、Intel、Microsoft、Phoenix 和 Toshiba 共同开发,用来定义能够为主板上设备提供操作系统配置和电源管理的硬件和软件接口的公开的行业规范。它能在操作平台独立的方式下描述系统硬件并且以固定格式的数据结构或者 AML 形式表示,最主要的 AML 表便是 DSDT。此外还有SSDT,中文为系统服务描述符表。

# DSDT补丁的基本原理

DSDT打补丁的过程可以理解为:假设你的笔记本屏幕亮度控制的硬件入口为A,但是在标准的苹果硬件上,这个接口写作α,但其实两者底层原理是一样的或者说互相的访问的兼容的,那么你要让你的黑苹果系统能够正确访问到亮度调整的接口,就要为这个入口A起一个别名,让黑苹果系统访问α接口时跳转到A接口,从而实现黑苹果系统的亮度控制。
此处对于DSDT补丁的叙述仅仅是补丁功能的一小部分,更加深入的了解DSDT请参看扩展阅读。

# 为什么一般DSDT补丁不能通用

如果你尝试使用来自另一台电脑的 DSDT,那么你几乎总会以失败告终。你很难验证来自其他电脑的 ACPI 文件是否有效。如果你使用外来的 ACPI 文件,有时即使硬件配置上的细微差别(BIOS 版本,内存大小,BIOS 的设置以及其它硬件差异)也会导致系统不稳定,出现莫名其妙的问题。这些硬件配置差异会导致地址空间的差异,从而导致一台计算机的 DSDT 并不适合另一台计算机。即使同一型号的电脑,也经常会发生配置了不同的主板这种情况,从而导致 ACPI 文件的各不相同。

# DSDT打补丁基本流程

打补丁的过程一般分为以下几步:

  1. 获取原始文件
  2. 反编译原始文件
  3. 分析和过滤原始文件
  4. 打补丁
  5. 保存(编译)和安装

# 工具

iasl,下载地址如下

# DSDT提取

提取DSDT的几种方法

  • acpica 的 acpiextract 命令
  • Clover 的 F4 功能键,保存原始 DSDT 到 /EFI/ACPI/origin
  • linux 下的 cat /proc/....
  • DPCIManager 的 Extract DSDT
  • Clover Config 的 Export

因为提取的内容是一样的,因此虽然获取方式不同,但最终得到 DSDT 是没有任何区别的。

# 扩展阅读

中文资源

英文资源

Last Updated: 3/11/2020, 6:58:53 AM