A distro (distribution) is a set of choices of layers/parts/policies, all packaged together under one label.

Some major distros: Debian, Ubuntu, Kubuntu, Linux Mint, Red Hat, Fedora, Arch, openSUSE.

Debian Family Tree (!)
Which is just part of a bigger GNU/Linux Distributions Timeline (!!)

Wikipedia's "List of Linux distributions"

Distro major run-time layers:
  • Boot stuff (partition, manager, loader).

  • Kernel and drivers and modules.

  • Middleware: init system, daemons, event-handling, display subsystem, audio subsystem, printing subsystem, logging, fonts, etc.

  • Applications and commands: coreutils, util-linux, GUI and TUI and CLI apps, package management, desktop environment.

The "operating system" is the middle two layers.

Much of the middleware depends on CLI commands in the "apps and commands" layer.

Distro release policies:
[These blend together a bit, and terms may differ by distro.]
  • Rolling: constantly-updating, even across major transitions such as new release of DE. E.g. Arch; openSUSE Tumbleweed.

  • Periodic / Stable: won't automatically update across major releases of distro or DE. E.g entire Ubuntu family; Fedora; openSUSE Leap.

  • LTS: updates only for security holes or major bugs. E.g. Ubuntu family LTS versions.

Immutable OS: system files are read-only; OS base packages are updated and frozen and tested as a unit; apps may be in containers and can get updated frequently. E.g. Fedora Silverblue/Kinoite, openSUSE MicroOS, Vanilla OS.
Jorge Castro's "Awesome Immutable"

Terms applied to distros or DEs:
  • Stable: changes are infrequent.
  • Reliable: failures are infrequent.
  • Lightweight: low RAM use in idle state and/or GUI is low-latency.
First two qualities do not automatically map to "LTS" and "rolling".
An LTS release may get fairly frequent security updates.
A rolling release may be quite reliable and rarely fail.

Bobby Borisov's "Linux Distro Types Explained: Originals, Derivatives, Flavors"
Venam's "Software Distributions And Their Roles Today"

From Jesse Smith on Distrowatch:
s It's important to understand the flow of code from one place to another. Typically source code originates with an "upstream" project. Upstream projects are open source organizations such as KDE, GNOME, LibreOffice, Mozilla, and the Linux kernel. These organizations publish the source code for their applications, services, and desktop environments publicly and usually for free. Then distributions, such as Fedora, take the source code and package it. Distributions such as Fedora usually create two types of packages - source packages which contain the source code, images, and data files required to build the software; and binary packages which contain the executable programs and resources required to run the software.

In the case of the Fedora and Red Hat ecosystem, the source code passes from the upstream projects to Fedora and then to CentOS Stream. CentOS serves as a sort of slow-moving testing ground for the community and Red Hat. From there, the source code flows downstream to Red Hat Enterprise Linux where it is used to build binary packages which are provided to Red Hat's customers.

Brief Looks

Jason Evangelho's "How To Test Drive 200+ Linux Distributions Without Ever Downloading Or Installing Them" OnWorks

From someone on reddit 6/2020:
"openSUSE lets you try different DEs just by logging out. There's only one distro openSUSE and it comes with KDE, GNOME, Xfce, Enlightenment, Mate, LXDE, LXQt, and more."

If you just want a quick look at "tiling" in a DE, in GNOME you could try the gTile or zTile extensions, or Regolith/i3. In KDE you could use the Bismuth extension of Kwin.

(On Windows:) Making Live session USB:
Create a bootable USB with N different ISOs on it: Ventoy (Windows and Linux)
SK's "Create Persistent Bootable USB Using Ventoy In Linux"
The Ventoy USB can boot in either legacy or UEFI mode, but not Secure Boot.

(On Linux already:) Making Live session USB:
Create a bootable USB with N different ISOs on it: Ventoy
(attach USB stick, umount USB, sudo sh -i /dev/sdX, sync, remove USB, attach USB, copy ISO to USB, remove USB, boot from USB).
SK's "Create Persistent Bootable USB Using Ventoy In Linux"
The Ventoy USB can boot in either legacy or UEFI mode, but not Secure Boot.

Installed Usb-creator-gtk through Software Manager. Shows up as "USB Image Writer" in the Start menu.

