Ubuntu on a M1 Macbook using a Virtual Machine anno 2023
This post will cover how to set up a virtual machine running ubuntu on a Macbook model that contains an ARM chip. At the time of writing this set includes the macbooks with the M1 and the M2 processing chip.
Right now the support for Ubuntu for ARM and VirtualMachines for ARM are limited. Previous versions of Macbooks running on intel chips getting this done was as simple as:
- download VirtualBox
- download any ubuntu.iso
- install it
With the new mac this isn’t as simple as there are simply more things to think about. ARM and Intel processing chips operate differently under the hood. That means that a program written for Intel cannot be executed on ARM and vice versa.
There are decent attempts at virtualising the behaviour of 1 chip onto the other. Which in theory is a great handle-all-cases solution, the only downside is that this added virtualisation layer adds more performance overhead.
Getting the virtual machine
Virtualbox for ARM is currently in BETA and has numerous issues that prevent running Ubuntu atop of it to be a smooth experience. Some alternatives that prove to be of high quality are ‘parallels’ and ‘UTM’. I’ve chosen for UTM for the simple fact that it is free. Parallels offers a free trial but is paid software.
Getting the ubuntu image
As mentioned before, running Ubuntu for Intel atop of your ARM processor would mean that every processor instruction would need to be intercepted, modified and then interpreted again. This extra step for every single instruction could cause great overhead.
Therefore a better alternative would be to download an ‘arm’ version of Ubuntu. Luckily ubuntu offers ubuntu-server written for arm (click to view download). By default ubuntu-server doesn’t include a Graphical Interface, and thus doesn’t have a ‘desktop’ like you’d want. However this desktop addition can be installed manually once you’ve got a running ubuntu-server instance.
Running a complete Ubuntu
Now you can create a new virtual image in UTM and use ubuntu-server-arm.iso as an image. The UTM docs provide good and updated information on how to do this exactly:
Open UTM and click the "+" button to open the VM creation wizard. Select "Virtualize". Select "Linux". Click "Browse"…
These steps are mostly straight forward. If Ubuntu doesn’t start-up properly after it is installed you can eject the .iso by clicking on the little disk icon in the top right and where it says: `CD/DVD (ISO) Image` simply click on eject.
After following these steps carefully Ubuntu should boot-up showing the traditional desktop interface.
Note: you might need to try rebooting twice for the GUI to actually startup in some cases.
Alternative options to running Ubuntu on a M1 Mac are:
- Use Parallels (paid software): refer to the parallels docs to understand the possibilities.
- Use Ubuntu for AMD and use virtualisation in your VM: this could work, but it will definately be slower.
- Use another Linux distribution: maybe you’re not forced to use ubuntu and another Linux distribution would suffice. For these cases it may be worth investigating another distribution.
- Use another Operating System: maybe you’re not forced to use Linux at all. You could try out other options like Windows, or even MacOS
Hopefully this guide helps you getting your VM up and running and provides some basic/additional understanding to the UTM docs.