Most of the ARM operating systems are not mainline distributions, simply because those kinds of organizations do not have the time to create custom variants of each OS. There are exceptions, of course, but the general process is that niche operating systems show up for devices like this.
Some of those OSes are well known, others less so. These are the ones I use, and why.
These are OSes which are purpose built for SBCs or ARM in general
Back in the bad old days, Raspbian was not the most… predictable of operating systems. In an effort to make things easier, they often changed very strange parts of the operating system seemingly without reason. One example is the DHCPCD5 package, which would automatically request a DHCP address unless manually configured. What the reasons for this were I do not understand, but the upshot was that every time I tried to manually configure the IP in /etc/network/interfaces
, it wouldn’t work exactly the way I wanted it to.
Now, Raspberry Pi OS is much more stable and predictable, although it still has some irks. The new shift to Network Manager wouldn’t be my choice, but it works. With the new Imager utility and the ability to rewrite the OS before it runs for the first time, it’s competing with DietPi for fast initial setup.
One pain point about RPiOS is that it sometimes sacrifices security for convenience. For example, in the new Bookworm-based Raspberry Pi OS, both passwordless sudo and persistent sudo are turned on, which means that your authentication is remembered across sessions. One or the other would have been fine, but both was a mystery to me. Automating patches for small things like this is simple, but why it’s needed at all is something I don’t particularly like.
I am a huge fan of DietPi, simply because it enables two very useful features for people like me who have a lot of boards to set up; automated first-time installation, and integration with Raspberry Pi OS and Armbian.
The automated setup is the killer feature I like most. Essentially, you pass the system a file of environment variables, and it runs a setup script that does everything you need for a first run.
For a small OS, this distro is definitely up there because it mostly leaves Debian alone, barring tweaks from Armbian and Raspberry Pi OS for their devices. Where the Raspberry Pi Imager makes setting up Raspberry Pi OS easy, DietPi does the same for other SBCs.
Armbian builds Debian and Ubuntu images specifically for different SBCs. Most if not all modern SBCs will have an image in Armbian, and they also keep up a repo for older devices that have long since lost support.
There’s not much else to say, really. It’s a good, solid ARM SBC OS.
I’m grouping these because both are fairly major OS distributions, but on their main sites don’t really seem to support ARM SBCs directly. That’s because both have images in off the track places. Ubuntu has OS images, while Debian has guides (and some images) for more SBCs.
Not quite as flexible or widespread, these are handy to know about for specific devices or just in case
OpenWRT is not just a good router OS, but a good OS in general. It’s not as capable as Debian or Alpine, but it’s still a very competent OS with a very robust package set and hardware support. It’s not perfect, since it doesn’t always have support for all SBCs, and it can be very slow with new devices, but it’s a very reliable platform nonetheless.
I really like Alpine, but installing Alpine on an ARM system can and often is an exercise in frustration. Alpine doesn’t release images for SBCs, but instead releases tarballs of the filesystem, and it’s up to you to figure out how to boot it, how to run it, how to mod it, etc. I used it for my old Raspberry Pis, and that only worked because Alpine has a guide for the Raspberry Pi. Once it’s set up it’s great, but getting to that point can be a pain.
FreeBSD has had a couple generations of ARM SBC support, but as of aarch64, it’s really become a good platform. This is because before aarch64 reached Tier 1 support, the only way to install packages was through Ports, which meant CPU time. For an ARMv7 machine, that was just painful.
As of FreeBSD 13, quite a few aarch64 devices are directly supported. The Raspberry Pi, PINE64, and ROCK64/PRO all have direct images.
Since FreeBSD is not Linux, there are a few major differences, but most are fairly easy to figure out, and FreeBSD has been a rock solid choice of OS for a long time now.
These are OSes that I know exist and run ARM but don’t have much interaction with.