The Linux kernel is just the core — it manages hardware, memory, and processes. A distribution (distro) bundles the kernel together with:
systemd)bash, …)There are 600+ active distros. Most trace back to one of three major families.
The oldest community-driven family. Known for stability and the .deb package format.
Debian
├── Ubuntu # Most popular desktop/server distro
│ ├── Linux Mint # Beginner-friendly, Windows-like UI
│ ├── Pop!_OS # Developer & gaming focus (System76)
│ ├── elementary OS # macOS-inspired design
│ └── Kubuntu / Xubuntu / Lubuntu # Ubuntu + different DEs
├── Kali Linux # Penetration testing & security
├── Raspberry Pi OS # Optimised for Raspberry Pi hardware
└── MX Linux # Lightweight, stable, highly rated
Package manager: apt / dpkg
Package format: .deb
Enterprise-focused family. Favours stability over cutting-edge packages.
Red Hat
├── RHEL (Red Hat Enterprise Linux) # Paid, enterprise support
│ ├── CentOS Stream # Upstream preview of RHEL
│ ├── AlmaLinux # Free RHEL binary-compatible rebuild
│ └── Rocky Linux # Free RHEL binary-compatible rebuild
└── Fedora # Community distro, leads RHEL features
└── (feeds into RHEL every ~2 years)
Package manager: dnf / rpm
Package format: .rpm
Rolling-release family. Always the latest packages; users build their system from scratch.
Arch
├── Arch Linux # Minimal, DIY, bleeding-edge
├── Manjaro # Arch with a user-friendly installer
├── EndeavourOS # Arch with guided setup
└── Garuda Linux # Gaming & performance-tuned
Package manager: pacman
Package format: .pkg.tar.zst
Extra: AUR (Arch User Repository) — community-built packages
| Distro | Family | Notable for | |--------|--------|-------------| | openSUSE | independent (RPM) | YaST config tool, rolling (Tumbleweed) + stable (Leap) | | Gentoo | independent | Source-based, compile everything, maximum control | | NixOS | independent | Declarative, reproducible system config | | Alpine Linux | independent | Tiny (~5 MB), musl libc, popular in Docker containers | | Void Linux | independent | runit init, rolling, no systemd |
Versions ship on a schedule (e.g. every 6 months or 2 years). Packages are frozen at release and only receive security patches.
No versions — packages update continuously as upstream releases them.
A fixed release with an extended support window (typically 5–10 years). Ideal for servers.
| Distro family | Tool | Install | Remove | Update all |
|---------------|------|---------|--------|------------|
| Debian/Ubuntu | apt | apt install <pkg> | apt remove <pkg> | apt upgrade |
| Red Hat/Fedora | dnf | dnf install <pkg> | dnf remove <pkg> | dnf upgrade |
| Arch | pacman | pacman -S <pkg> | pacman -R <pkg> | pacman -Syu |
| openSUSE | zypper | zypper install <pkg> | zypper remove <pkg> | zypper update |
These work across distros:
| Format | Tool | Notes |
|--------|------|-------|
| Snap | snap | Canonical, sandboxed, auto-updates |
| Flatpak | flatpak | Community, sandboxed, widely supported |
| AppImage | (run directly) | Single portable binary, no install needed |
The init system is PID 1 — the first process the kernel starts. It brings up everything else.
| Init | Used by | Notes |
|------|---------|-------|
| systemd | Most modern distros | Units, journald, socket activation |
| SysVinit | Older Debian/RHEL | Shell scripts, runlevels |
| OpenRC | Gentoo, Alpine | Lightweight, dependency-based |
| runit | Void Linux | Minimal, fast boot |
# systemd — common commands
systemctl status nginx
systemctl start nginx
systemctl enable nginx # start on boot
journalctl -u nginx -f # follow logs for a unit
All distros run the Linux kernel but ship different versions:
uname -r # print running kernel version
# Example outputs:
# 6.8.0-51-generic ← Ubuntu (stable, patched)
# 6.14.2-arch1-1 ← Arch (latest upstream)
# 5.14.0-503.el9.x86_64 ← RHEL 9 (enterprise LTS)
| Use case | Recommended | |----------|-------------| | First time on Linux | Ubuntu, Linux Mint | | Development workstation | Ubuntu, Fedora, Pop!_OS | | Production server | Ubuntu LTS, RHEL/AlmaLinux, Debian | | Security / pentesting | Kali Linux | | Containers / Docker images | Alpine Linux, Debian Slim | | Maximum control | Arch Linux, Gentoo | | Privacy-focused desktop | Fedora, Debian |
# Identify your distro
cat /etc/os-release
lsb_release -a # on Debian-based systems
# Check kernel version
uname -r
# Check architecture
uname -m # x86_64, aarch64, …
← Back to linux