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.
đź’ˇ Tip
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.