Windows – VirtualBox in Windows 10 64-bit guest only shows 32-bit options

virtual machinevirtualboxvirtualizationwindows 10windows-10-v1903

My Situation

I am running VirtualBox v5.2.32 on an Ubuntu 18.04 host. I have created a Windows 10 (64-bit) guest. I installed VirtualBox v6.0.10 in the Windows 10 guest (Windows 10 Pro – v1903 – 64-bit). I am trying to create an Ubuntu (64-bit) guest inside the Windows 10 guest. I only see 32-bit options inside the Windows guest. After several attempts to resolve this, I am still only seeing 32-bit options.

My Intention

The purpose for creating a VM inside a VM is to be able to ensure that VirtualBox is working so that I can test Vagrant configuration inside a Windows 10 environment. Our Vagrant config is using 64-bit base images, so I need to be able set up 64-bit guests inside this Windows 10 guest.

What I Have Already Tried

…on the Ubuntu Host

I have checked Enable VT-x/AMD-V on the System > Acceleration tab in the Ubuntu host's VirtualBox config for the Windows 10 guest machine.

…on the Windows Guest

In the Windows guest machine, I can see that the host's physical CPU details are passed through in Settings > System > About and it shows as a "64-bit operating system, x64-based processor".

This is a vanilla Windows 10 Pro installation, no additional software (i.e., no addon virus protection software).

I inspected Windows Features to ensure that the following are not checked:

  • Guarded Host
  • Hyper V
  • Virtual Machine Platform
  • windows Hypervisor Platform
  • Windows Subsystem for Linux

…because my googleing seems to indicate that some or all of these might be an issue.

Based on a VirtualBox forum (I have a 64bit host, but can't install 64bit guests), using gpedit.msc, I set Local Computer Policy > Computer Configuration > Administrative Templates > System > Device Guard > Turn on Virtualization Based Security to Disabled. I also check that Windows Security > Device Security > Core Isolation Details is set to Off.

I have "repaired" the VirtualBox installation. I have uninstalled VirtualBox, rebooted, reinstalled, and then rebooted again.

Related Stack Exchange Questions and Other References

I looked at these related, previously asked questions and followed their suggestions as indicated in the steps above. Everything I am finding seems to be related to a Windows 64-bit host running directly on the host machine, not dealing with a Windows host which is itself a guest VM.

Best Answer

I am running VirtualBox v5.2.32 on an Ubuntu 18.04 host. I have created a Windows 10 (64-bit) guest. I installed VirtualBox v6.0.10 in the Windows 10 guest. I am trying to create an Ubuntu (64-bit) guest inside the Windows 10 guest. I only see 32-bit options inside the Windows guest. After several attempts to resolve this, I am still only seeing 32-bit options.

VirtualBox does not support hosting a 64-bit virtual machine within another virtual machine.

I have enabled VT-x/AMD-V in the Ubuntu host's VirtualBox config for the Windows 10 guest machine.

While you have VT-x/AMD-V enabled, which is the reason you are able to run the first 64-bit virtual machine, it is not being passed through to the virtual machine. VirtualBox nested virtualization does not support, exposing the virtualization technology x86 extension, to a nested virtual machine. This is the reason you are unable to run a 64-bit operating system within the second virtual machine.

Everything I am finding seems to be related to a Windows 64-bit host running directly on the host machine, not dealing with a Windows host which is itself a guest VM.

This is due to the fact what you want is extremely niched. What you want is not possible with VirtualBox using your current hardware.

Oracle VM VirtualBox supports nested virtualization on host systems that run AMD CPUs. This feature enables the passthrough of hardware virtualization functions to the guest VM. That means that you can install a hypervisor, such as Oracle VM VirtualBox, Oracle VM Server or KVM, on an Oracle VM VirtualBox guest. You can then create and run VMs within the guest VM.

**However, even with nested virtualization enabled, what you want is not possible with the AMD hardware you currently have. In order for VirtualBox to be used your processor must support Rapid Virtualization Indexing.

Rapid Virtualization Indexing (RVI), known as Nested Page Tables (NPT) during its development, is an AMD second generation hardware-assisted virtualization technology for the processor memory management unit (MMU).

AMD-V is considered the first generation hardware virtualization. In order to enable nested virtualization, on a system with the required processor, you must use the --nested-hw-virt option with the modifyvm command.

Source: Nested Virtualization

Host machine is an AMD Opteron 6338P. Enable VT-x/AMD-V is checked in the VM config for the Windows guest machine. So, VT-x should be exposed to the Windows guest.

VT-X only exists on Intel hardware. Your AMD Opteron 6338P only supports AMD-V. However, the option you have selected, allows you to run a 64-bit operating system within the virtual machine. It does not actually enabled what limited nested virtualization VirtualBox supports.

Related Question