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?
UNIX was expensive and closed-source – Linux became the free alternative.
Flexibility and customization – Linux allowed users to modify and tailor the OS.
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:
Kernel – Handles core system functions (process scheduling, hardware interaction).
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
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
Regular Files (
-
) – Documents, programs, scripts.Directories (
d
) – Folders containing files./home/user
is a type of folder every linux OS has.Character Files (
c
) – Represent devices under/dev
filesystem that allows OS to communicate with I/O devices like keyboards.Block Files (
b
) – Represent storage devices like hard drives.Symbolic Links (
l
) – Shortcuts to other files.Sockets (
s
) – Allow inter-process communication.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! 💙🐧