Mar 10, 2021 With UTM open on your M1 Mac, click the Create a New Virtual Machine button. I gave the VM the name “Windows 10”, added a note that this is “Windows 10 on Apple Silicon”, and added an optional operating system icon (see image below). Naming the UTM Virtual Machine Next, click the System tab. Virtualbox will not work on an ARM host computer. My quick Google-fu seems to say that the M1 is an ARM-based CPU, so no-go on Vitualbox; keep that old Mac running, or get a refurbished x86 when your war chest builds up again. 64-bit VMs work just fine on typical x86 non-ARM Intel & AMD PCs and Intel Macs.
With the newly released M1 Macs, there have been lots of questions about being able to run other operating systems on it, particularly from developers that are used to running Window or Linux in Virtual Machines using virtualization on their Intel Macs. So what challenges do the M1 Macs bring in this regard?
If you are new to all this, it is important to understand the parts involved. First there are virtual machines, which act as virtual computers running on a main or host computer. Second, there are the instruction sets for the computer and OS. These virtual computers run an operating system (OS) of some kind and in most cases this OS has to have the same instruction set as the host computer. This allows the instruction to be passed through the VM to the CPU and allows for good performance. Which is what makes it so easy to run Windows 10 x86 on an Intel Mac — they both are using Intel CPUs with the same instruction sets.
But what if the instruction sets differ as they do with Intel and M1 Macs? Obviously you can no longer pass an x86 instruction to an M1 chip and expect anything to happen. So some translation or emulation needs to happen. This is typically much, much slower.
In general this is what Apple is doing with Rosetta 2 on Big Sur to allow your x86 Mac apps to run on an M1 Mac. They do an entire app translation on first launch (and also re-do it at times) and then run the translated app. This is a great technique but it doesn’t really work at a virtual machine level. And in fact, Apple specifically says that Rosetta 2 cannot be used with virtualization software.
That’s the bad news. But there are options on the horizon.
Emulation
The first option is OS-level emulation. What would happen here is that emulation software (say, QEMU, a popular open-source emulator and virtualizer) would translate x86 instructions to ARM instructions (usually on-the-fly) so that an x86 operating system could run on an M1 Mac. In theory this would allow Windows 10 x86 for example to run as a (virtual computer) on an M1 Mac.
Technically this is more than a theory since it has been done before. You may remember it was possible to run Windows 98 x86 on a PowerPC Mac back in the day using software such as Connectix Virtual PC. The downside to this approach is that it can be quite slow. Fortunately the M1 Macs are proving to be very speedy and might be able make this technique acceptable for casual use. I expect the QEMU project will be updated to eventually allow emulation of x86 operating systems on M1 Macs.
OS Vendors
You might remember in the WWDC 2020 keynote Apple showed Linux running as a virtual machine with Parallels on an M1 Mac. This demo was actually running an ARM Linux distro in that virtual machine. Since it was not an x86 distro, its usefulness depends on its ability to run the apps you need. If you wanted to run an x86 Linux app then it would not work on an ARM distro.
However, the OS vendors are working on this. Much like what Apple did with Rosetta 2, they can add OS-level support to translate individual apps from x86 to ARM, thus allowing them to work in a virtual machine. I haven’t heard of progress on this front with Linux, but I expect there will be some convoluted way to do it at some point.
Microsoft does have an ARM version of Windows, but right now it is only licensed for OEM use to include with a computer, so virtualizing it is not yet an option. And even if you could virtualize ARM Windows on your M1 Mac, it also is only useful to you if it can run the apps you want.
Currently ARM Windows has a translator that lets it run 32-bit x86 apps, but performance is poor, especially when compared to what Apple has done with Rosetta 2 in Big Sur. Microsoft has said they are working on adding the ability to run 64-bit x86 apps on ARM Windows, but that feature is not ready yet and performance is unknown.
I expect virtualizers such as Parallels, VMware and VirtualBox will all eventually have versions that run on M1 Macs and can run ARM operating systems, although perhaps just Linux to start. I don’t expect them to include emulators in their products.
Update (2020-4-14): Parallels has just released 16.5 with support for running Windows for ARM on M1 Macs.
When Microsoft adds 64-bit x86 translation and has it working at a decent speed and if it decides to make ARM Windows available for use in virtual machines then you would also be able to run Windows on an M1 Mac and run common Windows apps. But for now, we wait.
Update (2020-12-08): Some progress continues to be made on this. Here are some rough instructions on how to get Windows ARM running in a VM (UTM running on QEMU).
Other Options
Another option is the CodeWeavers product that is based on the WINE open-source project. This project essentially provides a translated Windows API that allows some Windows apps to run on a Mac. It does not run Windows itself, only apps, and only a small subset at that.
But because it translates the apps to essentially a Mac x86 app, they are a candidate for Rosetta 2 on Big Sur to translate. That’s a lot of levels of translation, but in the end you end up with a Windows app running on an M1 Mac.
CodeWeavers recently posted some information about their early testing of this.
Wrap Up
With all this said, if you require the ability to run an x86 version of Windows or Linux, then an M1 Mac cannot be your sole machine at this time. You’ll either want to also have an Intel Mac to run those in virtual machines or get dedicated separate hardware for them.
And if you want to make your own native apps for M1 Macs, Xojo now has the ability to create native apps for M1 Macs.
Virtualbox Mac M1 Download
With M1 Macs mere days away for early adopters, those who need to run virtual machines on their Macs may have a bumpy time ahead.
Virtualbox For M1 Mac Download
It is important to note that currently available versions of Parallels® Desktop for Mac cannot run virtual machines on Mac with Apple M1 chip. Good news: A new version of Parallels Desktop for Mac that can run on Mac with Apple M1 chip is already in active development.
When Apple Silicon Mac was first announced during the keynote at WWDC on June 22 of this year, Apple demoed a Parallels Desktop for Mac prototype running a Linux virtual machine flawlessly on Apple Silicon. Since WWDC, our new version of Parallels Desktop which runs on Mac with Apple M1 chip has made tremendous progress. We switched Parallels Desktop to universal binary and optimized its virtualization code; and the version that we are eager to try on these new MacBook Air, Mac mini and MacBook Pro 13″ looks very promising.
VMWare Fusion isn’t ready yet either, according to this tweet:
So excited for todays announcements from @Apple!
While we're not quite ready to announce our timeline, we're happy to say that we are committed to delivering VMware virtual machines on #AppleSilicon! pic.twitter.com/en1FNorxrM
— VMware Fusion (@VMwareFusion) November 10, 2020
Even when these and other virtualization tools are ready,1 running Windows as a VM atop a M1 Mac probably isn’t going to be. So far, all the public has seen running virtually on M1 Macs is ARM-based Linux, back at WWDC.
Microsoft has a version of Windows running on ARM chips, but as of this summer, things didn’t look great for getting it to run virtually on the new Macs:
“Microsoft only licenses Windows 10 on ARM to OEMs,” says a Microsoft spokesperson in a statement to The Verge. We asked Microsoft if it plans to change this policy to allow Windows 10 on ARM-based Macs, and the company says “we have nothing further to share at this time.”
That said, ARM Windows is getting better. Back in September, Microsoft announced that the ARM version of Windows 10 is gaining x64 emulation:
We are excited about the momentum we are seeing from app partners embracing Windows 10 on ARM, taking advantage of the power and performance benefits of Qualcomm Snapdragon processors. We heard your feedback and are making Microsoft Edge faster while using less battery, and announced that we will soon release a native Microsoft Teams client optimized for Windows 10 on ARM. We will also expand support for running x64 apps, with x64 emulation starting to roll out to the Windows Insider Program in November. Because developers asked, Visual Studio Code has also been updated and optimized for Windows 10 on ARM. For organizations, we’re committed to helping them ensure their apps work with Windows 10 and Microsoft 365 Apps on ARM64 devices with App Assure.
Before this, the ARM version of Windows could only emulate 32-bit applications. It’s a nice improvement, and maybe one day it will matter to Mac users.
- Oh, and Boot Camp is totes dead. Docker is currently busted, but should work in the future. ↩