"Startup Disk Creator" app does not support persistence. "Usb-creator-gtk" app is same as "Startup Disk Creator". "USB Image Writer" app works if writing a new ISO to a USB that already contains a bootable image, but no persistence.

I think Startup Disk Creator only accepts Ubuntu derivatives ?

Installed the "experimental CLI" version of Etcher. Ran "sudo ./etcher -d /dev/sdb1 ../debian-live-9.5.0-amd64-lxde.iso". But it says device not found. Read something about maybe using GParted to wipe out the partitions, but I'm not interested.

Installed UNetbootin, via "sudo add-apt-repository ppa:gezakovacs/ppa", "sudo apt update", "sudo apt install unetbootin". "sudo apt install extlinux". Ran "sudo QT_X11_NO_MITSHM=1 /usr/bin/unetbootin". But no matter what I do, my USB's device is not listed in the pull-down. The device is /dev/sdb1, but I either get blank or /dev/sdb2.

Run Disks application (or gnome-disk-utility ?). Select the flash drive, select the first (bootable) partition, click the "gear" icon, select "Restore Partition Image", select your ISO. Works. If the partition is too small for the image, you can delete the partition in Disks, or you might have to do it in GParted. [How to get persistence ?]

Burned Mint 19.1 to USB with persistence: Used 4 GB USB stick. GParted to create an MS-DOS partition table, then a 4 GB ext4 primary partition. Use UNetbootin, selected Mint 19.1 ISO that I had downloaded, set "space to preserve information across reboots" to 1024 MB.

Later started using Ventoy, it's the best for installing or (non-persistent) live booting.

Pradeep Kumar's "How to Create Bootable USB Disk / DVD on Ubuntu / Linux Mint"
UNetbootin (supports persistence)
Etcher (no persistence ?)
Ubuntu Wiki's "LiveUsbPendrivePersistent"


Factors in choosing a distro:
  • Amount of support / popularity / community.
  • Performance / UI speed.
  • Look / UI beauty.
  • Stability.
  • Appropriate for your skill level and intended use.
  • Appropriate for your hardware (test via "live session" before installing).
  • Customizability.
  • Latest software.
  • Learning experience.
  • Security and privacy.

RenewablePCs' "Which Linux distros are the best?"
It's FOSS's "Explained: Which Ubuntu Version Should I Use?"
Adarsh Verma's "Top 10 Best Linux Distros For 2018 - Ultimate Distro Choosing Guide"
Liam Proven's "Cynic's guide to desktop Linux"
Adarsh Verma's "9 Most Beautiful Linux Distros You Need To Use"
RenewablePCs' "Desktop Environments for Linux"
Artem S. Tashkinov's "Guide on How to Choose a Linux Distribution Properly"
Distro Chooser

Jason Evangelho's "Linux For Beginners: Understanding The Many Versions Of Ubuntu"
Canonical's "Ubuntu flavours"
Canonical's "Derivatives"
Ubuntu forums
Linux Mint Forums

Sense I'm getting from various places: Upgrading Ubuntu from one major release to another often breaks something; better to do a fresh install. But Mint doesn't have that problem, upgrades are smooth.

"Choosing A Distro" section of my "Moving to Linux" page


You will find various people hating on various distros, for reasons good or bad:

