I found that Oracle VM VirtualBox 6.1 was running very slowly on my brand new Windows 10 PC.
Initially I thought it was to do with VirtualBox, e.g. insufficient cores or memory, the display controller (VBoxSVGA), insufficient video memory, etc. And then I thought it might be an AMD thing, so had a look at BIOS, e.g. nested AMD-V, etc.
The Problem
Only much later, did I discover the problem was that I had the Windows Subsystem for Linux 2 (WSL2) installed, and WSL2 requires the Windows Hypervisor Platform, which in turn does not play nice with VirtualBox.
- I ran few commands following the Windows Subsystem for Linux Installation Guide for Windows 10.
- Installed VirtualBox 6.1 and created a guest VM, with Guest Additions installed.
- If I am not mistaken, I did not enable Hyper-V (via Settings > Programs and Features > Turn Windows Features on or off).
The Solution
The solution is to turn off Hyper-V when not required, e.g. for gaming or when using VirtualBox. You can’t have it both ways and have Hyper-V and VirtualBox running simultaneously.
The usual warnings and disclaimers apply! Don’t trust me, but verify everything, thanks!
The best way to do this was to create two Windows boot entry - one with and one without Hyper-V, based on this guide - Use Windows 10 bootmanager to enable Hyper-V and Other Virtual Devices in Same Computer.
Since Hyper-V was running at the time, I did this:
- Open the Command Prompt as Administrator, i.e. from the start menu, Windows System > right-click Command Prompt > expand More and select Run as administrator.
- Next, create a new boot entry with Hyper-V enabled:
bcdedit /copy {current} /d "Windows 10 with Hyper-V"
- Then, edit the current (default) boot entry to disable Hyper-V:
bcdedit /set {current} hypervisorlaunchtype off
You’ll get success messages after each command if all goes well. Reboot, and now, before Windows starts, you’ll be greeted with a blue screen (not the blue screen) to ”Choose an operating system” with both options. Now when I select the first option (without Hyper-V), VirtualBox works like a charm.
Bonus tip - to reduce the timeout before the default option is selected automatically,
bcdedit /timeout 5
Good luck.