Introduction to Linux: The Open-Source Revolution

Yash PatilYash Patil
6 min read

Let’s explore the history, architecture, and core concepts of Linux in this deep dive.

Would 100% recommend you to watch Linus’s TED talk, where he has talked about his journey in creating Linux and changing the open-source community completely!

1. The History of Linux: From UNIX to Today

The Birth of UNIX (1960s-1970s)

The journey of Linux began in 1964 when Bell Labs, MIT, and General Electric collaborated on the Multics project—a powerful, multi-user OS. However, Multics was overly complex, leading Bell Labs to withdraw from the project.

In 1969, two brilliant minds at Bell Labs—Dennis Ritchie and Ken Thompson—decided to build a simpler alternative. They created UNIX, originally called UNICS (Uniplexed Information and Computing Service), which was designed for multitasking and multi-user functionality. UNIX was small, efficient, and written in assembly language.

By 1973, Ritchie rewrote UNIX in C, making it portable across different hardware. This was a game-changer, as it allowed UNIX to spread rapidly in universities, research institutions, and corporations.

MINIX and the Rise of Linux (1980s-1991)

In the 1980s, UNIX became proprietary, leading to limited access. However, Andrew Tanenbaum, a professor, developed MINIX, a lightweight, Unix-like OS for educational purposes.

In 1991, Linus Torvalds, a Finnish computer science student, wanted a free and open OS like UNIX but with more flexibility than MINIX. So, he built his own kernel and announced it in a Usenet post:

“I'm doing a (free) operating system (just a hobby, won't be big and professional like GNU) for 386(486) AT clones.”

This quote holds massive AURA!

Thus, Linux was born. With the contributions of developers worldwide, what started as a personal project by Linus Torvalds, Linux quickly evolved into a powerful, open-source OS used in personal computers, servers, smartphones, and embedded systems.

Why Did We Need Linux?

  1. UNIX was expensive and closed-source – Linux became the free alternative.

  2. Flexibility and customization – Linux allowed users to modify and tailor the OS.

  3. Security and stability – Linux provided a more secure and stable computing environment.

Key Features of Linux

  • Open-source: Anyone can modify and improve it.

  • Multi-user & multitasking: Supports multiple users and processes simultaneously.

  • Security: Built-in permissions, encryption, and firewall capabilities.

  • Portability: Runs on various hardware platforms.

  • Scalability: Powers everything from small devices to supercomputers.

2. Understanding the Linux Kernel

What is the Kernel?

The Linux kernel is the core of the operating system—the bridge between hardware and software. It controls everything, from memory management to process execution and device handling.

Why is the Kernel Necessary?

Without a kernel, your computer wouldn't know how to talk to the hardware.

  • Memory Management : Keeps track of how much memory is used to store what and where.

  • Process Management : Determines which process can use the CPU and for how long.

  • Device Drivers : Acts as a mediator between hardware and processes

  • System calls and Security : Receives requests from processes for services

Components of an Operating System

A complete OS consists of:

  1. Kernel – Handles core system functions (process scheduling, hardware interaction).

  2. GNU Utilities – Provides essential tools (shell, compilers, libraries).

Together, Linux Kernel + GNU create a fully functional OS.

Kernel Space vs. User Space

  • Kernel Space – It is the portion of memory where the kernel operates and provides its services, with full access to system resources.

  • User Space – Where applications and user processes run, with limited access for security reasons.

Conceptual Diagram of a UNIX system

1: A conceptual diagram of a Unix system. The kernel surrounds and... |  Download Scientific Diagram

Utilities and Applications interact with the Kernel via the Shell which is written in ‘C‘, to perform tasks. Hence users interact with the kernel via shell or system calls which then gives access to hardware and software resources for the applications to execute tasks.

uname -r

Use this command to get basic Kernel information.

3. The Linux Boot Sequence

The Linux boot process is how the system starts when you power it on:

1. BIOS/UEFI Initialization

  • BIOS (Basic Input/Output System) performs hardware checks using BIOS POST(Power on Self Test).

  • It looks for a bootable disk and hands over control to the boot loader.

2. Boot Loader (GRUB 2)

  • After a successful POST test, BIOS loads and executes the boot code from the boot device, located in the first sector of the hard drive.

  • GRUB (Grand Unified Bootloader) loads the Linux kernel into memory.

  • It allows you to select the OS (if dual-booting).

3. Kernel Initialization

  • The kernel decompresses, loads into the memory and executes tasks such as initializing hardware and memory management and mounts the root filesystem.

  • It looks for an init process to initialize user space and sets up the processes needed to run in user environment.

4. Init Process (systemd)

  • The init process then calls the systemd daemon.

  • systemd starts system services and targets, bringing the OS to a working state.

  • Essential services (networking, logging, display) are initialized.

  • Actually systemd the first process with its process id (PID) 1.

5. Shells and Environment Variables

Types of Shells in Linux

  • Bash (Bourne Again Shell) – Most widely used, powerful scripting features.

  • Zsh (Z Shell) – Extended features over Bash (auto-completion, themes).

  • Fish (Friendly Interactive Shell) – User-friendly, with syntax highlighting.

Features of Bash Shell

  • Command history

  • Aliases & functions

  • Script execution (.sh files)

  • Alias for commands

Environment Variables

Environment variables store system-wide settings. To check all the Environmental variables in the systems use :

env

How to create a custom environment variable and make it persistant across logins ?

export VARAIBLE_NAME=value

To make it persistent, in the .bashrc file add this export VARAIBLE_NAME=value line at the end of the file using a VIM editor and reboot the system.

6. Linux File Types and Filesystem Structure

Every object in Linux can be considered to be a type of file. This is a generic statement which in principle is actually true.

How to check file types?

ls -ltr

The first character such as d, -, etc. specifies its file type.

Linux File Types

  1. Regular Files (-) – Documents, programs, scripts.

  2. Directories (d) – Folders containing files. /home/user is a type of folder every linux OS has.

  3. Character Files (c) – Represent devices under /dev filesystem that allows OS to communicate with I/O devices like keyboards.

  4. Block Files (b) – Represent storage devices like hard drives.

  5. Symbolic Links (l) – Shortcuts to other files.

  6. Sockets (s) – Allow inter-process communication.

  7. Pipes (p) – Enable data transfer between processes. Used to connect one process’s input to other process and this is a unidirectional flow.

Linux Filesystem Architecture

The Linux filesystem is a hierarchical structure starting from root (/):

Final Thoughts

Linux has come a long way from being a hobby project to powering the internet. Whether you're a beginner or an advanced user, understanding its history, architecture, and core components is key to mastering it.

In the next blog, we’ll dive deeper into user and file access management, package management, storage, networking and much more. Stay tuned! 💙🐧

0
Subscribe to my newsletter

Read articles from Yash Patil directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Yash Patil
Yash Patil