Kernel vs. Distribution
The kernel is shared across almost all Linux systems; a distribution is the specific bundle of kernel, package manager, init system, and defaults that turns it into something installable.
Every mainstream distribution - Ubuntu, Debian, Fedora, Arch, openSUSE - ships essentially the same upstream kernel, patched and versioned differently. What actually differs between them is everything built around it. Understanding that split makes it much easier to reason about why two "Linux machines" can feel like entirely different operating systems.
What the kernel contributes
- Hardware support and drivers
- Process and memory management
- The system call interface every program relies on
- Core subsystems like networking, filesystems, and security modules (SELinux, AppArmor)
Distributions mostly don't rewrite this layer; they select a kernel version, apply a patch set (sometimes substantial, as with Ubuntu's HWE kernels or RHEL's long-term backports), and configure which drivers and features are compiled in.
What a distribution adds
| Layer | Example choices |
|---|---|
| Package manager | APT (Debian/Ubuntu), DNF (Fedora/RHEL), pacman (Arch) |
| Init system | systemd (most), OpenRC (Alpine, Gentoo option) |
| Default shell | Bash (most), Zsh (recent macOS, some distros) |
| Release model | Fixed releases (Ubuntu, Debian) vs. rolling (Arch) |
| Philosophy | Stability-first (Debian), latest-packages (Arch), enterprise support (RHEL) |
See Package Management and systemd and Services for more on the first two rows.
Why this distinction matters practically
- Troubleshooting: a kernel bug (e.g. a driver issue) will show up across distributions; a package or configuration bug is usually distro-specific.
- Following instructions online: a command that works on Ubuntu
(
apt install nginx) has a direct equivalent on Fedora (dnf install nginx) but isn't the same command - the underlying software is often identical. - Choosing a distribution: you're mostly choosing a package manager, release cadence, and support model, not a fundamentally different operating system. Check what kernel and distro you're actually running before assuming either:
uname -r # kernel version
cat /etc/os-release # distribution name and version
6.8.0-45-generic
PRETTY_NAME="Ubuntu 24.04.1 LTS"
/etc/os-release is the standardized, machine-readable way to identify a
distribution - prefer it over parsing /etc/issue or distro-specific files,
which aren't guaranteed to exist everywhere.