本指南涵盖了如何在 macOS 上实现 Apple VTD 功能(适用于台式机和笔记本电脑)。按照本指南操作,您将能够使用 Clover 或 OpenCore 引导加载程序在 macOS 上启用 VT-d。
概述
Intel 的 VT-d 功能提供了内核 DMA 保护,这是一些 Thunderbolt 设备(例如 Antelope)所必需的。通过在 macOS 上启用 VT-d,可以使一些其他 Thunderbolt 设备(例如 Apple 的 Thunderbolt 转以太网适配器)正常工作。从 macOS Ventura 开始,启用 VT-d 是必须的。所有正常工作的网络适配器(包括内置适配器和 PCIe 适配器)都需要 VT-d。以下主题已对此进行了讨论。
要求
以下是在 macOS 上启用 VT-d 功能的要求。
母板 |
|
中央处理器 |
|
快速信息:
- 2012 年及以后的 CPU 均支持 Apple 的 VT-d 功能。任何更早的 CPU 即使是英特尔提供的,也缺乏 VT-d 功能。
- AMD CPU 在 macOS 上不支持 AMD-Vi,该功能类似于英特尔的 VT-d 功能,是内核 DMA 保护所必需的,也是部分 Thunderbolt 设备所要求的功能。这包括所有 AMD CPU。不过,可以使用 macOS Sierra 来解决这个问题。
- 在某些启用了 VT-d 的系统上,您可能会遇到网络中断。要解决这个问题,您需要修复 DMAR 表。有关更多信息,请参阅内存映射指南。
- 升级/降级 BIOS、更改 BIOS 设置和升级内存(RAM)可能会导致内存区域发生变化,您需要再次修补 DMAR 表。
在 macOS 上启用 Apple VT-D
以下是在 macOS 上欺骗图形的步骤。
步骤 1:在 BIOS/UEFI 中启用 VT-d
1. 在目标机器上,将系统启动到 BIOS。
2. 在 BIOS 下,找到 Intel VT-d。在某些机器上,名称可以只是 VT-d。在一些服务器主板上,该选项隐藏在 Northbridge 或 Chipset 选项卡下。
3. 设置VT-d
为Enabled
。
4. 重新启动系统并启动到 macOS。
步骤 2:配置 Quirks
下一步是通过编辑 config.plist 添加所需的更改。这两个引导加载程序(即 Clover 和 OpenCore)都支持这些更改。
对于 Clover:
1.挂载您的 ESP
2. 使用任何XML 编辑器从 EFI/Clover 目录打开您的 config.plist。
3. 在config.plist 的Arguments 下删除。
4.在 Quirks 部分 禁用quirk。
5. 保存您的 config.plist。
对于 OpenCore:
1.挂载你的 ESP
2. 使用任何XML 编辑器从 EFI/OC 目录打开你的 config.plist。
3.在 Kernel 部分 禁用quirk。
4. 从config.plist 部分中的 UUID 列表下的键中 删除。
5 . 保存你的 config.plistdart=0
Boot section
DisableIoMapper
DisableIoMapper
dart=0
boot-args
7C436110-AB2A-4BBB-A880-FE41995C9F82
NVRAM
笔记:
|
步骤 3:重启系统
完成上述所有步骤后,请重启系统以使应用的更改生效。建议至少重置 NVRAM两次。现在您应该已经启用了 VT-d。注意:如果您没有看到 AppleVT-d 或遇到网络问题,则需要修复 DMAR 表。具体步骤如下:
修复 DMAR 表
在一些系统上(通常是内存小于 64GB 的台式机和内存小于 16GB 的笔记本电脑),当你启用VT-d
某些特定设备(例如 Antelope 音频接口和其他支持 Thunderbolt 的设备)以及一些以太网卡的主要功能所需的功能时,系统会开始出现异常,网络设备(包括以太网和 WiFi)会突然停止工作。在“系统偏好设置”>“网络”中检查“设备”时,网络适配器会陷入循环,无限连接和断开,但始终无法连接。此外,如果你在 BIOS 中启用其他设备(例如 IGPU),WiFi 连接可能会中断。OpenCore
文档(DisableioMapper 部分)指出
“固件中 IOMMU 配置错误可能会导致以太网或 WiFi 适配器等设备损坏。例如,以太网适配器可能会无限循环处于连接和断开状态,而 WiFi 适配器可能无法发现网络。技嘉是出现这些问题最常见的原始设备制造商 (OEM) 之一。”
在运行 Big Sur 及更高版本的系统上出现了此类问题。为了解决这个问题,用户 @yosoyoco 提出了一个修复方案,其想法是通过从本机 OEM DMAR 表中删除保留的内存区域来修复 DMAR 表,然后进一步删除 OEM DMAR 表,并使用修复后的 DMAR 表(删除了保留区域)。虽然运行 Big Sur 及更高版本的系统(主要是消费类台式机和少量笔记本电脑)需要此修复程序,但一些用户也报告了 Catalina 及之前版本的此类问题。
步骤 1:提取本机 ACPI 表
第一步是提取本机 ACPI 表。为了获得最高级别的完整性,我们建议使用 Clover 进行提取。如果您不删除 DMAR 表,则可以直接使用 MaciASL 提取 DMAR 表。按照以下步骤使用 MaciASL 提取 DMAR 表
1. 下载 MaciASL。
2. 提取 MaciASL 并将其移动到应用程序文件夹。
3. 打开 MaciASL
4. 打开 DMAR Table usingFile>New From ACPI
选项,然后选择 DMAR


