Foreword
It’s not titled GNU/Linux Distro 101 cuz I wanna try out BSD ones too.
The List
- Ubuntu LTS 16.04-22.04 (Server)
- an ideal distro for beginner
- offer more recent version of packages than Debian stable1
- snapd is not bad, but prioritizing it over standard dpkg is
- Canonical has a mixed reputation
- CentOS (Server): not appealing for me at the time
- Debian 8-12 (Desktop/Server/WSL/ARM)
- Rock solid, it’s known as install & configure it once then use it forever™️
- De facto base for many many distros (and one of the few ones with ARM support before)
- Stable can have obsolete packages (not updated/only security update for 2 years, which is the usual Debian freeze/release window) even if backports exist
- Testing (w/ security updates from unstable) is super stable AFAIK
- Many useful packages tied to Debian ecosystem (apt-listbugs/apt-listchanges, command-not-found2, debsecan, snap etc)
- Armbian (ARM): just Debian
- OpenMediaVault (ARM/NAS): buggy on my machine™️
- openSUSE Tumbleweed (LiveCD/VM): I even got some packages on Debian from SUSE, zypper is just like apt, and that’s all I remember
- Fedora Workstation (LiveCD/VM): bleeding edge, BTRFS and said to be used by Linus Torvalds
- Mint (LiveCD): don’t use the MATE one, it’s ugly
- Kali (LiveCD/VM/Termux/ARM)
- Rolling release kinda sucks, but is bearable and magically hardly breaks
- Just work out of the box in LiveCD, x86_64 & arm64 installation, even Termux via PRoot
- Good at aesthetics, fuck Debian Xfce4
- Tails (LiveCD/VM)
- Anonymous yet ugly
- Has a monthly report and is open to the spending of donation, so shut up and take my money!
- Used by Edward Snowden
- Arch / Artix (VM/WSL)
- every time I run
sudo pacman -Syu
, Arch/Artix breaks :) That’s 3 times in a row already - I tried a 4th time (this time with Artix-openrc) after the initial draft of this writing, after
pacman -Syu
the system shows mepacman: /usr/lib/libc.so.6: version GLIBC_2.36 not found (required by /usr/lib/libexpat.so.1)
:) - PS: Artix is just Arch sans SystemD
- every time I run
- ReactOS (LiveCD/VM): Windows 2000
- KDE neon (LiveCD): latest KDE
- Raspberry Pi OS (Desktop/ARM): why not Debian, at least it uses 64-bit by default for my arguably powerful rpi4 8GB edition
- Alpine (Docker/VM): lightweight, security-wise, embed IoT…and Docker
- Deepin/UOS (VM/Desktop)
- resource-heavy, but offers quite a few Chinese exclusives
- fake it till you make it™️
- Lakka (Switch)
- basically just RetroArch with everything ready (except Chinese support)
- built-in CPU/GPU overlocking for Switch is really convenient
- network never works under WiFi with hidden SSID
- Trisquel (LiveCD/VM): The chosen one by Richard Stallman
- Parrot OS (VM): not ready yet
- ravynOS : FreeBSD, Wayland and macOS
- Devuan (WSL)
- Just Debian sans SystemD (w/o a few systemd-related blacklisted packages )
- I maintain DevuanWSL based on Daedalus (current stable) btw
- Redox (LiveCD)
- Experience in 2022: Linux but in Rust, fairly minimum (76 MB for LiveCD is black magic) and lacks feature
- 2024 Update: zstd is the new black magic with that insane compression rate
- Linux From Scratch (LFS) (fxxk user case, I build it myself)
- Do everything from scratch is not funny, but extremely tiring
- Getting it done is a great achievement
- Arch kiddo, forget AUR &
PKGBUILD
, LFS is better for learning Linux
- Gentoo WSL
- Compile it yourself™️ (or use bad new generic binary as Gentoo goes Binary)
- Updating could take ages and Gentoo has a confusing soft ban policy on IPs with frequent update query
- Installing a moderate (22 MiB, it’s bottom) package requires at least 11528 MiB disk space (it’s rust toolchain) is a stupid idea, really
- VoidWSL (glibc & musl-libc variant, so far the best fit)
- Tiny yet powerful
- XBPS is great
- No SystemD, hence 💩-free
- Packages hosted on GitHub so involvement is easy, check Void Package Contribution
- Offer a few packages not in Debian/Devuan (Mono, VeraCrypt, lazygit, bottom etc)
- All that being said, Having sshd enabled by default & ignoring community feedback is terrible
- NixOS-WSL
- Interesting package manager, easy to fix when broken
- Highly tied to SystemD but that’s fine for desktop
Awkward wrapper to start SystemD in the WSL derivation
- ManjaroWSL2
- Arch for dumb (or tired Archer)
- It doesn’t break after I type
sudo pacman -Syu
, deals done :) - I used to maintain MalayaWSL (forked from the legacy ManjaroWSL) before the author (finally) gained permission from Manjaro team
- SystemRescue (LiveCD/Server): Not so small but get the job done
- SlackwFareWSL2 current
- long-living and old-school (not so much on 15.0+)
- Slackpkg is really interesting
- It does not handle the dependencies for you, you have to look up the missing library using
slackpkg file-search
(just likecommand-not-found
on Debian /tlmgr search --global --file
in TeXLive), and install it yourself - This sounds scary, but in this way you can choose to install the exact dependencies you want instead of a default full/minimum package other distros may offer, while at the same time you are the one to do the research and make sure you don’t get trapped down the rabbit hole of unnecessary or even unsafe dependency 3
- That being said, installing a gigantic package like
ffmpeg
orimagemagick
would cost pretty much time, I even wrote a template for this to ease the pain… (see #Slackware Dependency Tracking Template) There is also slapt-get which emulates apt-get, but that’s not my type
- It does not handle the dependencies for you, you have to look up the missing library using
- somewhat the true/vanilla Linux as it prefers simplicity over convenience and offers little/no patch to upstream software, which makes the learning curve a bit steep but running software as designed makes the system behaves in a predictable way
- ClearWSL 4
- system as software, and optimization of, by and for Intel®
- really fast, and lacks a lot packages
- swupd is surprisingly useful
- Has built-in command-not-found hint for common package: type
zsh
returnsTo install zsh use: swupd bundle-add zsh
- The hint even works for similar command on other distros: type
apt
returnsThe command apt is not available, consider using: swupd
- However, the package search feature is kinda buggy
- Has built-in command-not-found hint for common package: type
- the repo I intended to use has not been updated since 2020, and use obscure
env.sh
instead of standardMakefile
, so I implement it myself (and fully automated it)
- Fatdog64 Linux (LiveCD)
- Derived from Puppy but now based on LFS & BLFS
- Really follows Puppy spirit: small, fast and efficient. It has but only common programs like browser, email client, GIMP, LibreOffice etc., but also less used ones like CD ripper/burner, MTP/SMB/BitTorrent clients, and even comes with four games (including classics like Tetris and fun variants like Space Invader 3D), yet keeping the ISO at a reasonable (600MB) size
- UI is notably worse than Puppy while the latter is nearly half the size, making tradeoff not quite an excuse
- FuntooWSL
- Gentoo enhanced, Wolf Pack Philosophy is interesting too
- Sadly no rootfs for newer gen Intel CPU, so I have to use Generic 64 one and suddenly this makes no difference (and possibly worse) from Gentoo even if I follow Funtoo philosophy and agree on their No Need for Make.conf Hackery statement
- Messy Documentation: link rot, endless redirection, deprecated yet not migrated page etc. But Funtoo Linux Installation Guide, Emerge are my friends
- maestro
- not a distro, but Unix-like kernel written in Rust
- Introduction
- maestro-install (toolchain to make a bootable ISO)
- Unable to make it work inside VirtualBox, hours of package installation is definitely abnormal AFAIK
- Wubuntu
- Windows Ubuntu based on KDE Plasma that mocks the appearance of Windows 11 (or Windows 10, if you prefer)
- PowerToys Control Tools are confusing, as Windows has system utility set exactly named PowerToys
- win-r is not present, sadly
- Microsoft nowadays really embraces open source, so it’s great to see such distro emerging (despite the poor performance w/o guest addons on VirtualBox) to explore the possibility before M$ says no
- Rocky Linux (Server/WSL)
- The chosen one out of these CentOS/RHEL-derived WSL distros according to Alibaba Cloud
- CentOS-WSL for CentOS Stream
- RL-WSL for Rocky Linux
- AlmaLinux-WSL2
- Although I build Rocky Linux from RL-WSL (with QCOW2 cloud image), the official documentation has a dedicated section to guide you Import Rocky Linux to WSL directly from container rootfs which is easier as RL-WSL requires QEMU after all
- Rocky Linux really rocks and offers a solid experience (pun intended), almost everything works perfectly, despite a few missing essential packages like bison, bycc & opendoas that do not come with installation
- World-class documentation with a wide range of topics. I have to cue AlmaLinux OS for their terrible website on this. The navigation bar simply won’t work, w/ or w/o JavaScript, with 4 domains connected whilst on Rocky you connect to only one domain w/o JavaScript and everything still works like a charm5
- The chosen one out of these CentOS/RHEL-derived WSL distros according to Alibaba Cloud
- Venom Linux (WSL)
- Great to see distro adopts s6 & sysv by default, and
slim
as display manager - Their package manager, scratch, is an interesting pure POSIX shell script
- Download speed is damn slow (just like LFS, but the latter has official hosting site and fast mirrors!), searching through ports is painful and many packages are missing (creating ports is not hard though). At least scratch would not fail due to missing package…
- Documentation is weak. Not to the point I’d call it abysmal, but it definitely needs more care. A wiki covering nothing more than installation, package management and ports is not enough IMO. And it took quite a while to jump between GitHub projects only to find out that they moved to GitLab…
- Overall, probably a better choice with less hassle than Gentoo, but not satisfying enough for me
- Great to see distro adopts s6 & sysv by default, and
Another List to Try & Why
Sorted by preference:
- doslinux: WSL alternative for MS-DOS 🤷
- Guix on WSL2
- guix shell
- inspired by Nix
- PopOS: by System76 and maybe clutter free
- rlxos: independent & immutabe
- Whonix: another anonymous solution
- Qubes OS: yet another anonymous solution
- Vanilla OS: interesting package manager, which can install Ubuntu, Fedora, or Arch Linux packages inside containers
- Bedrock Linux: a meta distro, which allow mix of incompatible distributions by layers. Were I to use it, maybe I’d maintain a BedrockWSL based on bedrock-wsl
- OpenBSD: it’s BSD, although I tried twice and it won’t finish installation on VirtualBox
- HardenedBSD
- BlackArch: pentest, with Arch
Slackware Dependency Tracking Template
# Some command not working
$ ffmpeg
ffmpeg: error while loading shared libraries: libglslang.so.11: cannot open shared object file: No such file or directory
# Grab all missing libraries
libb=$(ldd $(which ffmpeg) | grep not | sort | uniq | awk '{ print $1 }' | cut -f2 -d"=" | awk '$1=$1' ORS=' ')
for i in ${libb[@]};do (slackpkg file-search $i | grep slackware64 | cut -s -f1 -d"-"); done
# Install dependencies
sudo slackpkg install xxx yyy zzz
Last Words
Welcome to the Desert of the Real!
In fact, Ubuntu takes packages from Debian Unstable (Ubuntu LTS based on Debian Testing). You can confirm it from Ubuntu Packaging Guide by searching sid (Debian Unstable codename) or unstable ↩︎
While
command-not-found
is a Debian-like exclusive, ohmyzsh provides command-not-found plugin that works on other distros like Arch, SUSE, NixOS, Fedora & macOS (Homebrew) as well ↩︎You can learn more about this interesting dependency tracking method and Package and dependency management shouldn’t put you off Slackware on Slackware Docs ↩︎
This is Clear Linux OS backed by Intel. Not to be confused with Clear OS , which is a completely different CentOS/RHEL-based distro ↩︎
Of course this is something you shouldn’t worry about when distro-hopping, provided there are not many broken links. You don’t use the website (besides package tracker and wiki, if any) but the system. Debian website (before the revap) is ugly and uninformative as hell but it does not harm its stability. Slackware uses HTTP even today and it’s 100% fine with that old school design. ↩︎