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 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 system.  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 that revolves aroundof open 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.

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 the defacto standard. 

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 think of 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 and 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.  This interface type makes it easy to automate tasks through the creation of scripts.

Graphical User Interface

Graphical user interfaces offer a graphical desktop environment that allows you to interact with the operating system and running applications visually.  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.

1000006138.jpg

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

1000006877.png

KDE Plasma

1000006878.webp

Xfce

1000006879.png

LXDE

1000006880.png

LXQt

1000006881.png

MATE

1000006261.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 installing Debian, you are free to 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 our disk drives through both a command line or graphic user interface.  This is accomplished using a file system on your hard drive to govern 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 operating system hard 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.

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

This behavior is different than the Windows operating system which assigns a letter designation to each drive, effectively creating multiple root folders – such as "C:\" and "D:\".