如何在 Hyper-V 中启用 RemoteFX vGPU 支持

不久前为 Windows 10 引入的一项有用功能现已被禁用。 RemoteFX vGPU 功能允许在 Hyper-V 上运行 Windows Server 2008 R2、Server 2012、Server 2016 和 Windows 10 的虚拟机 (VM) 的用户使用主机的物理图形处理单元 (GPU) 来呈现其图形输出。

在 Microsoft 为 Windows 10 提供的最新更新 KB4571757 中,由于在远程代码执行中发现了一个严重漏洞,Microsoft 已决定停止使用此功能。

让我们来看看这个功能的细节,它为什么被停产,以及我们是否能找到让它继续工作的方法。 快速总结 隐藏 1 什么是 RemoteFX vGPU? 2 为什么 Microsoft 删除了 RemoteFX vGPU 功能? 3 如何在 Windows 10 上运行的 Hyper-V 上启用 RemoteFX vGPU 4 RemoteFX vGPU 的替代方案 4.1 为 DDA 配置 VM 4.2 从主机上卸下 GPU 4.3 将 GPU 分配给 VM 5 结束语

什么是 RemoteFX vGPU?

在 Hyper-V 上运行的 VM 可以使用主机上的物理 GPU 来运行有关视频渲染和图像处理的任务,使用 RemoteFX vGPU 功能。这允许用户减轻 CPU 的负载,并使用共享 GPU 在他们的 VM 上运行繁重的图像处理。

借助此功能,无需为每个 VM 配备专用 GPU,同时还可增强 GPU 和 VM 的可扩展性和可用性。前往 微软的网页 以了解有关该功能的更多信息。

为什么 Microsoft 删除了 RemoteFX vGPU 功能?

尽管 RemoteFX vGPU 功能在 Windows 7 中引入时已经很老了,但它现在正被黑客利用在主机上执行远程命令。此功能无法验证 VM 上有效用户的输入。黑客可以利用此漏洞在 VM 上运行修改后的应用程序,以利用主机 GPU 的驱动程序并获得访问权限。一旦他们可以访问主机,他们就能够执行远程命令和脚本。

尽管 Microsoft 通过定期更新解决了此类漏洞,但由于该缺陷是架构性的,因此他们无法这样做。

早在 2020 年 7 月,微软就开始为不同版本的操作系统删除此功能。但是,2020 年 9 月的 Windows 10 累积更新在 Windows 10 2004 版的所有版本中禁用了该功能。

微软表示,在 2021 年 2 月之前,用户仍然可以通过特殊命令重新启用该功能,但应该开始研究替代方法,本文将进一步讨论这些方法。这里有一个 微软关于禁用 RemoteFX vGPU 的通知 .

如何在 Windows 10 上运行的 Hyper-V 上启用 RemoteFX vGPU

尽管微软已经将在 Windows 10 上通过 Hyper-V 启用 RemoteFX vGPU 的功能变灰,但它仍然可以通过使用 PowerShell 的命令启用。此外,组策略设置仍然存在于来宾操作系统 (VM) 中,可用于像以前一样在 VM 上启用该功能。

变灰

  1. 首先,打开要配置此功能的虚拟机,然后键入以下内容打开组策略编辑器 gpedit.msc 在运行。
  2. 在里面 组策略编辑器 ,从左窗格导航到以下内容:
  3. 计算机配置 -> 管理模板 -> Windows 组件 -> 远程桌面服务 -> 远程桌面会话主机 -> 远程会话环境 -> RemoteFX for Windows Server
  4. 在右侧窗格中,双击 配置 RemoteFX .
  5. 在里面 配置 RemoteFX 属性窗口,选择 启用 ,然后单击 申请好的 .
  6. 现在打开命令提示符并输入 gp更新/强制 更新组策略。
  7. 根据您的物理 GPU 下载并安装推荐的 GPU 驱动程序。这里有详细的回顾 GPU 以及如何管理它们 .
  8. 现在关闭 VM 并导航回运行 Hyper-V 的主机。
  9. 由于 RemoteFX 3D 视频适配器 选项在 VM 的设置中是灰色的,我们将通过 PowerShell 启用它。使用管理权限运行 PowerShell。这是有关如何始终在管理模式下运行 PowerShell 的完整指南。
  10. 使用虚拟机名称替换 (name) 时输入以下命令:
    Add-VMRemoteFX3dVideoAdapter -VMName (name)
  11. 现在通过 Hyper-V 控制面板打开 VM Settings,您将找到 RemoteFX ED 视频适配器 在下面 处理器 标签。单击它,然后根据您的需要进行配置。
    虚拟机设置 remotefx

