Knowing which layer you are dealing with tells you where to look for docs, logs and fixes.
Strictly speaking, Linux is a kernel: the core program that manages CPU scheduling, memory, devices, filesystems and networking, and that every other program asks for services through system calls. What people call "a Linux system" is the kernel plus a userland: the GNU core utilities (ls, cp, grep), a C library, a shell such as bash, an init system (almost always systemd today) and thousands of other programs.
A distribution bundles all of that with a package manager, default configuration and a release policy. The big families:
- Debian / Ubuntu:
aptand.debpackages, popular on servers and in cloud images, - Fedora / RHEL / Rocky / Alma:
dnfand.rpmpackages, common in enterprises, - Arch, Alpine (tiny, musl libc, popular for containers), SUSE and others.
The commands in this curriculum work across distributions; package names, some paths and the default firewall differ. /etc/os-release tells you which distribution you are on and uname -r which kernel.
You interact with a Linux server mainly through a shell over SSH: there is usually no desktop. Everything is text, configuration lives in files under /etc, and almost every task can be scripted, which is exactly why Linux dominates servers and the cloud.
Example
uname -sr # Linux 6.12.0-... (kernel name and release)
head -n 2 /etc/os-release # PRETTY_NAME="Ubuntu 24.04.5 LTS" / NAME="Ubuntu"
hostnamectl # host name, OS, kernel, architecture (systemd)
uptime # up 3 days, 2 users, load average: 0.15, 0.10, 0.05
whoami # ada
echo "$SHELL" # /bin/bash
nproc # 4 (CPU cores)
free -h | head -n 2 # memory total / used / availableRemember
- Linux is the kernel; a distribution adds userland, packages and defaults
- Debian/Ubuntu use apt, Fedora/RHEL use dnf
- /etc/os-release and uname -r identify the system
Watch out for
- Searching for help without saying which distribution you run; package names and paths differ.