是否可以通过 UEFI 在启动 Windows 的 MacBook Pro 2011 上启用音频?

是否可以通过 UEFI 在启动 Windows 的 MacBook Pro 2011 上启用音频?

有人可以帮助理解 Linux 和 Windows 在 UEFI 启动期间枚举 PCI 设备的方式之间的差异吗?

已知问题是,在 MacBook Pro 2011 上启动 Windows UEFI 会导致没有声音 - 这是设备管理器中的 Intel HD 音频控制器的标志。

但在Linux(FreeBSD等)中都可以看到音频子系统。

我想知道在 Windows 启动之前在 GRUB 中使用 SETPCI 是否可以修复该问题,或者使用 UEFI shell 设置 PCI 寄存器是否可以修复该问题。但这不是它的强项。

因此,任何想法、指示或解释都是非常有用的。

答案1

我解决了Apple Stack Exchange 网站上的这篇文章

该链接将为您提供一些截图以供参考,但下面是答案文本的副本。


如果有人仍然感兴趣,我已经找到了 MacBook Pro 2011 Windows 10 UEFI 安装音频的解决方案 - 我花了 4 年时间才弄清楚。我从一个仅与此相关的教程中得到了答案另一个论坛帖子

本质上,我们知道的是,在纯 EFI 启动时,Windows 没有“看到”正确的音频设备。

令我感到沮丧的是,许多像我一样的用户在他们的 MacBook Pro 2011 上安装了大量 UEFI,而这些操作系统可以毫无问题地“看到”高清音频控制器。

那么 Windows 做了什么不同的事情呢?

  • 我曾在 UEFI shell(rEFIt 包中提供的 shell)中摆弄过 MM 命令,但无济于事。
  • 我曾尝试将 SETPCI 命令从 GRUB 传递到 Windows 10,但没有成功。

引自上面的其他论坛链接让我头晕目眩

“Windows 系统的 DSDT 表根桥定义(ACPI PNP0A08 或 PNP0A03)通常局限于预留的 32 位空间(小于 4GB),该空间足够容纳笔记本电脑的 PCIe 设备。然后设置水印 TOLUD 值并将其锁定在系统固件中。Windows 操作系统遵守根桥定义并将在其中分配 PCIe 设备。macOS 会忽略根桥约束,Linux 在使用“pci=noCRS”参数启动时也是如此。这两个操作系统都不需要 DSDT 覆盖,并且可以在巨大的 64 位 PCIe 地址空间中自由分配。”

因此,Windows“尊重”根桥,而 macOS/OS X 和 Linux 则忽略它。嗯……有趣。

作为一名也从事 Hackintoshes 的人,我非常了解 DSDT 以及如何编辑它们以帮助 macOS/OS X 在自制 PC 硬件上运行。

我尝试在 USB 闪存驱动器上安装 Clover(UEFI 引导加载程序,几乎与 Hackintoshes 同义),并将 MacBook Pro 2011 中的 DSDT 放入/Clover/ACPI/Windows文件夹中。仍然没有结果。我认为将 Windows 指向 DSDT 就足够了。

顺便提一下,有些人在使用 Clover 时,他们的 Mac 电脑会变砖,我个人从来没有遇到过这个问题。论坛讨论上面描述的就是这样一种情况。

如果您按照指南并制作修改后的 DSDT(将“qwords”添加到 dwords 部分),您可以通过两种方式对其进行测试。

新增加的“qword”部分。

我使用 Maciasl 提取并编辑我的 DSDT 以添加“qword”部分 - 我将 DSDT 放在两个位置/EFI/Clover/ACPI/Patched[不确定这是否重要] 和/EFI/Clover/ACPI/Windows

在启动过程中按住Alt/Option键,我从 Clover USB 闪存驱动器中选择“EFI Boot”并启动到 Clover。


启动 Windows 后,声卡立即开始工作(这是因为我已从 Boot Camp 4 安装了 Cirrus Logic 驱动程序)。设备管理器中的显示音频驱动程序有一个感叹号,但我能够从英特尔的驱动程序支持中安装此机器中适用于 Intel i7 2470m CPU 的显示音频驱动程序。

设备管理器中的音频设备。

我还通过“按资源”查看了设备管理器,发现出现了一个新条目“具有地址范围的大内存

记忆地图。

并且“大内存部分”的地址范围包含了高清音频控制器的范围。


然后,我想看看上面发布的初始链接中描述的方法(将内存映射强制放入注册表并打开“测试签名”)是否有效,并且确实有效。

这使得我无需 Clover 的帮助就能直接启动 Windows。

笔记:当我测试注册表方法时,我跳过了前几个步骤,因为我已经有了修改过的 DSDT。我确实需要创建文件C:\dsdt夹并将 Windows 二进制文件提取到该文件夹​​ - 但我没有使用它们的 ACPI 转储或编译器(我检查错误并在 OSX 中的 Maciasl 中编译了我的 DSDT)


我很乐意进行更深入的探讨,但我怀疑是否还有更多人需要这些信息。

很高兴不用 Boot Camp 的 BIOS 模拟就搞定了。我将在其他 2013 年之前不兼容 UEFI BIOS 的 Mac 上测试此方法。

相关内容