Using Asahi Linux as a developer workstation

+

Exactly 2 weeks ago today, the first (alpha) release of Asahi Linux was made available. I immediately installed it, and I’ve been using it as a developer workstation ever since to get real work done… and it’s been awesome. Asahi M1

What is Asahi Linux?

Asahi is the first Linux distribution that you can install natively on Apple M1-based (arm64) systems. It’s based on Arch Linux and is unbelievably fast. And while it’s missing a few features that will be added shortly (GPU acceleration, Bluetooth, sound), it’s otherwise very polished and 100% production-ready. Moreover, it runs my software much faster than macOS on the same hardware. In this post, I’ll examine my setup, experience, and impressions.

My hardware setup:

  • Mac Mini M1 (16GB RAM, 500GB SSD)
  • HDMI output to 34" monitor
  • Lenovo ThinkPad II keyboard (2.4GHz connection)
  • Glorious PC wired USB gaming mouse
  • Wired Ethernet (although Wi-Fi works perfectly in Asahi)

My software setup:

  • Desktops: GNOME & i3 (I mainly use i3)
  • Web browser: Firefox
  • Code editor: vim plus the developer extras
  • Development: Java, JavaScript, Python, PostgreSQL
  • Versioning & devops: Git, Git Cola, Docker, K3s, Ansible
  • Collaboration: MS Teams (via Firefox), GitHub, slack-term
  • Other: Hugo, LibreOffice, Gimp, Inkscape, Bluefish, Remmina (corporate RDP)

What I’ve noticed using Asahi:

  • While I’ve traditionally used mostly Fedora and Ubuntu Linux, I’m really enjoying Arch, including their approach and package management. The Arch User Repository (AUR), pacman and yay are excellent, and examining PKGBUILDs/.pacnew/.pacsave is a breeze. Plus, you get to use the phrase: I use Arch BTW
  • Even with CPU-generated graphics (because GPU acceleration isn’t available yet), desktop environments and apps are lightning fast. I’ve never seen KDE, GNOME, LibreOffice, Gimp, Inkscape, and Firefox run so fast before. Even games (e.g. SuperTuxKart) run smoothly, as does high definition video using VLC. Website embedded video (e.g. YouTube) also runs perfectly within Firefox in i3 (it randomly stalls within Firefox in KDE/GNOME due to lack of GPU acceleration).
  • Lack of Bluetooth and sound right now doesn’t bother me at all. I use a non-Bluetooth keyboard and mouse, and listen to my phone playlist using Bose headphones while I work.
  • The only apps that don’t run include proprietary apps that don’t have an arm64 build (e.g. Slack), as well as Electron- and Chromium-based apps (e.g. VSCode, Chrome, etc.) because of the M1’s 16K page size that is apparently going to be fixed shortly with a new Linux kernel. Websites run just as well in Firefox (including Microsoft Teams, Outlook, YouTube, Twitter, etc.), and while I’ve been spoiled by VSCode these past few years, returning to vim with the developer extras has shown me that VSCode was really just unnecessary eye candy that didn’t actually make me faster. Slack probably won’t make a graphical arm64 Linux app anytime soon, but the slack-term terminal version works very well.
  • Services and terminal apps also run incredibly fast. Hugo composites this website in half the time it does on macOS on the same machine, and my Docker development containers and K3s setup also run much, much faster on Asahi. This makes sense, because to run containers on macOS, macOS must run them in a Linux virtual machine (while Asahi can run them natively).
  • CPU usage rarely rises above 30%, even with a dozen or more graphical apps open and many background services and containers running. With my workload, RAM usage varies between 1GB and 5GB in total, which is also much less than what I had with the same workload on macOS.

Desktop pics:

KDE Plasma is the desktop environment that is installed by default on Asahi Linux. However, I’ve never been a fan of KDE (it resembles Windows too much), so I installed the GNOME desktop environment shown in the following two pics:

Asahi GNOME 1

Asahi GNOME 2

However, as a Linux admin and developer, I’ll benefit from a more powerful desktop that I can customize for my exact needs. I prefer the i3 tiling window manager (described in my previous blog post) for this purpose. Following are five pics of my i3 desktop configuration on Asahi Linux:

Asahi i3 background

Asahi i3 1

Asahi i3 2

Asahi i3 3

Asahi i3 4

What does this mean for Apple, Apple hardware and macOS?

Back in 2004 when I first dove into the Apple ecosystem, macOS (then called Mac OS X) was an incredible UNIX operating system that was quite open, and very polished compared to Linux at the time. The merits of macOS drove Mac sales at a time when PowerPC-based Macs were more expensive and less powerful than their similarly-priced PC counterparts.

However, Linux has since evolved far more than macOS, especially during the rise of open source and cloud technologies this past decade. And while Linux doesn’t have the same mainstream user adoption on the desktop that Windows and macOS have (Chromebooks excluded), it’s far more polished and powerful.

Today, those who buy a Mac often do so for the hardware. Apple deserves a lot of credit for their new M1 platform (as well as adding ports to their products again). However, after running Linux natively on the M1, it’s quite apparent how much macOS has stagnated over the years. macOS is still a decent OS that will be used by a large number of people for decades to come, but where Apple shines today is in their hardware. And while Apple didn’t help port Linux to the M1 (Asahi developers had to reverse engineer everything), they designed the M1 to allow for the installation and booting of other operating systems. Linux was just the first. After the exclusivity deal between Qualcomm and Microsoft ends (soon), I anticipate that Microsoft will release arm64 versions of Windows for the M1.

Prior to the M1, Apple made it easy for Windows to install natively on their Macs using Bootcamp. Linux also ran well on them (but without device driver help from Apple). This led to more people buying Macs, and I think this is the reason why Apple has designed the M1 to allow for the installation of other operating systems.

The installation process:

While there are several YouTube videos that you can view to see the installation process, I’ll nonetheless say a few words about it here.

In short, it’s very easy. You run a script from macOS that shrinks your macOS installation to free up space for Asahi (I freed up 100GB). Once Asahi is installed, it reboots into macOS recovery mode and completes the installation. The whole process takes about 30 minutes and each step is explained thoroughly by the installer.

The hardware components currently supported by each model of M1-based Mac is well-documented on the Asahi Linux site. If you’re installing on a Mac Mini, you’ll see that GPU acceleration, sound, DisplayPort and Bluetooth are still in development. Everything else just works fine – USB drives, Wi-Fi, Ethernet, HDMI, and so on.

After installation, the installer sets Asahi as the default OS to boot from, but you can easily boot to macOS by holding down the power button on system startup and selecting the macOS icon from the startup menu (you can make macOS the default boot target if you hold down the Option/Alt key when choosing macOS on this menu). Asahi runs in permissive security mode on the M1 CPU because it’s a non-Apple OS, but this doesn’t affect macOS whatsoever, which runs with full protection, including all security options and drive encryption (you can verify this after booting macOS by running csrutil status at a Terminal prompt).

If you ever want to remove Asahi Linux, it’s also very easy to do. You can boot into macOS and remove the volumes created by Asahi (they are easy to identify in the Disk Utility), or you can run the uninstall script from the Asahi Linux site.