Alpine Linux
★★★★★
Alpine is an extremely lightweight Linux distribution that still packs a lot of modern capabilities into it, including smooth package installation, removal and updates.
I use it for small (1GB RAM) cloud servers because of its low resource requirements and smaller attack profile on installation. It would also be a good choice for old hardware or low-powered physical machines like a Raspberry Pi or a Pine Star64 (or a PineTab2, by way of PostmarketOS): it supports ARM (both 32-bit and aarch64) and RISC-V, and still supports older architectures like PowerPC and 32-bit x86 in addition to the more common x86_64.
Desktop environments work smoothly, though it does take a little effort to set one up.
The main things that have tripped me up:
- Remembering which set of commands I need to manage daemons. (
openrcvs.systemvs.systemctlvs…) - Remembering that
apkusesaddinstead ofinstall. - Occasional compatibility issues when building (or trying to run precompiled) third-party software that doesn’t work well with musl.
To be fair, the first two are issues I have with other distros as well. Between work and hobbies I use Fedora, Ubuntu, Debian, Arch and Alpine on a regular basis, and I often end up running the wrong package manager for the system I’m on, or passing the wrong parameters to it, and I always seem to pick either the wrong command out of service and systemctl, or the wrong order of the service name and action, or both!
On the last one, the two that stick in my mind are a bug where super-long threads crashed Snac on musl systems (the dev ended up adding a configurable limit to how far back it would try to fetch) and being unable to run Servo on a desktop VM I’ve been using for testing.
More info at Alpine Linux.