如何在 Windows 10 Hyper-V 中启用嵌套虚拟化

Hyper-V是内置的超级处理器,免费提供给 Windows 和 Windows Server 用户使用。它用于在 Windows 上运行虚拟机(VM)。虚拟化还用于其他功能,如基于虚拟化的安全性(VBS)、Windows 沙箱和 Windows Defender 应用程序防护(WDAG)。开发人员有时会在 Visual Studio 中使用虚拟化来运行设备仿真程序。

Microsoft 在 Windows Server 2016 中引入了对嵌套虚拟化的支持。嵌套虚拟化允许您在运行在 Hyper-V 主机上的 VM 客户机中启用 Hyper-V。因此,您可以将其视为在 VM 中运行的 VM。

广告

在使用嵌套虚拟化之前,您需要满足一些先决条件。VM 配置必须是 8.0 版或更高版本。嵌套虚拟化仅受支持于具有虚拟化(VT-x)和扩展页表(EPT)的 Intel CPU。

AMD CPU 上的嵌套虚拟化

嵌套虚拟化可在 Windows 10 生成版本 19636 及更高版本中使用。据我了解,AMD 的支持将作为 Windows 11 和 Windows Server 2022 的一部分正式推出。预计这两款产品将于 2021 年下半年发布。

创建一个虚拟机

默认情况下未启用嵌套虚拟化。它是按 VM 基础启用的。第一步是在您的Hyper-V 主机上创建至少一个虚拟机,无论是 Windows 10 还是 Windows Server。如果您以前从未在 Windows 中设置过虚拟机,您可以查看下面的 Petri 指南。

指南:如何在虚拟机中安装 Windows 10
指南:如何在虚拟机中安装 Windows Server 2019

广告

您无需在虚拟机中安装操作系统即可启用嵌套虚拟化。

启用嵌套虚拟化

一旦在 Hyper-V 主机上设置了客户虚拟机,很重要的一点是在启用嵌套虚拟化之前确保虚拟机处于“关闭”状态。您可以使用 Hyper-V 管理器停止虚拟机,也可以使用 Stop-VM PowerShell 命令。打开 PowerShell 或 Windows 终端,运行下面的命令,将Windows 11 替换为您的虚拟机名称。

Stop-VM -Name 'Windows 11'

如果您不确定要启用嵌套虚拟化的虚拟机的名称,可以使用 Get-VM 在主机上获取虚拟机列表。Get-VM 还提供每个虚拟机的版本号。

Get-VM

如果要更新虚拟机的版本号以便支持嵌套虚拟化,请按照下面的步骤运行Update-VMVersion,再将Windows 11替换为您的虚拟机名称。

广告

How to Enable Nested Virtualization in Hyper-V (Image Credit: Russell Smith)
Update-VMVersion -Name 'Windows 11'

现在虚拟机状态已设置为“关闭”,您可以启用嵌套虚拟化。启用的唯一方法是使用PowerShell。在PowerShell终端窗口中运行以下命令,将Windows 11替换为您的虚拟机名称。

Set-VMProcessor -VMName 'Windows 11' -ExposeVirtualizationExtensions $True
How to Enable Nested Virtualization in Hyper-V (Image Credit: Russell Smith)

现在只剩下启动虚拟机的步骤,您可以使用Hyper-V管理器或按照以下示例使用PowerShell来完成:

Start-VM -Name 'Windows 11'

当虚拟机启动后,登录Windows系统,您将能够安装Hyper-V功能或服务器角色,以及任何依赖于它的其他功能。

Source:
https://petri.com/how-to-enable-nested-virtualization-in-hyper-v/