Installing Linux on an Old Macbook Air

I think Apple makes great hardware. In fact, I'd argue that, year after year, they consistently make the best consumer hardware around. I've never once had a Mac, iPad, or iPhone fail on me due to hardware...

Their software on the other hand? Well, that's another story. I think their operating systems are slow, sluggish, uncustomizable, and are getting progressively worse. I like using workspaces a lot to keep all my apps fullscreen, and I'm able to semi-customize shortcuts - but what the hell, why can't I remove the animation slide and just "jump" to the workspace? That's such a stupid limitation that still doesn't appear to be resolved in 2025. Speaking of 2025...

Liquid Ass

Liquid glass is the latest abomination OS. I ran into a quote that succinctly summarizes my thoughts on the whole design: "Everything is wobbly, flashy, distracting". On one hand, I'm impressed by the lengths they went to, to get the glass refraction and magnifications. But on the other hand, within about 30 seconds of installing it, I found a bunch of text I couldn't read due to white-on-glass, and there was noticeable jank when swiping between home screens. I hope the performance will get better over time, and I can reduce the transparencies to make everything more legible, but it's just yet another change for the sake of change - rather than improvement.

Back on Track

So, as much as I dog on Apple's software, one small kudos is their device support. Compared to other vendors, they've done a reasonable job of maintaining OS support as per their vintage and obsolete page. Generally you can install new operating systems on devices around 6-7 years old.

What happens afterwards? You have a brick. E-waste. A security-hole-laden, support nightmare.

Not So Fast

I was given a Macbook Air 2017 to wipe and return to Apple for recycling. It took forever to boot, could barely open a browser, and was stuck on MacOS 12.7.6 (Monterey). I wiped it and was getting ready to get rid of it, but then I realized I had an interesting opportunity.

I've been learning to program Jai and one of it's many claims-to-fame is the ridiculously fast (debug) compilation time with an x86 system. So, as I don't currently have a laptop, I thought it would be cool to install Linux on this dual-core i5 from 8 years ago to see what it could do.

Installing Linux

It's probably worth saying just how easy this process was. I expected to be fighting Apple every step of the way, spending hours reading arcane texts on writing custom boot loaders... But nope.

Trying Alpine Linux... What Else?

I took my trusty Alpine Linux Extended (x86_64) USB key, plugged it in, restarted my computer, held the Option key, and then selected my flash drive when I was given an option of where to boot from. That was it. From there on, I ran the regular setup-alpine steps and pointed it to my existing MacOS volume, and nuked that from orbit.

After a few minutes and a restart, I was booting straight into an Alpine installation and it was ready to go.

What's the Catch?

There was exactly one catch that I spent a few hours trying to solve. The Macbook Air 2017 uses a Broadcom BCM4360 chip for wifi, and unfortunately, those drivers/firmware are proprietary. Even more unfortunately, Alpine removed their non-free repos at some point, so I was on my own to get it up and running. Yet even more unfortunately, the built-in b43 drivers don't support my exact chip. In the continuing series of debacles, I couldn't get wifi working after spending a few hours trying any and every permutation of the instructions in the Alpine Wiki (I did have to make some updates to the wiki, to remove broken domains from there in order to avoid potential malicious actions). I was also unable to build the broadcom-wl drivers from source or the APKBUILD. After a couple hours of fiddling around, I didn't have it in me to try to figure it out.

My Arch Nemesis

I had read online that people using Fedora or Arch had better luck with the broadcom-wl drivers - so, in order to test that out, I downloaded and burned DHH's Omarchy (Arch) setup to my USB key and installed that. Like Alpine, it was a low-effort, painless setup - though it took a lot longer, because the default Basecamp setup requires a LOT of software to be pre-installed...

I'll begrudgingly admit that after login, it is a very pretty default installation. I don't particularly like my tiling window managers to animate opening windows, but it was very fast and I can change that value in the configuration. Switching workspaces is basically a no-op given how fast it is, even on 8 year old hardware.

However, in spite of that, I was still without wifi. As per the Arch wiki, I tried my luck with installing broadcom-wl-dkms - but that didn't work. So I uninstalled that, and installed broadcom-wl and thankfully that worked out of the box!

Where To Go From Here?

I took an unsupported, horrifically slow Apple laptop - and turned it into a snappy and responsive Linux dev machine in the course of a few hours. Without the Alpine wifi tangent, it would have been a few minutes. Essentially, I re-purposed e-waste to something I am writing this post with. That's pretty neat.

I haven't given up on getting the correct wifi drivers for Alpine Linux either. With some more time, I can probably figure out how to build the appropriate drivers from source. It can't be that hard, I think I was just missing the appropriate dev dependencies or headers.

Overall, the timing of this experiment was fantastic: I have a 6-core Mac Mini (x86) which is also running horrifically slow on MacOS.

Time for a Linux glow-up!