Skip to main content

What is Linux?

When talking about "Linux", we are not talking explicitly about one operating system.  This is because the Linux ecosystem is the collective effort of numerous open-source development communities.  These collectives create modular components that conglomerate into systems. 

These systems revolve around the Linux kernel, which has complete control over all hardware and software.  The System Call Interface allows user applications to request access to system hardware through the operating system.

The kernel is packaged alongside software created by other open-source developers into a 'distro' – or a distribution. Entire Linux branches can derive from other distros by mixing and matching components to create a family treeDebian is root of Ubuntu which is used in turn for Raspberry Pi OS, ElementaryOS, Linux Mint and many others.

1000006866.png 1000006873.png 1000006869.png

Software freedom and equitable access are central tenets of many Linux distributions.  Many open-source projects utilize a "copyleft" or "permissive" licenses that allow modification and redistribution of the software. Decentralized development – with developers located around the world – is fostered by the open-source ethos of knowledge sharing and peer participation. 

Much of our modern world is powered through open-source software projects.  Linux is an example of the immense scale of open-source projects while openssl – which provides secure encryption to over two-thirds of the internet – illustrates their dire importance.


Components 

The Linux operating system comes with several core components. These parts works together to get the hardware initialized so that software can be loaded on it and made available for users.

Bootloader

When a computer is first turned on, the bootloader pulls the kernel into active memory and activates the first stages of the operating system.  GRUB (or the GNU GRand Unified Boot) is perhaps the most common bootloader for Unix-like operating systems.

Kernel

The kernel is always loaded into memory, facilitating communication between components like your processor, graphics card, and storage drives with your operating system.  The kernel uses device drivers installed on the operating system to control hardware inside the computer. 

While the Linux kernel is perhaps the most well-known open-source kernel, it is far from the only option. Notable examples being FreeBSD, OpenBSD and NetBSD.  Microsoft Windows and MacOS also use their own kernel.

Init

Once GRUB has loaded the kernel, the first program started by the operating system is called an init – or initialization – service.  This integral service is the root of all other processes operating on the computer.  This is the first program that operates within the 'user space' – or any running software that exists outside of the kernel.  For many Linux distributions, systemd has become standard.

image.png

It is responsible for managing operating system services and, especially important, orchestrating their start up in the correct order.  For example, ensuring that your network-dependent services only start after an internet connection is established.

Shell

As part of the init program, the system loads the Shell – or the user interface. This is the interactive element of the operating system that evokes what we commonly consider as the "operating system".   It is named the "shell" because it is outermost layer surrounding the operating system.  The shell can be a command line interface or a graphical user interface. 

Command Line

Command line interfaces first emerged in the 1960s as the primary means of interacting with a computer.  They were created as an interactive alternative to punch-card systems

image.png

They offer powerful direct access to computer hardware and software.  Command-line interpreters use a specific syntax and there are many available, such as Bash used by Debian. You accomplish this using programs and utilities that accept text-based input through the terminal.  Command-line interfaces make it easy to complete procedural tasks by creating shell scripts to automate events based on user input.

Graphical User Interface

Graphical user interfaces offer a visual desktop environment that allows you to interact with the operating system and running applications.  These interfaces require a display to view the "desktop" as well as a mouse and keyboard to accept user input.  GUIs often come with a terminal emulator pre-installed, providing direct access to the command-line.

VirtualBox_Debian - GNOME_02_04_2025_12_03_25.png

Debian uses GNOME by default, but other common options include:

VirtualBox_Plasma_02_04_2025_13_01_16.png

KDE Plasma

 

VirtualBox_Xfce_02_04_2025_13_56_51.png

Xfce

 

VirtualBox_LXDE_02_04_2025_12_31_42.png

LXDE

 

VirtualBox_LXQt_02_04_2025_14_29_44.png

LXQt

VirtualBox_MATE_02_04_2025_14_52_59.png

MATE

VirtualBox_Cinnamon_02_04_2025_15_39_08.png

Cinnamon

The Desktop Environment is largely a personal preference and defines the overall feel of your user experience.  This choice affects what applications are installed by default, but you are free to install any compatible applications.  While configuring Debian, you can install your preference or even include more than one to switch on-the-fly. 

File System

The Shell allows users to interact with the data stored on disk drives through a command line or graphic user interface.  This is accomplished using a file system on your hard drive that governs file access and its functional organizational structure.  

Files are expressed by their folder hierarchy – as a file path – starting with the root directory ("/").  As an example, personal user account data is stored within the home directory, or "/home".

Windows path use a backslash ("\") while Linux uses a forward slash ("/").

image.png

Linux has an "everything is a file" design philosophy.  This functionally means that hardware devices, processes, and sockets are overlaid onto our root folder.  As an example, the directory "/proc" doesn't actually exist on our storage drive.  Instead, it is a virtual filesystem representing real-time information from the kernel and other processes. 

Similarly, Docker creates a virtual file named "/var/run/docker.sock" that acts as a "socket" for communication between services.  This is how services like Portainer can access and manage existing containers, as well as create new ones.

When a computer system has multiple storage drives, they are located as a subdirectory within "/mnt".  This enables all of our storage drives to be accessible from the Linux root folder.  As an example, we could mount an external USB hard disk drive to "/mnt/storage". 

The Windows operating system assigns a letter designation to each drive, effectively creating multiple root folders – such as "C:\" and "D:\".