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.
- Why does virtualbox only have 32-bit option, no 64-bit option on Windows 7?
- VirtualBox only allowing 32 bit OS
- Windows 10 (64 bit) is only showing 32 bit options and not 64 bit options
- Why is VirtualBox only showing 32-bit guest versions on my 64-bit host OS?
- VirtualBox only showing 32-bit and no 64-bit versions (easy fix)
Best Answer
VirtualBox does not support hosting a 64-bit virtual machine within another virtual 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.
This is due to the fact what you want is extremely niched. What you want is not possible with VirtualBox using your current hardware.
**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.
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
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.