Kernel, distributions and the shell

Linux · Essentials · 7 min

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: apt and .deb packages, popular on servers and in cloud images,
  • Fedora / RHEL / Rocky / Alma: dnf and .rpm packages, 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 / available

Remember

  • 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.

Check yourself

  1. What does the Linux kernel itself provide?
  2. Which file tells you the distribution and its version?

Sign in to answer, see the explanations, and get this lesson back as a quick review later.

Official docs: docs.kernel.org/admin-guide/README.html