So, I finished testing this and I believe the issue is indeed Hyper-V interfering with VirtualBox.
I downloaded and installed VirtualBox, Whonix, and Kicksecure on a fresh Windows 11 Pro installation. Upon launching Whonix-Gateway, I noticed immediately that the virtualization type icon in the lower-right corner of the VirtualBox window was a green turtle, something I had never seen before. A quick search revealed that this was VirtualBox warning that it was in “slow mode”, which it apparently does in order to work around Hyper-V. (I suspect, though haven’t determined for sure, that VirtualBox is using Hyper-V to do the actual virtualization in this scenario, much like QEMU would use KVM.) As one would expect, the VM seemed to be slower than I would have expected given the hardware I was using. It did seem to function normally though.
I managed to boot Kicksecure, Whonix-Gateway, and Whonix-Workstation all at the same time, fully updated them, and then attempted to reboot all three. Upon doing this, both Kicksecure and Whonix-Gateway locked up and refused to boot. Task Manager showed both of the hung VMs using about 11% of the CPU constantly, which to me sounds like one or two threads were stuck at 100% CPU usage. Resetting the hung VMs didn’t work, they immediately re-hung. Fully shutting down and restarting a hung VM got it to power on.
After a lot of experimenting, I determined the following:
- Launching one VM and allowing it to boot fully seems to work most if not all of the time (it worked at least 10 times in a row for me).
- Attempting to launch two VMs at once usually if not always results in one of the VMs locking up during boot. This was always the first VM I double-clicked on for me.
- Pausing and unpausing a hung VM sometimes resulted in it becoming unstuck.
After all this, I decided to try to disable Hyper-V. Windows 11 Pro makes this ridiculously hard: I had to disable it in at least four different places in order to get it to actually go away:
bcdedit /set hypervisorlaunchtype offdism /Online /Disable-Feature:Microsoft-Hyper-V- Windows Security → Device Security → Core Isolation → Turn off “Memory integrity”
- Registry Editor → Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard → Set EnableVirtualizationBasedSecurity to 0
- Reboot
After doing all of that, VirtualBox started showing a blue microchip icon instead of a green turtle in the lower-right corner of VM windows, and at that point all of the hanging issues appeared to stop. I was able to launch Whonix-Gateway, Whonix-Workstation, and Kicksecure all at the same time, none of them hung and all of them seemed to be booting faster.
This did not work for me - with Hyper-V enabled on the host, when launching Gateway and Workstation at the same time with Hyper-V as the paravirtualization interface, both VMs lock up for some amount of time, Gateway stays locked up longer than Workstation and reports ..MP-BIOS bug: 8254 timer not connected to IO-APIC, Workstation reports a CPU soft lockup. Both of them did finally boot, but it took a while for them to boot, long enough I thought they were entirely hung. Similar results occurred when using the “Minimal” paravirtualization interface.
Ultimately, if one truly cannot disable Hyper-V, I think the best solution is to simply boot each VM one at a time, waiting until one VM has a working desktop before launching the next one. If on the other hand you can disable Hyper-V, doing that is much more effective and improves performance a lot.