如何在 macOS 上修复 DMAR 表 | 内存映射

概述


在某些系统上,当你启用VT-d(这是某些特定设备(例如Antelope音频接口和其他支持Thunderbolt的设备)的主要功能所必需的)时,系统会开始出现异常,所有网络设备(包括以太网和WiFi)突然无法工作。在“系统偏好设置”>“网络”中检查设备时,发现网络适配器处于循环状态,无限连接和断开,但始终无法连接。

摘自OpenCore文档(DisableioMapper部分)。

固件中 IOMMU 配置错误可能会导致以太网或 Wi-Fi 适配器等设备损坏。例如,以太网适配器可能会无限循环处于“链路连接-链路断开”状态,而 Wi-Fi 适配器可能无法发现网络。技嘉是出现此类问题最频繁的原始设备制造商 (OEM) 之一。

此类问题在运行 Big Sur 及更高版本的系统上有所体现。为了解决这个问题,用户 @yosoyoco 提出了一个修复方案,其思路是通过从原始 OEM DMAR 表中删除保留的内存区域来修复 DMAR 表,然后进一步删除 OEM DMAR 表,并使用修复后的 DMAR 表。

运行 Big Sur 及更高版本的系统需要此修复。不过,在 Catalina 及之前版本上也很少有用户报告此问题。

自 macOS Ventura 以来,启用 VT-d 是必须的。VT-d 是正常工作的网络适配器所必需的,包括内置网络适配器和基于 PCIe 的网络适配器。以下主题已对此进行了讨论。

快速信息:

  • 已启用 VT-d 的系统需要执行 DMAR 修复。请注意,在某些系统上,启用 VT-d 功能可能不会导致上述网络中断。但是,仍然建议执行 DMAR 修复以避免任何潜在问题。

要求:
要求与 VT-d 基本相同。

步骤 1:启用 Apple VT-d。
第一步是在 BIOS/UEFI 中启用 VT-d 功能。否则,提取原生 ACPI 表时将无法获取 DMAR 表。要启用 VT-d,只需在 BIOS/UEFI 中将 VT-d 设置为“已启用”即可。有关启用 Apple VT-d 的更多信息,请阅读下文。

步骤 2:提取原生 ACPI 表
下一步是提取原生 ACPI 表进行补丁。为了获得最高的完整性,我们建议使用 Clover 进行提取。如果您不知道如何操作,可以参考下方链接提供的指南。

步骤 3:修复 DMAR 表
1. 提取完成后,将 origin 文件夹复制到您选择的任意工作目录。
2
. 打开复制的 origin 文件夹
3. 找到该文件并将其复制DMAR.aml到您的工作目录。
4
. 下载 MaciASL。
5
. 使用 MaciASL 打开 DMAR.aml 文件。您应该会看到一个与下方截图类似的表格。

 

5. 找到内存区域并删除它们。在我们的例子中,内存区域从第 70 行开始,到第 101 行结束。

 

删除内存区域后,DMAR 表应类似于下面附加的屏幕截图。

屏幕截图 2022-01-23 上午 10.28.20-min.png

如您所见,现在很明显,内存区域已被删除。这就是本质

6。单击“编译”按钮。
7。转到文件菜单并选择“另存为”选项。确保在文件格式选择中选择 ACPI 机器语言二进制文件。

步骤 4:复制 DMAR SSDT
下一步是复制新修补的 DMAR 表。要复制 DMAR 表,请按照以下步骤操作。

1. 挂载您的 ESP
2. 如果您使用的是 OpenCore,请将步骤 #3 中的

新 SSDT 复制到目录中。如果您使用的是 Clover,请将步骤 #3 中的 SSDT 复制到目录中。

步骤 5:修改 EFI 配置 下一步是通过编辑 config.plist 添加所需的更改。两个引导加载程序(即 OpenCore 和 Clover)都支持这些更改。要修改,请按照以下步骤操作。
1. 挂载您的 ESP对于 OpenCore
2 从目录 中打开您的 config.plist
3. 导航到 ACPI 部分并实施以下更改ACPI
DMAR.amlEFI/OC/ACPIDMAR.aml |EFI/Clover/ACPI/patched


本节用于加载、阻止和修补 ACPI 表。各子节的说明如下。

添加
本节用于为您的系统添加 DSDT 和 SSDT 文件。这主要包括 USB 和 CPU 电源管理 SSDT。

所需设置包括:

小路* 价值 笔记
SSDT-DMAR 是的
  • 此 SSDT 删除了保留的内存区域块。
  • 此 SSDT 是修复具有无限链接循环的网络适配器所必需的。

删除
此部分允许阻止加载 ACPI 表。

所需的设置包括:

桌号* OemTableId 表长度 评论 全部 已启用 笔记
DMAR 0 删除 OEM DMAR 表 是的
  • 此补丁删除了 OEM DMAR 表。
  • 对于使用步骤 3 的所有系统而言都是强制性的。

保存你的 config.plist。

对于 Clover
1. 从 EFI/Clover 目录打开你的 config.plist
2. 导航到 ACPI 部分并实施以下更改

ACPI


此部分用于加载、阻止和修补 ACPI 表。各子部分说明如下。

删除表
此部分用于阻止加载 ACPI 表。

所需设置包括:

签名* 类型/键 字符串[表格]数字[长度] DropForAllOS 笔记
DMAR
  • 此补丁删除了 OEM DMAR 表。
  • 对于使用步骤 3 的所有系统而言都是强制性的。

SSDT
此部分用于在使用“排序顺序”时为您的系统添加 DSDT 和 SSDT 文件。如果您使用的是完整补丁的 DSDT+SSDT,请将“Drop OEM”设置为 true。使用此选项时,您还需要使用“排序顺序”。请参阅下面的“排序顺序”信息。SortedOrder此部分用于在使用“排序顺序”时为的系统添加 DSDT 和 SSDT 文件。如果您使用的是“排序顺序”配置,请将 SSDT-DMAR.aml 添加到列表中。

3. 保存您的 config.plist。

步骤 6:重新启动系统
完成上述所有步骤后,重新启动系统以使应用的更改生效。

原文链接:https://imacos.top/2025/06/27/0624/,转载请注明出处。
0
1. 本站所有资源解压密码均为imacos.top
2. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
3. 如有无法下载的链接,联系:邮箱271638927@qq.com,或直接联系QQ271638927进行反馈,我们将及时进行处理。
4. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:邮箱271638927@qq.com,我们将第一时间配合处理!

评论0

请先
终身会员限时上线 ☞ 限时永久会员折扣活动开始啦 > 查看优惠
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码