您现在可以启动并连接到虚拟机,它现在将使用主机的 GPU 来处理其工作负载。您还可以将多个 VM 配置为在共享物理 GPU 上运行。

RemoteFX vGPU 的替代方案

Microsoft 永久计划在 2021 年 2 月之前删除该功能。但是,他们并没有让用户陷入困境。微软还提出了一种替代方案,通过将 PCIe 端口上的物理 GPU 直接挂载到虚拟机上。 离散设备分配 (DDA)。

此方法需要完成三个阶段才能为 VM 提供专用 GPU:

  1. 为 DDA 配置 VM
  2. 从主机上卸下 GPU
  3. 将 GPU 分配给 VM

为 DDA 配置 VM

在主机上,依次运行以下命令以配置其设置。将 (name) 替换为 VM 的名称:

  1. Set-VM -Name (name) -AutomaticStopAction TurnOff
  2. Set-VM -GuestControlledCacheTypes $true -VMName (name)
  3. Set-VM -LowMemoryMappedIoSpace 3Gb -VMName (name)
  4. Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName (name)

从主机上卸下 GPU

首先,您需要禁用 PCIe 端口上的 GPU,然后将其卸载。但在此之前,您将需要端口的物理地址。这可以通过执行以下操作来确定:

  1. 通过在运行中键入 devmgmt.msc 前往设备管理器。
  2. 现在展开显示适配器并右键单击 GPU。从上下文菜单中选择属性。
  3. 转到详细信息选项卡,然后从属性下的下拉菜单中选择位置路径。
  4. 请注意,该条目以 PCIROOT 开头,因为从主机设备上卸下 GPU 时需要这样做。

现在执行以下操作卸载设备:

  1. 前往 特性 从 GPU 窗口 装置经理 .
  2. 前往 司机 选项卡,然后单击 禁用 设备 .

现在设备已被禁用,您需要卸载它。

在命令提示符中输入以下命令:
Dismount-VMHostAssignableDevice -force -LocationPath $(LocationPath)
将 (LocationPath) 替换为您之前记下的 PCIe 路径。

完成后,您可以进入下一阶段。

将 GPU 分配给 VM

现在您需要做的就是对 Hyper-V 进行编程,让指定的 VM 使用物理 GPU。这可以通过在命令提示符中运行以下命令来完成:
Add-VMAssignableDevice -LocationPath $locationPath -VMName (name)
将 (name) 替换为 VM 的名称。

您现在可以启动来宾操作系统并看到它现在使用的视频适配器将是您主机上的物理适配器。

如果您希望随时将 GPU 返回到主机设备,只需在命令提示符中以相同的顺序依次运行以下两个命令,同时将 (name) 替换为 VM 的名称:
Remove-VMAssignableDevice -LocationPath $locationPath -VMName VMName
Mount-VMHostAssignableDevice -LocationPath $locationPath

结束语

RemoteFX vGPU 在 2004 版本中并不多见。但是,人们喜欢它的想法。除非您考虑成本因素,否则看到它运行可能不会像预期的那样麻烦。

尽管 Microsoft 提供了为每个虚拟机使用指定 GPU 的替代方案,但在主机的主板上放置与虚拟机一样多的 GPU 并不理想。成本太高,功耗也不理想。

Microsoft 需要找到解决该问题的方法,因为所提供的解决方案对大多数用户不可行。