So, since Microsoft decided to shove AI into everything, destroying what little trust I had left in them in the process, I’ve been giving Linux another go! Now, disclaimers first, I’m still primarily in the Apple ecosystem. All my Cthonic Studios work is done on Macs (and this is partly for software reasons, which I’ll get into in a future post), and I have some Windows Gaming Handhelds (also more on that at the end) but I’m slowly converting some of my tech over.
Today I want to talk a bit about putting a Linux distribution on a Surface Go 1, which is something I wish I’d had the ability to read more about when starting this project, but before we get there I need to do a bit of preamble.
A couple of weeks ago, I put Bazzite on my Framework 13”, and it’s been absolutely stellar. I’ve had zero major issues (and only a small number of minor issues) with that. Games still work! Doing development work still works great thanks to magical containerization! The wifi drivers just work! all in all it just works. It was a wonderful experience.
And all of this is thanks, under the hood, to Fedora.
Bazzite and the other distributions is based on Fedora Atomic Desktops, which are really neat. They’re basically the latest iteration of immutable desktops, which use various techniques to ensure that stuff in user-space remains isolated from the bits that make the computer go “brrrrr” which makes it easier to rollback or make changes to the core OS more safely.
One of the major barriers for me using Linux on the desktop for the longest time has been the propensity of updates to completely bork the system, making it unusable and taking upwards of hours to recover. Fedora Atomic Desktops promises to remove this problem by keeping updates contained and allowing you to boot back into previous versions of the OS after updates. You can even rebase your own version against another version to get yourself back to a known-good state in minutes and pin yourself there until the problem is corrected.
This is amazing. Universal Blue (the people behind Bazzite) also have a handy support document which covers how that functionally works. I’ve done a few updates on the Framework and so far nothing has exploded, so I haven’t had to resort to any of this yet, but just knowing it’s there and how easy it is to roll back is a comfort.
So, I’ve had this Surface Go 1 since it was first released and it’s gone through a series of being wiped about 4 times. Most recently I put Windows 10 back on it and it was…well… painful. The whole thing is super slow, and while the AI nonsense hasn’t made it everywhere, that damned Copilot button did get popped in. I don’t like this.
There’s no reason to get a Surface Go 1 in 2024. I’ve had one sitting around that I’m saving from eWaste and it seemed like a fun project.
So, it was time to try something different. I was so impressed with Bazzite, I wanted to see what it’d take to get Linux running on the Surface.
Here’s where the research started to get a bit concerning.
Running Linux on a Surface device requires a specialized Kernel
Right, so the very first thing you’ll run into when wanting to run Linux on a Surface is that because the hardware is specialized you’ll need a specialized kernel. Fortunately, the folks over at linux-surface have done all of that workand even have a well documented way to get it working. That said, if you start reading the documentation, there are several steps you have to take post-installation to get the kernel installed.
The easiest way, of course, is through the package manager but for some surface devices you’ll need an ethernet port because the Wifi chip isn’t going to work out of the box.
But, I’m lazy. I don’t want to do that. Universal Blue to the rescue.
Universal Blue Images have linux-surface kernels built in
That’s right kids, Bazzite and its peer systems (Bluefin, Aurora, uCore) have an image you can download which includes the linux-surface kernel in it.
Since I figured the Surface Go wasn’t going to be giving me a lot of gaming mileage in 2024, I went with Bluefin with the developer tools not preinstalled.
Sidebar, near as I can tell Bluefin and Aurora are the same except for Aurora uses KDE and Bluefin uses Gnome as the desktop manager.
This turned out to work great. I had zero problems wiping the entire drive, installing Bluefin, and then running it, though I did run into a couple of issues.
This was an extremely straightforward process, so I’m just going to use a numbered list:
⚠️ Now, you might notice that below I don’t re-enable Secure Boot. This is because I didn’t update the BIOS before starting this process and older versions of the UEFI menu do not allow you to boot 3rd party systems with secure boot. I’ve not tried fixing this yet via linux, but I will update this post if I get around to it. So if you’re coming behind me, update your BIOS to the latest before doing this using Microsoft’s update tools.
Download the surface image from the Bluefin site. Follow the prompts and they’ll give you the right options.
This thing isn't going to win any speed contests any time soon. Earlier, I was watching a youtube video while trying to multitask on it to see what it'd do, and while it behaved admirably given its aging hardware, it still stuttered when displaying the second display at 2k, playing video, opening discord, and trying to open LibreOffice.
Once everything was running, it wasn't a bad experience (certainly better than windows), but it was still kinda sluggish.
The other thing that I had thought / hoped we'd solved is the blurry bits on a high DPI display with Electron / Chromium apps. The tl;dr here is you have to enable the Ozone settings and set it to use ozone as the renderer in each of these apps flags: --enable-features=UseOzonePlatform --ozone-platform=wayland which will fix the display to work properly.
Update: August 2nd, 2024: Turns out this is a Gnome fractional scaling problem. I've installed Aurora (which is the same thing but with KDE) and the problem goes away.
One final bit: you need to remember to suspend it manually if you don't want the battery to drain while you're not using it. I suspended it and left it overnight (for around 10 hours before I checked) and it'd drained about 10% in suspend, which was pretty good all things considered.
But yeah, otherwise everything worked pretty well!
So, I also have a Aya Neo Air which I’m barely using and guess what “mostly works” on it? ChimeraOS. So, I’m going to tinker around with getting that installed and working on it in the nearish future and see how it goes. I’m not 100% sure I want to do this since I’ll lose some of the Aya Neo niceness (for example, the TDP switcher is broken in Chimera so you have to use a different app).
I can’t do this on the Ally as no distribution will ever properly work with that proprietary connector for the XG Mobile so I’m going to have to keep playing cat-and-mouse with Windows on that one, but…yeah.
Anyhow! Hopefully I’ll get to report back with good news next time.
As the world hurtles more towards shoving Generative AI into absolutely everything to make investors happy, I've been looking more into hardware sustainability and the viability of running things for longer (especially if they don't try to bake generative AI right into the operating system).
Something that's been chewing at the back of my brain for a while is the 11" Macbook Air. The form factor on that tiny laptop is awesome for how portable it is, but it was underpowered at the time for MacOS so I ditched mine.
Nearly a decade later, I keep thinking about it, it really was one of the best little not-a-netbook spiritual successors to those netbooks of yore. I kept thinking about how it might be nice to have a pretty portable writing machine for someone and I was curious how well it would work with that. So I've been keeping an eye on my local FreeGeek eBay store until I saw one in good condition, and snapped it up (for just over $100).
I also have an iPad which I use for this writing use case and I'll likely continue to do so, this is partially a fun thought exercise.
The 2015 MBA can only be upgraded to Monterey at the latest, and that's what came on the one I bought. I did boot into that and play around for a while and the experience was "okay". Unfortunately, running Monteray on something with only 4 GB of RAM is a bit of a rough go. It managed to browse the web okay but it was already a little sluggish just poking around.
To the former question, that's mostly because I can reliably run linux on a potato, and I was sure any number of distros would run on a nearly decade-old machine with strong memory constraints well.
The main issue was going to be drivers, older Apple hardware is usually fairly well supported but there are a bunch of little quirks that you have to deal with. So I set out to find a distro that was going to "mostly" work out of the box.
That's why I picked Manjaro with Xfce. The Xfce window manager is extremely lightweight (while still looking pretty great) and Manjaro is an Arch distro with pretty solid support for this particular model of Macbook Air. Installing it was a breeze, simply creating a bootable USB drive and we were on our way. Now, I expected to have to deal with Wifi driver issues after I installed Manjaro, because during the install wifi was not working. However, once I'd booted into it for the first time the wifi drivers just worked. That was a pleasant surprise. Wifi drivers have been my recurring Linux nightmare since the early 2000s.
After that, it all "just worked" with some minor exceptions, which were:
This is perhaps a huge deal for someone who wants to use this thing for video conferences, but it's not a big problem for me.
Luckily the Arch Wiki has a whole page of troubleshooting steps, webcam one of them. I'll eventually go through the steps and report back, but others have gotten it working with this particular model so I'm not worried about that.
By default, the screen's color profile is "muted" and off. Fortunately, Arch Wiki to the rescue again. The installation page has a reference to which color profiles to use.
Yeah, like everything else there's a reference on the Arch wiki. I've not tried this yet, but I'm also pretty confident it'll work. It doesn't take very long to boot the system cold, so it's not really been a problem.
The keyboard is still really solid and pleasant to type on. It predates all of the butterfly keyboard problems and I'm honestly a little surprised that there are no issues on this used model that I purchased.
The form factor is hard to beat. The extra length means it's super comfortable to work on, with lots of space to place your palms while typing. It's also got a full function row which is always appreciated (I'm looking at you, touchbar mac). Unlike netbooks, it's actually really easy to clack away on without feeling too cramped.
I've gotta say I'm a huge USB-C fan, it makes life a lot easier if you only need a single cable for everything from external displays, charging, data transfer and the like. I'd forgotten how annoying it is to have to carry an entire magsafe charger and regular USB-A cables and maybe a thunderbolt 2 cable (not that this thing's going to work well on modern monitors). That'll likely be a limiting factor, especially because....
It's bad. Real bad. Like 4 hours bad. I could potentially squeeze out another hour out of this thing if I were to replace the battery (iFixit sells replacement parts for this), but it might not actually be worth the effort until the battery gets worse.
The screen is a little small for 2024 and a lot of things assume you're going to be on a larger (or much smaller) display if you're on a computer and not something like a tablet with a touch interface. The resolution is also kinda low, but I didn't find it particularly problematic for my use-case which is writing.
The brightness is also a bit dim, which would make using this outside in bright light fairly difficult, which is a bummer since it's so portable it's going to be a problem.
Turns out Universal Blue Aurora works great on a Chuwi Minibook X, with only minor issues! But, let’s back up - what’s a Chuwi Minibook X, and why did you get one and put Linux on it?
The Minibook X is a very small laptop with a hinged touchscreen display that’s reiminiscent of Netbooks of yore. But with actually decent performance for the price. It also comes with 12 GB of RAM, a 512 GB SSD, and a 1920x1200 10.51” display.
😈They did just release a N150 version of this thing, but as far as I can tell it's identical except for the processor.
The killer feature for me is the size, it’s extremely portable with a keyboard that’s still usable for someone with fairly large hands. Here’s a quick size comparison of the Minibook X on top of my Macbook Air 11”, which itself is on top of a 13” Macbook Air M2.
Just look at how small it is! It’s several inches shorter than the Macbook Air 11” with a higher resolution display.
It retails for $399, but it’s regularly on sale for $350 or less.
Before I decided to pick this up, I watched a ton of videos on the topic, but I think this one was the most informative, which covers both the Minibook X and its larger sibling (with the same specs, otherwise).
I really like it. It’s extremely compact while still managing to be comfortable to type on. The keyboard feels nice (though not as nice as the MacBook Air 11”), the touchpad is a little small but perfectly serviceable. The display is great for the price, and it gets quite bright. The display is glossy, though, so it’s a bit hard to use in bright light.
The N100 is a really solid processor for this thing, and I don’t have any performance complaints for what I’m using this for (mostly writing). You can also do some light software development on here too, docker runs just fine.
You can even do some light gaming, if you’re into retro games or lightweight stuff. I tried RuneScape 3 and it worked perfectly well. Of course, Game streaming works just fine as well — it’s equipped with Wi-Fi 6 for fast wireless connections.
The biggest issue, for me by far, is that Windows has gotten extremely bad, they’re shoving ads into everything, adding Copilot wherever they can, rolling out Recall in places it doesn’t belong, and yeah. So, I definitely did not want another Windows Laptop sitting around.
Hence, “can you put Linux of some sort on this thing?”
When I first started researching this thing, a couple of themes kept popping up: The display is broken in the Linux Kernel between 6.6.15 and 6.9, sometimes the Wi-Fi drivers are broken, and slew of other things.
Good news is Sonnyp came to the rescue by documenting every issue that will commonly occur along with a support matrix. It was very useful for this process.
So, I set out to try my favorite Fedora Silverblue variant (besides Bazzite): Aurora DX.
Getting to the boot menu involves smashing F7 on this machine until you get the boot list. This is also how you get to the BIOS, but there’s not a lot in there.
The most immediate problem when booting from the USB installer is that the display is rotated. You see, this is a vertical display that’s rotated in the software. There’s not a way to fix that during installation, so you kinda just have to deal with it.
The second issue I ran into is the one that I keep running into with Universal Blue variants: it can’t delete a BitLocker volume. To deal with that, I booted into a Linux Mint live USB and used GParted to wipe the hard drive clean. After that, installing Aurora DX was straightforward besides the rotated display.
😈Universal Blue variants support secure boot, so no need to turn that off.
After the first boot, basically everything worked out of the box. No issues with the Wi-Fi, the touchscreen is functional (though I’ve yet to try a pen), the camera even “just worked”.
So, on to that display rotation, I had to do several things to get it to be rotated properly when it boots. Well, apart from Grub. There’s apparently no way to get Grub to rotate properly. Which isn’t a huge deal.
Please note that autorotation doesn’t work, there appear to be some workarounds for that, but I’m not using it so I’ve not bothered to try.
Open up the display settings, and then change the device rotation to the proper rotated orientation. That’ll fix the rotation when you’re logged in. However, that will not apply to the lock screen that occurs after boot.
Go to Global Theme > Login Screen (SDDM). There will be a button in the top right hand corner called Apply Plasma Settings... Click that and then Apply, which will copy the display rotation settings.
There are two potential kernel args that affect the initial screen rotation as the machine boots (including the nice little splash screen thing). The first comes from that Sonnyp’s Github repo, and the other is from the ArchWiki.
I’ve set both of them using the following commands:
What good is having an ultraportable laptop without taking it to uultraportableplaces? So far I’ve taken it out to a few places and I have to say the amount of table space it occupies (when compared to a laptop, not an iPad or the like) it’s fantastic.
Here’s it at a coffee shop:
Functionally it’s like a 10” iPad with a full-fledged operating system, with a slightly worse keyboard experience. And a definitely worse battery experience, probably.
😈I will say the keyboard cover for the M4 iPads is fantastic, but it should be for $300.
So, one thing that keeps getting mentioned in descriptions of this machine is the tiny (for a laptop) battery. It does in fact have a very small battery, but I was still getting roughly 5–7 hours of estimated usage when I was out working on this and other blog posts. The longest I’ve used it continuously has been 2ish hours, and after that I still had about 70% of the battery remaining, which wasn’t too bad all things considered. This is way more than my refurbished MacBook Air, and it has the added bonus of a USB-C port to charge with s, so can carry around a small battery pack to recharge it should that become necessary.
So, it’s a little chonky at right about 2 pounds (0.91 kg). That’s just a smidge over my 10” iPad with the keyboard cover on it, and less than an M4 iPad + keyboard cover. Still, for the size / convenience ratio, I think I like it better than the iPads for general utility. It’s not nearly as powerful, but it can also handle a full development environment locally so… there’s that.
I love this thing! The only major test left will be if the pressure-sensitive pen works in Linux, but if it does, it’s liable to see more use than my 13” laptops for shorter trips.
Over on Mastodon I mentioned, offhand, that I'd been daily driving (meaning, using daily but not as my primary machine) Asahi on a Macbook Air M2 (15") and some folks were curious what kind of experience I was getting with it. So, instead of making a giant thread, I figured I should blog about it instead given just how behind I am on blogging. Plus, most of my blog posts are lamenting the state of slop so this should be a nice change of pace.
I'll just walk you through what I'm using it for and the process from installing Asahi to using it on a daily basis.
Right, so this is worth noting that this is not my primary desktop. That is either a Mac Mini M4 or a System76 Thelio depending on if I'm at home or in my office. I use both of those for primary work, including destkop publishing stuff (which we'll touch on shortly because it's relevant to Asahi).
The laptop is used as a "writing machine", which means it has to do the following:
Browse the internet
Run Obsidian
Run Nextcloud Desktop (to sync my writing files)
And that's it. However, it's worth noting that I also have git and some light dev tools installed on this so I can do stuff like update this very blog from this machine. For my editor I'm using Lazyvim with a bunch of plugins these days, and that runs basically anywhere.
Notably I'm not trying to hook this up to an external monitor (nor have I tried), and last I checked this was still a bit hit-or-miss if you're expecting displayport alt mode to work. Even if it does, it only supports a single external monitor due to hardware limitations.
So, if you're expecting that to work well, this is likely not going to be viable for you.
Installing Asahi was a breeze. The Asahi team has a shell script that goes and downloads a secondary package from their CDN and then runs an install shell script from there. The source for the installer is on GitHub if you want to go poke around in there and/or download it directly. The shell script from alx.sh is just a thin wrapper around downloading and executing said installer.
Once you're running the installer it interactively walks you through what you need to do:
Resize the disk to make space for Asahi
Install Asahi
Reboot into recovery to finish the installation.
There's a Youtube Video showing the full process, if you're interested in what it all looks like.
WARNING: You really need to pay attention to what it is telling you. You have to take a manual step after the install is completed in order to get this working. It's recoverable if you don't, but it's a hassle and can render your mac unable to boot without reinstalling MacOS, but pay attention.
After that's all done (especially the manual recovery step to get uboot functional) you'll be taken into the Asahi Fedora Remix setup flow where you set up the user account and all the regular Fedora stuff.
Okay! Once that was done, the next thing you want to do is install some apps. Discover is shipped by default, and if you can find the app you're wanting in there, you're golden. Flatpaks included.
dnf is also available if you want to install packages that way.
So, I wanted to get a few things running immediately:
Vivaldi
Nextcloud Desktop
Obsidian
The only problem with that is that neither Vivaldi nor Obsidian are in Discover because it doesn't have Flathub enabled by default. To do that, you can just go into discover's settings menu and click "Add Flathub", and viola.
But because I'm a masochist, apparently, I figured "You know what, let's just go get the AppImages for these two things I'm missing, like a fool, and run those!" The thought apparently never occurred to me that I could also just download the Flatpakref directly. I'm not sure what I was thinking. Probably something like "ooh I wonder if the AppImage will run okay." They do.
Dear reader, that does work, but once you've done that you want to move them somewhere safe and then set up menu entries for this. Normally I use Gear Lever for this, but since I chose not to add Flathub, that wasn't an option. Good news though, KDE offers a handy menu editor so you can just add whatever you want "easily" and so, like a fool, I did that.
Nota Bene: I've since tested the Obsidian flatpak on Asahi. Works fine.
The other bit of software that I use, Freetube, was giving me some trouble out of the box, and that required me to go in and add a command line flag to the menu entry: --js-flags=--nodecommit_pooled_pages which I pulled out of this GitHub issue which happens on other Electron apps as well, which is apparently to do with Asahi's page size.
Fortunately, I've not encountered anything else that's super broken when installing stuff, it largely "just works".
The thing I wish I had gotten working but haven't been able to solve for
Okay, one thing that I would love to get working but cannot figure out is getting the v2 Affinity suite running on one of these things. It's about the only reason I have to boot back into MacOS to do.
Getting Affinity running on Linux is a bit of a chore, but thanks to AffinityOnLinux it's very straightforward and I've done it on several Linux installs (remember that System76 desktop from earlier, yep, it's working there).
Unfortunately, that's not so true on Asahi, where not only do you have to contend with Wine, you also have to translate from x86 to aarch64. Now, this is theoretically doable, but any combination of things I've tried has not worked.
I can't really complain about the battery, it seems to last almost as long in active use as MacOS does.
What it does not do is sleep properly. If you just close the laptop lid, expect the battery to drain just as fast as if you were actively using it (maybe a bit slower since the screen is not on). You cannot just close the lid and expect it to still have 95% charge after a week of it sitting unused.
Asahi does this fun thing with the cmd key where it'll work in a mac-like fashion for some things, but not for everything so it really mucks with the muscle memory. This isn't a huge deal for me, because I frequently switch between Mac and various flavors of Linux, but I can see it messing with someone who's just hopping over for the first time.
Haven't had any issues with Bluetooth connecting to my earbuds, nor have I seen any weirdness with the built in speakers or adjusting the display brightness or keyboard backlight.
Resuming from the screen turning off does occasionally require me to tap the power button, but otherwise there's noting of note there.
Touch ID does not work, of course, there's no support for the fingerprint sensor here. Knew that going in, though, so it's not a downside.
I run Tailscale on it for Wireguard stuff and that works great. Wifi's been solid.
I'm sure if I had some more demands of Asahi I'd run into some things that are annoying, but for what I'm using it for, it's been really nice and generally aligns with my overall expectations of running Linux on a modern Macbook.
As an aside, I also have a 2015 Macbook Air 11" that runs Arch... it's a neat little machine.
So overall I think it's worth giving a try if you don't have really high demands of the thing, and even more so if it's not your main machine. I could probably get by with just Asahi for the kind of computing I do for my freelance work, but I've never tried it for that partly because of dealing with various VPN things.
... and yeah, that's it. Lemme know if there's anything you'd like me to answer on this post and I can update with an FAQ later.