[There's hate on other things too (not distros): systemd, Canonical, GNOME, Electron, NVIDIA, Microsoft, Adobe, WSL, Snap, more.]

My Impressions and Experiences

My quick impressions of other distros, from USB stick or articles:
  • Linux Mint 19 Tara MATE: looks pretty much like Cinnamon does. Did same with the Xfce version, same result. There are some small changes in the Start menu and System Tray and such, but no big obvious differences.
  • Peppermint: Uses Nemo, is based on Ubuntu LTS. GUI looks "rougher" than Mint's GUI, and a little cartoony, but it seems faster, and I like it.
  • Xubuntu 18.10, and I like it, crisp and seems fast.
  • Lubuntu, but didn't like it so much, not as much as Xubuntu.
  • Puppy Xenial: Cute, but UI a little odd, not in the Windows and Mint mold. Distro is some kind of hybrid of Ubuntu and Slackware. article
  • Debian LXDE. Acceptable. A lot of apps installed that I don't want. Boot and shutdown show a lot of text going by.
  • Ubuntu: UI not particularly fast and not exciting.
  • Fedora GNOME: UI a little clunky-looking, not particularly fast and not exciting.
    If you want the very latest (and most vanilla) GNOME, you will find it on Fedora. Also tends to push the edge in other ways: e.g. Wayland, Btrfs, etc. article
  • Kubuntu 18.10: crisp; default text editor (Kate) is nice, polished.
  • KDE neon Plasma: ??? A rolling/developer distro.
    From people on reddit 5/2020:
    KDE neon is based on Ubuntu LTS and very similar to Kubuntu. The main difference is it gets KDE packages from KDE themselves. KDE will always be the latest and greatest.


    I prefer Kubuntu. I've installed KDE Neon twice but after 3-6 months dropped it for something else. Kept finding loads of random things stop working, like Wi-Fi would need me to disconnect and reconnect all the time, and X11 kept crashing. Unless you want to be on the bleeding edge of KDE, another distro might be best.
    KDE Neon is latest KDE on older kernel; Kubuntu is older KDE on newer but stable system.
  • openSUSE LXQt: couldn't get into a live session, ISO keeps booting into an installer no matter what I do.
  • I hear that Elementary OS is kind of locked-down, deliberately: it's hard to add packages.
  • I hear good things about Manjaro; I should try it. Fairly bleeding-edge; easier than Arch but less stable than Ubuntu. reddit thread

See My "Linux Distros I've Installed" page

[Some people say: keep / and /home on separate partitions, so you can change OS without changing /home. I do differently: one / partition for everything, but back up settings for some key big apps: browsers, email, RSS feed reader, password manager, IDE. When I do a fresh install, I fresh-install the apps, then overwrite their configs with my saved config files.]

[Note: Just before wiping the system is a good time to try some risky new thing you're curious about (e.g. SELinux, resizing a partition, in-place encryption/decryption, new bootloader, reverting system back to some filesystem snapshot, filesystem rebalancing, damage filesystem and then try using a rescue disk, update firmware). If it borks the system, no problem (except for the firmware case): you were about to wipe anyway.]

My quick summaries:
Note: I use the stock UI, with little customization. And I value stability and functionality far more than UI.
  • Mint Cinnamon 19: nice UI; sometimes bad handling of bug-reports.
  • Ubuntu GNOME 20.04: broken desktop; UI a bit clunky.
  • Ubuntu MATE 20.04: good.
  • Kubuntu 20.10: okay, but Dolphin file-manager bad with smartphone, and there's a system-freeze bug.
  • Fedora 34 KDE: good, but had to switch from Wayland to X. Updates are daily and large and often force two OS restarts to apply ("systemd.offline-updates"). Some small glitches, such as dialogs not painting until I mouse over them, occasional crashes of something in the system. Crash-reporting seems not to work.
  • Manjaro 21 Xfce stable: mediocre, build from AUR usually failed, fair number of other glitches.
  • EndeavourOS 2021.12 LXQt: okay, build from AUR worked, fair number of glitches.
  • openSUSE Tumbleweed KDE: mediocre, some package breakage, some mysterious crashes.
  • Pop!_OS: okay.
  • Solus Budgie: okay.
  • Elementary OS: bad in several ways, IMO.
  • UbuntuDDE: okay.
  • Nitrux: bad desktop UI, IMO.
  • MX Linux Xfce: okay.

Don't customize a lot or fork:
I use the stock UI of each distro, with little customization. And I value stability and functionality far more than UI. I don't load up with unusual CLI commands, or aliases, etc. So moving to another distro is easy, filing bug reports or talking to other users is easy.

I use several large mostly-cross-platform apps, which work equally well on any distro: KeePassXC, Firefox, Thunderbird, Visual Code, Liferea. So moving to another distro or even sometimes using Windows or Android is pretty easy. The downside is these apps usually don't obey the system theme settings.

I find that I can get my stuff done in any GUI or desktop environment; changing from one to another doesn't matter much. Partly that's due to the "large apps" strategy I mentioned above; something such as Firefox is pretty much the same in any GUI.

If something is broken or can be improved, try to get it improved for everyone, not just for you. File a bug report or code fix, or write a little extension and submit it to the extension store/marketplace.
Tobias Bernard's "Doing Things That Scale"

Do you want to use distro-specific apps ?:
The major apps I use are cross-distro: Firefox, KeePassXC, Thunderbird, VS Code, Akregator.

I don't want to use some DE-specific set of apps (such as KDE's Akonadi) and get locked in to one distro or DE.

Some smaller individual apps may be available on many distros. For example, I like the Pix simple-image-editor which comes from Linux Mint. It's available on many distros.

Distros with many installation steps or building from source:
Reading while laptop burns

[Probably best to install each of these in a VM, at least the first time.]

Probably a good order:

  1. Slackware (have to do some Xorg configuration).


    From people on reddit:
    "I do think slackpkg+ is an essential plugin for slackpkg. The addition of 3rd party repositories and a multilib setup script are super useful." and
    "Kernel updates are different too. The initrd and bootloader need to be updated manually. It seems to be a thing that new users forget about. So if you plan on trying out Slackware, make sure to do that." and
    "SlackBuilds project is basically Slackware's version of the AUR."

  2. Void (have to do some Xorg configuration, have to install audio mixers ?).

    Bobby Borisov's "How to Install Void Linux"
    DistroTube's "Exploring Void Linux" (video)
    Jesse Smith's "Void 20221001"
    "sudo xbps-install pipewire"
    "sudo xbps-install alsa-utils"

  3. Arch with TUI installer.

    Not really much to do after running installer.
    Peter Nguyen's "Arch Linux's archinstall - A step by step guide"
    Writwik Ray's "Installing Arch Linux Using the Archinstall Script"
    If you want X instead of Wayland, select that in display manager (or install of it ?).
    Have to add yourself to "wheel" group, and then enable "wheel" group, to make sudo work.
    "still leaves you having to get things such as network and bluetooth working"

  4. Arch without installer. Jesse Smith review.

  5. Maybe a good time to use Arch to: Make your own DE.

  6. ArcoLinux (site won't load if using VPN).

    Erik Dubois' YouTube channel

  7. ArcoLinuxB (site won't load if using VPN).

  8. NuTyX.

  9. Gentoo.

    Gentoo Linux amd64 Handbook: Installing Gentoo

    Combination of comments on reddit:
    Boot into a live session (not Gentoo live USB, it is old; use Ubuntu or similar), open the handbook in a browser, and just follow through the directions. READ the directions, don't just click next and copy and paste commands into the terminal. Use genkernel or even a bin kernel, you will have plenty of time later to make a personalized config. As long as you have a bootable system any mistakes or misconfigurations can be fixed later, no biggie.

    You do not have to do everything at once. Get things working and solve one problem at a time. Over the next N months you can slowly dial the system to the way you want it to work.

    If you think packages you need are not available for Gentoo, check the guru or other overlays first.

  10. LFS (Linux From Scratch)

    0xC0DECAFE's "Linux from Scratch - Is it worth it?"
    The Sloth Blog's "I built Linux from scratch"
    comfies / tldrlfs

    "What you have at the end is not a functioning system, merely one you can boot and shut down. To get a functional system, you need to add a lot of stuff out of Beyond Linux from Scratch."

    From someone on reddit:
    Just FYI ... as someone who has gone through Linux from Scratch ...

    Certainly you will learn some things about Linux by doing this. But honestly ... LFS is essentially a lot of very repetitive compiling -- you go through the compilation of all the basic tools for setting up a Linux system. But there's very little explanation about how things work, how all the pieces fit together, etc., and the final product is a bare-bones, minimal Linux install. Obviously, you can add more to it if you wish (and there is some guidance on the web site for that), but in general I think the best thing that LFS teaches is just sort of ... how programs are compiled from source code.

    I learned a lot more about how the pieces of Linux fit together (the init system, networking, package management, desktop environments, etc.) by installing Arch Linux. (Gentoo would work as well, but is a longer process given the compile time.) You're not "building it from scratch", but most of the interaction people have with a working Linux system is on the level of those building blocks, rather than "how do I ensure that this program in /bin is properly linked with the correct gcc compile tool". I found it much more useful to find out things like, "how does networking work in Linux? what's the difference between ALSA and PulseAudio?"

    And if you're really interested in how software is compiled, of course, you are certainly free to compile things within an already-working Linux distro! Installing something manually from the Arch User Repository could be a useful intro into this concept.

    I'm certainly not trying to dissuade you from going through Linux from Scratch. It's well-written, and there's certainly something cool to building your own Linux system entirely from the ground up. I'm just trying to offer my perspective, as someone who went through it myself for the purpose of learning about how Linux worked, and realized I didn't actually learn much at the end of it.

  11. LFS plus BLFS (Beyond Linux From Scratch)

Petros Koutoupis' "DIY: Build a Custom Minimal Linux Distribution from Source"

I like this typo: sometimes people mean "distro-hopping" but mis-type it as "distro-hoping".


What are you running ?
"cat /etc/os-release"
"env | grep XDG"

Security-oriented distros

These are designed to keep you secure.
  • Tails (The Amnesic Incognito Live System):

    A clean-boot OS, although you can have some persistent storage for your files.
    Main features: leaving no traces on your machine, using Tor/onion for everything, and additional security/privacy/anonymity settings.
    Intended to be booted from USB (needs 8+ GB USB drive), and not installed on your hard disk.
    Not intended as a daily-driver OS; it's for communications and some document-processing.
    Routes all network traffic through Tor/onion.
    Drops all UDP traffic; can't do it.
    Doesn't support IPv6.

    Wikipedia's "Tails"
    Whonix's "Anonymity Operating System Comparison"

  • Kodachi:

    Boot from USB stick or DVD (but you also could install on hard drive: ). All network traffic goes through VPN and onion network.
    Kodachi The Secure OS
    Cheapskate's Guide's "A Brief Review of Kodachi Linux"

    From someone on reddit 4/2023:
    "Tails routes all DNS through TOR; Kodachi uses third-party apps."
    "Kodachi logs 'the hardware ID (hash) and connected IP address' (from Kodachi's digi77 page)"

  • PureOS:


  • Whonix:

    See Whonix

  • Subgraph OS:

    Routes all network traffic through Tor/onion.
    Subgraph OS

  • Qubes OS:

    Separates your apps from each other, putting each in a separate VM.
    Qubes section of my VMs and Containers page

  • Kicksecure:

    Scripts and wrappers on top of Debian.
    Trafotin video

Distros to test or attack other systems: Pentesting / hacking distros and tool bundles

Some people who review a lot of distros, giving very opinionated takes on them: Dedoimedo, Homo Ludditus.

A pet peeve: People who install a distro (maybe even in a VM), use it for 10 minutes, and give a glowing review of it. "Looks cool ! Everything seems fresh ! It's all new and impressive to me !" Well, you need to use it daily for a month to find the rough edges (maybe printing doesn't work, or there are crashes, or some apps won't work, or something).

Another pet peeve: People who focus on how much/little RAM a distro uses at idle. First, RAM is there to be used. As long as system performance is okay, don't worry about RAM usage. Second, you're going to launch 3 GB worth of apps. Who cares if the kernel + DE takes 100 MB more or less than another configuration ?

How Ubuntu MATE distro is made

Paraphrased from Martin Wimpress on Linux Downtime podcast episode 45.
  • There is a legal entity to handle tips/donations. One person handles the accounting etc for that. Other people do bug-triage, docs, web site, more. Docs and web-site are among the bigger efforts. Martin does some bug-fixing; maybe much of that is done directly into the upstreams.

  • Martin is a Debian developer and was a Canonical employee for many years, and was head of the Desktop group in Canonical for a while.

  • There is a package mate-desktop-environment and another dozen or more related packages in the Debian repos.

  • There is a package mate-desktop-environment in the Ubuntu repos.

  • The Canonical/Ubuntu build, source-control, and bug-tracking systems are used.

  • MATE maybe is the only Ubuntu flavor that included the chance for users to enable usage-reporting. Estimates are that about 150K people use MATE, more people use MATE than use any other flavor, and the user base of MATE is a "rounding error" compared to the user base of default Ubuntu GNOME.


Jesse Smith's "BSD versus Linux distribution development"
DamnSmallBSD's "BSD family of UNIX operating systems : compiled list"
vermaden's "Quare FreeBSD?"
vermaden's "AMD Based FreeBSD Desktop"
Klara's "Debunking Common Myths About FreeBSD"
Matthew D. Fuller's "BSD vs Linux"
Unix Sheikh's "The main differences between OpenBSD, FreeBSD, NetBSD and DragonFly BSD"
Cheapskate's Guide's "First Impressions of GhostBSD"
Switched to Linux's "A BSD Ignoramus Blindly Looks at GhostBSD" (video)
OpenBSD Handbook's "Quickstart Guide"
Jesse Smith's "OpenBSD 7.2"
Ruben Schade's "It's worth running a FreeBSD or NetBSD desktop"
Marian Mizik's "Is OpenBSD for you?"
Marian Mizik's "OpenBSD review by Gentoo Linux user"
OpenBSD Ports (available software)

From 2.5 Admins podcast: If you want a full GUI DE, use GhostBSD.

From someone on reddit:
Support for newer hardware comes to Linux sooner due to companies contributing the support directly via paid employees. The BSDs do get the same support, but it's usually done by volunteer developers in their free time. The gap between hardware support is not nearly as big as some people might lead you to believe, but there is a delay.

Not all the software you might want to use has been ported over, but a lot of it has. All the usual desktops, browsers, video players, editors and so on are on BSD and work exactly the same. If you need docker, for example, there are sometimes comparable alternatives ... but not actual docker itself. [No Kubernetes either. No KVM virtualization.] If you need closed-source software like Steam, that would be another problem. Most things that most people use on Linux have been ported to BSD. It just depends on your individual use case.

One area that's not so obvious is all the CPU vulnerabilities. On Linux, these are fixed basically the same day they're discovered. Companies have these embargoes and their paid developers get the fixes into Linux right away. With BSD, not so much. In fact none of the BSDs have fixes for the Spectre-BHB flaw yet [5/2022]. This is really unfortunate and I wish companies like Intel and ARM would work with them to get these awful security bugs (that are entirely THEIR fault, not the operating system's) patched in a timely manner.


FreeBSD is not binary-compatible with Linux, but it has a Linux "emulation layer" that allows some Linux binaries to run on it. Much like WINE and Windows binaries, things are kinda hit or miss with regard to functionality. But it will work for some things.

From someone on reddit:
I run FreeBSD on my workstation with a full DE and development tools. It works great.

I run Linux on my laptop because I need something that Just Works and don't want to fiddle with manual Wi-Fi configuration for every location I travel. In addition, Linux power management is generally better (yet still worse than Windows, generally, which is my biggest complaint) and my laptop manufacturer supports some custom hardware features natively on Linux. Plus I use it for some minimal gaming.

From someone on reddit 3/2023, about FreeBSD:
I had a lot of difficulty with setting up CUPS, compiling software, and using Linuxulator. It was also tricky to set up Wi-Fi (as I have WPA at home and an open network at school), and VPNs (which are important). I also found that it required too much more effort than Linux to get my laptop to do virtually anything.

On top of that, many packages and ports were outdated (such as Lagrange) or non-existent (such as Vieb).

Flatpak is not supported, though AppImages can sometimes be made to run with a bit of jiggery-pokery.

BSD does not use systemd; rather, it uses its own RC system. I don't believe there are any plans to support systemd.

After installing FreeBSD, you will not have a GUI. Have to install a desktop environment and start X Windowing if you want that.
Liam on Linux's "A fresh look at FreeBSD"
Unixcop's "How to install XFCE in FreeBSD 13"

If OpenBSD audio not working, maybe create /etc/mixerctl.conf, put in "outputs.master=255,255", and reboot.

"Someone once recommended to me that to learn networking I would get a lot more out of starting with BSD because of how much simpler it is than all the weird configs and tools Linux networking has accumulated."

"... FreeBSD and OpenBSD aren't different distributions of BSD ... They're each distinct operating systems with their own kernels and sets of pros and cons, ..."

BSD guys like to say "there are no distros in BSD". But arguably primeval BSD, NetBSD, FreeBSD, OpenBSD are distros, and then FreeBSD has derivatives such as MidnightBSD, DragonFly BSD, GhostBSD.

Things I use that are not supported on BSD: VSCodium, Btrfs, Flatpak.
Things I don't depend on that are not supported: snap, systemd, NetworkManager.

Distros with "declarative" management:
Declarative Managers

Distros with unusual kinds of package management:
blendOS (Arch-based; article)

At a gravesite, saying I use Arch BTW