Dual-booting Asahi Linux on your Apple Silicon Mac

+

Asahi M1

What is Asahi Linux?

Asahi (https://asahilinux.org/) is a Linux distribution based on Arch Linux ARM that you can install natively on Apple Silicon Macs with an M1- or M2-based CPU. I’ve been using it daily as a software development workstation for over 3 months now on an M1 Mac Mini (16GB RAM, 500GB SSD), and it’s unbelievably fast. It is 100% funded by Patreon and developed full-time by Hector Martin with many other contributors. You can watch this interview to learn more about the project, or this video to learn how the Apple Silicon platform is reverse-engineered.

What doesn’t work yet?

While all the important hardware drivers necessary to use Asahi as a graphical workstation have been created (NVMe storage, keyboard, trackpad, Wi-Fi, Ethernet, USB, etc.), there are still some hardware components haven’t been reverse-engineered yet. Similarly, some software packages have yet to be modified to support Apple Silicon. Following is a list of what does not currently work:

  • GPU acceleration. Since the GPU driver is still being developed, all graphics are CPU-generated. This also means you are limited to using the default (optimal) monitor resolution, which isn’t a big deal for most people.
  • Thunderbolt and external HDMI on MacBooks (HDMI works on the Mac Mini and is what I use with my monitor).
  • Sound. There is a working sound driver but the Asahi team is waiting for kernel-level volume caps and a declarative PipeWire framework with standard sound profiles so that there is zero chance you could accidentally blow the speakers on your MacBook (laptop speakers are fragile). While the external sound jack works fine on my Mac Mini, I instead listen to my phone playlist using Bose QC45 headphones while working.
  • Apps that don’t support the M1’s 16K page size. This list was very small when Asahi was first released and is even smaller now. Chromium was my only desired app that didn’t support 16K pages back then (I had to use Firefox), but that was fixed with the Chromium 102 update in May.

What software do I run on Asahi?

While Asahi ships with the KDE Plasma desktop by default, I primarily use GNOME and i3-gaps (both are shown below). Chromium is my main Web browser and Kate is my primary code editor (similar to Visual Studio Code). I also use many different developer frameworks and tools (Java, JavaScript, Python, PostgreSQL, Git, Docker, K3s, and Ansible), as well as several other miscellaneous apps (Hugo, LibreOffice, Gimp, Inkscape and Remmina).

Asahi GNOME 1

Asahi i3 1

How fast is Asahi?

Even with CPU-generated graphics, desktop environments and apps are lightning fast. I’ve never seen KDE, GNOME, LibreOffice, Gimp, Inkscape, Chromium and Firefox run so fast before. Even games such as SuperTuxKart run smoothly, as does high-definition video using VLC. Website embedded video (e.g., YouTube) also runs perfectly.

For non-graphical tasks, the performance of Asahi on the M1 is even more impressive. Compiling Chromium (build 102) takes just over 1 hour in Fedora Linux on my Core i9 system, but only takes 12 minutes in Asahi. Similarly, Hugo composites this website 2 times faster in Asahi than the same build of Hugo in macOS on the same Mac Mini system. My Docker development containers and K3s Kubernetes cluster also run much, much faster in Asahi compared to macOS on the same system. This makes sense, because to run containers in macOS, macOS must run them in a Linux virtual machine while Asahi can run them natively.

CPU usage is spread across all 8 CPU cores and rarely rises above 20%, even with a dozen or more graphical apps open as well as many background services and containers running. With my workload, RAM usage is consistently between 2GB and 4GB in total, which is also much less than what I had with the same workload in macOS on the same system.

Can Asahi run virtual machines?

Yes, using QEMU (provided you install the necessary QEMU packages first). Following is an Ubuntu 20.04 (ARM) virtual machine running in QEMU on the GNOME desktop:

Asahi GNOME VM

Is this legal and safe to use?

Yes. Apple formally allows booting third-party operating systems on Apple Silicon Macs. When asked whether the ARM version of Windows 11 would be available to dual-boot on Apple Silicon, Apple’s response was that “it was up to Microsoft to decide whether to support that.” Shortly after the Asahi project started, Apple even added a raw image mode to prevent macOS updates from breaking the boot process for third-party operating systems. This provided no benefit to macOS whatsoever; it merely served to help third-party operating system development.

Moreover, installing Asahi does not alter the security of macOS. During an Asahi install, Apple’s System Integrity Protection (SIP) is disabled, but only for Asahi as it provides no useful function outside macOS (Linux has its own equivalent security frameworks). SIP remains enabled for macOS, which you can verify if you boot into macOS and run the csrutil status command at a command prompt within the Terminal app.

How do I install Asahi?

Unlike installing Linux on other systems, you don’t boot your system from a Linux installation ISO image written to a USB key or DVD. Instead, you run an installation script from macOS that prepares your system for dual-booting with Asahi, downloads the Asahi packages from a Linux repository, and downloads a second copy of the proprietary macOS firmware from Apple (to satisfy Apple’s strict boot requirements on Apple Silicon, third-party operating systems must initially pretend to be a particular version of macOS with that macOS’s firmware at boot time).

To start an Asahi installation, you run the following command (underlined in red) at a command prompt within the macOS Terminal app.

Asahi Install 1

This will start the Asahi install script, display the storage used by macOS (in my case 494.38 GB), and allow you to resize it down to a smaller size to make room for Asahi.

Asahi Install 2

I chose to resize my macOS installation down to 400 GB, leaving 94.39 GB available for installing Asahi.

Asahi Install 3

You can then choose to install the Asahi operating system into that free space, as well as select one of 3 installation options:

  • Option 1 (what I chose) installs Asahi Linux and the KDE Plasma Desktop (I also installed GNOME and i3-gaps after installation).
  • Option 2 installs a command-line version of Asahi, which requires that you manually install a desktop of your choice after installation.
  • Option 3 installs the components needed to boot any ARM-based Linux distribution (e.g., Fedora ARM) with a kernel that includes the drivers made by the Asahi team. This environment includes the m1n1 bootloader/hypervisor component created by the Asahi team, as well as the U-Boot universal ARM bootloader and the EFI System Partition.

Asahi Install 4

Next, you select how much of the free space you’d like to use to install Asahi (I chose the default, which uses the maximum), as well as the name of your Asahi installation. This name is shown on the Mac startup options screen.

Asahi Install 5

Following this, Asahi Linux and the macOS firmware will be downloaded and installed (this took about 30 minutes for me but will vary based on your Internet connection speed).

Asahi Install 6

Finally, the installation advises you to shut down your system and start it up while holding the Power button. Holding the Power button on a Mac at boot forces it to enter the Mac startup options screen, where you can choose to boot into Asahi Linux (instead of macOS). The first time you boot into Asahi, you’ll complete a short Asahi configuration wizard to complete the installation.

Asahi Install 7

After installing Asahi, your system will boot to Asahi by default, but you can hold the Power button at boot to enter the Mac startup options screen and choose the option to boot into macOS. To make the system boot into macOS by default, simply press the Option key (or Alt key if you are using a Windows keyboard) when selecting macOS at the Mac startup options screen.

To see how Asahi modified your storage following installation, you can boot into macOS at the Mac startup options screen and run the disktuil list command at a command prompt in the Terminal app. Before Asahi was installed on my system, the output of diskutil list showed the following NVMe disk (/dev/disk0) with three partitions.

  • Partition 1 contains Apple boot files.
  • Partition 2 (underlined in red) spans most of the disk (494.4 GB) and is synthesized into a virtual disk (/dev/disk4) that contains the logical volumes that comprise macOS.
  • Partition 3 contains the macOS Recovery files.

Storage Before Asahi

After Asahi installation, partition 3 is renamed to partition 6 and contains the macOS Recovery files. Partition 2 (underlined in red) is now only 400 GB and synthesized to /dev/disk3, while a new partition 3 (underlined in blue) is synthesized to /dev/disk4 and hosts the macOS firmware needed to access partition 4 and 5 (underlined in green). Partition 4 is the Asahi EFI system partition that allows the system to start the Linux kernel and access the Asahi root filesystem on partition 5.

Together, partitions 3, 4 and 5 comprise the 94.39 GB that I freed up for Asahi Linux during installation. If you remove those three partitions and resize partition 2 back to 494.4 GB, you will restore your system to its original state.

Storage After Asahi