Migrating Windows from Intel (x86) VirtualBox to ARM Windows on M1 Mac computers
Before I switched to a 2021 MacBook Pro with the M1 Max (Apple silicon using the ARM architecture), I was on an older Intel-based (x86) MacBook Pro like everyone else using otherwise recent Mac hardware. One of the pieces of software I used on my machine rarely but intentionally was VirtualBox, a virtualization product that can be used to run additional operating systems on your Intel-based Mac (or other x86 machine) such as Microsoft Windows.
However, since VirtualBox is a hypervisor, I couldn't simply run my x86 Virtual Machines this way anymore. The ARM architecture of Apple silicon couldn't simply be “partitioned” or shared with a virtualized software system that was expecting access to real x86 hardware.
I researched this situation a bit, and found that UTM was a great way to run an ARM-supported version of Windows, but I still had the hope to access my prior Windows x86 installation from VirtualBox so that I could grab any files and software configurations that I still needed from there.
Getting UTM + virtualizing “Windows on ARM”
UTM (which is powered by QEMU) is a free download (although it costs something if you get it from the Mac App Store instead of the website directly), and supports a lot more than just virtualizing macOS instances or emulating x86 architecture. It'll even let you boot older PowerPC builds of Mac OS 9, for example.
“Windows on ARM” is fast on UTM with the M1 Max. …It's a delight to use, and not too difficult to set up either. 🐇
Booting VirtualBox x86 Virtual Disk Images
UTM will also boot and emulate x86 virtual machines on Apple silicon, not just those running ARM-targeted operating systems. However, a more modern, demanding x86 operating system may have significantly reduced performance in comparison to native M1 performance.
Luckily, it may still be performant and stable enough for use in migrating files and settings to your new ARM-based Windows installation, for example, which can afterward run a lot of your x86-compiled Windows software instead.
Steps I used:
- Create an additional new virtual machine in UTM (don't use your ARM Windows virtual machine for this), and choose to “Emulate” (rather than “Virtualize”) and then select the “Other” type for the system. (…not the “Windows” one!)
- Select the “Skip ISO boot” option on the following screen. This will bypass the expectation that you'll install a new operating system.
- Once created, edit the Virtual Machine before booting it. Import your previous VirtualBox *.VDI disk image file as a new drive, which should automatically clone and convert it to the required format within UTM/QEMU without modifying the original source image.
- You may also need to uncheck the “UEFI Boot” option under “QEMU” settings for this virtual machine in order for it to start Windows.
… Hopefully, after starting and an automatic subsequent reboot by Windows (after detecting the environment's massive hardware configuration change from when it ran under VirtualBox), you should see your Windows Desktop once again and then be able to migrate data via your host system to its new ARM-targeted virtual machine counterpart!
After migrating and verifying everything, I personally just shut down and deleted my x86 Windows virtual machine, because the ARM version runs so much faster natively by comparison. 🐌