我的情况
我在 Ubuntu 18.04 主机上运行 VirtualBox v5.2.32。我创建了一个 Windows 10(64 位)客户机。我在 Windows 10 客户机(Windows 10 Pro - v1903 - 64 位)中安装了 VirtualBox v6.0.10。我正尝试在 Windows 10 客户机内创建一个 Ubuntu(64 位)客户机。我在 Windows 客户机内只看到 32 位选项。经过多次尝试解决此问题后,我仍然只看到 32 位选项。
我的意图
在虚拟机内创建虚拟机的目的是为了确保 VirtualBox 正常运行,以便我可以在 Windows 10 环境中测试 Vagrant 配置。我们的 Vagrant 配置使用的是 64 位基础映像,因此我需要能够在此 Windows 10 客户机内设置 64 位客户机。
我已经尝试过的方法
...在 Ubuntu 主机上
我已经检查Enable VT-x/AMD-V
过系统 > 加速Ubuntu 主机的 VirtualBox 配置中针对 Windows 10 客户机的选项卡。
...在 Windows 客户机上
在 Windows 客户机中,我可以看到主机的物理 CPU 详细信息通过设置 > 系统 > 关于它显示为“64 位操作系统,基于 x64 的处理器”。
这是原始的 Windows 10 Pro 安装,没有附加软件(即没有附加病毒防护软件)。
我检查了Windows功能确保以下事项不是检查:
- 受保护的主机
- 超级 V
- 虚拟机平台
- Windows 虚拟机管理程序平台
- 适用于 Linux 的 Windows 子系统
...因为我的谷歌搜索似乎表明其中一些或全部可能是一个问题。
基于 VirtualBox 论坛 (我有 64 位主机,但无法安装 64 位客户机),使用gpedit.msc
,我设置本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 设备防护 > 打开基于虚拟化的安全性Disabled
我还检查了Windows 安全 > 设备安全 > 核心隔离详细信息被设定为Off
。
我已经“修复”了 VirtualBox 安装。我已卸载 VirtualBox,重新启动,重新安装,然后再次重新启动。
相关 Stack Exchange 问题和其他参考资料
我查看了这些相关的、之前问过的问题,并按照上述步骤中的建议进行了操作。我发现的所有内容似乎都与直接在主机上运行的 Windows 64 位主机有关,而不是与本身就是客户虚拟机的 Windows 主机有关。
答案1
我在 Ubuntu 18.04 主机上运行 VirtualBox v5.2.32。我创建了一个 Windows 10(64 位)客户机。我在 Windows 10 客户机中安装了 VirtualBox v6.0.10。我正尝试在 Windows 10 客户机内创建一个 Ubuntu(64 位)客户机。我在 Windows 客户机内只看到 32 位选项。经过多次尝试解决此问题后,我仍然只看到 32 位选项。
VirtualBox 不支持在另一个虚拟机中托管 64 位虚拟机。
我已经在 Ubuntu 主机的 VirtualBox 配置中为 Windows 10 客户机启用了 VT-x/AMD-V。
虽然您启用了 VT-x/AMD-V,这就是您能够运行第一个 64 位虚拟机的原因,但它并未传递到虚拟机。VirtualBox 嵌套虚拟化不支持将虚拟化技术 x86 扩展暴露给嵌套虚拟机。这就是您无法在第二个虚拟机中运行 64 位操作系统的原因。
我发现的一切似乎都与直接在主机上运行的 Windows 64 位主机有关,而不是处理本身作为来宾虚拟机的 Windows 主机。
这是因为您想要的东西非常小众。 使用您当前的硬件,VirtualBox 无法实现您想要的功能。
Oracle VM VirtualBox 支持在运行 AMD CPU 的主机系统上进行嵌套虚拟化。此功能允许将硬件虚拟化功能传递到客户虚拟机。这意味着您可以在 Oracle VM VirtualBox 客户机上安装虚拟机管理程序,例如 Oracle VM VirtualBox、Oracle VM Server 或 KVM。然后您可以在客户虚拟机中创建和运行虚拟机。
**但是,即使启用了嵌套虚拟化,您目前拥有的 AMD 硬件也无法实现您想要的功能。要使用 VirtualBox,您的处理器必须支持快速虚拟化索引。
快速虚拟化索引 (RVI),在开发过程中被称为嵌套页表 (NPT),是 AMD 针对处理器内存管理单元 (MMU) 的第二代硬件辅助虚拟化技术。
AMD-V 被视为第一代硬件虚拟化。为了启用嵌套虚拟化,在具有所需处理器的系统上,您必须将 --nested-hw-virt 选项与modifyvm 命令结合使用。
来源:嵌套虚拟化
主机是 AMD Opteron 6338P。在 Windows 客户机的 VM 配置中选中启用 VT-x/AMD-V。因此,VT-x 应该向 Windows 客户机公开。
VT-X 仅存在于 Intel 硬件上。您的 AMD Opteron 6338P 仅支持 AMD-V。但是,您选择的选项允许您在虚拟机中运行 64 位操作系统。 它实际上并没有启用 VirtualBox 支持的有限嵌套虚拟化。
答案2
64 位虚拟机需要 VT-x 才能运行,因此如果 VT-x 未向 VM 公开,则您无法在当前 VM 内运行另一个 VM。您需要启用Windows VM 中的嵌套虚拟化通过运行
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
当然你需要先检查你的CPU是否支持嵌套虚拟化
但看起来VirtualBox 仅支持 AMD 上的嵌套虚拟化所以你需要使用另一个虚拟机管理程序
也可以看看