Linux Tutorial / What Is Linux? Understanding the Kernel, Distributions, and Open Source

Strictly speaking, Linux is a kernel: the part of an operating system that manages resources between hardware and programs. What people install as a “Linux operating system” is usually a distribution that combines the kernel with commands, libraries, and tools for installing and updating software. This distinction explains why Ubuntu and Rocky Linux are both Linux-based systems but do not work in exactly the same way.

Is Linux a kernel or an operating system?

Both expressions are used, but they refer to different scopes. The Linux kernel is the core program of an operating system. In everyday conversation, a Linux operating system usually means the complete, usable system built around that kernel. Accordingly, “updating the Linux kernel” and “installing Linux” do not describe the same task.

The kernel allocates CPU time and memory to running programs and handles filesystems, networking, and hardware through device drivers. Programs use interfaces provided by the kernel rather than controlling storage devices directly. The official Linux kernel documentation likewise distinguishes the kernel from the interfaces used by programs outside it.

Commands that copy files, web browsers, web servers, and graphical desktops are not parts of the kernel itself. They run in user space and call on kernel functions when needed. Many Linux distributions include tools from the GNU Project, but not every user-space program comes from GNU. The GNU Project's explanation of GNU and Linux discusses this relationship in more detail.

What are the main parts of a Linux system?

For a first mental model, it helps to think of three layers. This is a simplification: a real system also has a boot process and many components in between.

  1. Hardware: the physical CPU, memory, storage, network devices, and other components.
  2. Linux kernel: the software that manages hardware resources and provides common facilities to programs.
  3. User space: the area where shells, commands, system services, libraries, graphical environments, and applications run.

For example, when you run a command in a terminal to read a file, the command runs in user space while the operation of opening the file goes through the kernel. Systems with the same kernel can look very different depending on which user-space software they include, such as server tools or a desktop environment.

What does a distribution add?

A Linux distribution selects and combines the Linux kernel with other software, then provides a way to install, configure, and update the resulting operating system. Distributions typically include a package manager and software repositories, basic system services, a security-update policy, and documentation. The Debian Project's introduction also describes a distribution as a complete operating system rather than just a kernel.

Ubuntu and Rocky Linux, for example, both use the Linux kernel, but their package formats, software-management tools, default configurations, and support policies differ. When following instructions, it is useful to ask whether a step concerns the Linux kernel, a tool common to many distributions, or a method specific to one distribution. Choosing a distribution belongs to lesson 02; for now, the key point is that sharing a kernel does not make two complete systems identical.

What does open source mean?

Open source means more than being able to view source code. Under the applicable license, people must be allowed to use, modify, and redistribute the software. The Open Source Initiative's Open Source Definition includes conditions covering source-code availability, redistribution, and derived works.

Open source is also different from “available at no cost.” Software can be free to download without granting permission to modify or redistribute it. Conversely, open-source software may be sold, and a company may charge for support. Components of a distribution do not necessarily all use the same license or all qualify as open source, so check the relevant license before relying on particular rights to use, change, or distribute a program.

What can you check on your own system?

If you have access to a Linux computer or virtual machine, this command shows the running kernel release:

uname -r

The distribution name and version are usually available in this file:

cat /etc/os-release

In the output, PRETTY_NAME is a human-readable distribution name, while ID and VERSION_ID identify the distribution and its version. The result of uname -r and the distribution version describe different things, so their numbers do not need to match. Some minimal or specialized systems may not have /etc/os-release, or may display different details.

Key ideas to remember

  • Kernel: the core of the operating system that manages hardware resources and provides common facilities to programs.
  • User space: where shells, commands, services, and applications run.
  • Distribution: a complete system that packages the Linux kernel with other software and tools for installation and management.
  • Open source: software whose license permits use, modification, and redistribution under its conditions.

For the story of how Linux began and evolved, see A History of Linux: From a 1991 Hobby Project to Global Infrastructure. This lesson instead focuses on the components and terminology of a present-day Linux system.

More in This Category
Linux umount Command: Unmount a Filesystem Safely

Linux umount Command: Unmount a Filesystem Safely

Learn how to unmount a Filesystem Safely with the Linux umount command, including practical examples, key options, and important precautions.

Linux which Command: Find Executables in PATH

Linux which Command: Find Executables in PATH

Learn how Linux which searches PATH for executables, shows all matching paths, differs from type and command -v, and should be used carefully in scripts.

Linux uptime Command: Check Uptime and Load Averages

Linux uptime Command: Check Uptime and Load Averages

Learn how to use the Linux uptime command to check how long the system has been running and interpret load averages, with essential options, practical examples, output interpretation, and common troubleshooting tips.

Linux diff Command: Compare Text Files and Directories

Linux diff Command: Compare Text Files and Directories

Learn how Linux diff compares text files and directories, produces unified patches, ignores selected whitespace changes, and reports differences through exit status.

Linux bg Command: Resume a Shell Job in the Background

Linux bg Command: Resume a Shell Job in the Background

Learn how to resume a Shell Job in the Background with the Linux bg command, including practical examples, key options, and important precautions.

Linux sftp Command: Transfer Files Securely over SSH

Linux sftp Command: Transfer Files Securely over SSH

Learn how to use the Linux sftp command to transfer and manage files securely through an SSH connection, with essential options, practical examples, output interpretation, and common troubleshooting tips.

Linux blkid Command: Find Block-Device UUIDs and Filesystem Types

Linux blkid Command: Find Block-Device UUIDs and Filesystem Types

Learn how to find Block-Device UUIDs and Filesystem Types with the Linux blkid command, including practical examples, key options, and important precautions.

Linux scp Command: Copy Files over SSH

Linux scp Command: Copy Files over SSH

Learn how to copy Files over SSH with the Linux scp command, including practical examples, key options, and important precautions.

Linux tr Command: Translate and Delete Characters

Linux tr Command: Translate and Delete Characters

Learn how to translate and Delete Characters with the Linux tr command, including practical examples, key options, and important precautions.

Linux bunzip2 Command: Decompress bzip2 Files

Linux bunzip2 Command: Decompress bzip2 Files

Learn how to decompress bzip2 Files with the Linux bunzip2 command, including practical examples, key options, and important precautions.