5. 转到文件,然后选择另存为选项。

6. 将出现一个对话框,询问保存文件的位置和文件格式。选择所需的位置,然后ACPI Machine Language Binary
在“文件格式”选项中选择。
7. 点击“保存”。
步骤 2:删除保留内存区域
获取 DMAR 表后,下一步是删除保留内存区域。要删除保留内存区域,请按照以下步骤操作。
1. 使用 MaciASL 打开DMAR.aml
文件。
2. 找到内存区域并将其删除。在我们的例子中,内存区域从第 70 行开始,到第 101 行结束。
如您所见,很明显,内存区域已被删除。这才是关键所在
3. 点击“编译”按钮,并在“编译器摘要”中查找错误。如果有错误,请修复,然后再次点击“编译”。

4. 使用选项保存对 SSDT 的更改File>Save
。

步骤 3:安装 SSDT
下一步是安装修复的 DMAR SSDT。按照以下步骤安装 SSDT。
1.挂载你的 ESP。
2. 取决于你的引导程序,
对于 Clover:
如果你使用的是 Clover,请复制SSDT-DMAR.aml
到 EFI/Clover/ACPI/patched 目录。
对于 OpenCore:
1.如果你使用的是 OpenCore,
2.请复制config.plist 的部分SSDT-DMAR.aml
中添加相同的 ACPI 条目
3. 保存你的 config.plist
步骤 4:删除原生 DMAR 表 下一步是删除原生 DMAR 表以防止加载,而是使用修复版本的 DMAR 表。按照以下步骤删除原生 DMAR 表。 1. 假设 ESP 仍处于挂载状态,
对于 Clover:
1. 使用任何XML 编辑器从 EFI/Clover 目录 打开你的 config.plist
2. 将其添加到config.plist 文件部分下的键中到列表中。
3 . 保存您的 config.plist。
对于 OpenCore:
1. 使用任何XML 编辑器从 EFI/OC 目录
2. 将其添加到下的键并启用该条目。
3 . 保存您的 config.plist。
步骤 5:重启系统。 完成上述所有步骤后,请重启系统以使应用的更改生效。建议至少重置 NVRAM两次。网络适配器现在应该稳定了。验证 AppleVTDACPI>Add
DMAR
Signature
Acpi>Drop Tables
SSDT-DMAR.aml
DMAR
TableSignature
ACPI>Delete
重启后,最后一步是检查并验证 AppleVTD 功能是否在 macOS 下加载。请按照以下步骤验证 AppleVTD。
1. 下载并打开IOReg。IOReg
- 验证 AppleVTD 属性。AppleVTD 属性位于 AppleACPIPlatformExpert 节点下。
评论0