Lesson 4 of 7 · History
1991 — Linus Torvalds and the Linux kernel
Objective
Learn how a student wrote, almost as a game, the kernel that now runs most of the world's servers, and understand how this kernel is developed and numbered. You will be able to read a version such as 5.14.0-427.el9.x86_64.
Key points
- In 1991, Linus Torvalds, a student at the University of Helsinki, wrote a kernel for his PC, inspired by Minix.
- He announced it on 25 August 1991; version 0.01 came out in September 1991.
- In 1992, Linux moved to the GPL licence: together with the GNU tools, an entirely free system finally existed.
- Linux 1.0 came out in March 1994. Today, thousands of developers, employed by hundreds of companies, contribute to it.
- A new version comes out roughly every 9 to 10 weeks; some are maintained for a long time: these are the LTS versions.
1. What is the kernel?
The kernel is the central program of the system. It starts first and stops only when the machine shuts down. It is the link between programs and hardware:
You ──► bash, ls, nginx, mysql… (the programs)
│ "system calls": read, write, open, create a process
▼
┌──────────────┐
│ LINUX KERNEL │ memory, processes, disks, network, drivers
└──────────────┘
│
▼
processor, memory, disks, network card (the hardware)
When ls wants to read a directory, it does not talk to the disk: it asks the kernel. This is what allows a thousand programs to share the same machine without getting in each other's way.
2. Minix, the students' UNIX (1987)
At the end of the 1980s, UNIX was expensive and its code was no longer freely distributed. Professor Andrew Tanenbaum, at the Vrije Universiteit Amsterdam, wrote a small educational UNIX for his students: Minix (1987). It came with his textbook on operating systems, source code included.
Minix had two limits: its licence did not allow it to be modified and redistributed freely, and Tanenbaum wanted to keep it simple, for teaching. He refused many improvements proposed by its users.
3. 1991: a student in Helsinki
Linus Torvalds was born in 1969 in Helsinki. In January 1991, he bought a PC with an Intel 386 processor. He installed Minix on it and wanted to understand how this new processor worked. He started with a small program that displayed "A"s and "B"s alternately, to test switching from one task to another. Then a terminal emulator to connect to the university. Then a disk driver… and he realised that he was writing a kernel.
On 25 August 1991, he posted a message on the Usenet forum comp.os.minix. In it, he announced a free operating system for 386 PCs, specifying that it was "just a hobby, won't be big and professional like gnu". He asked readers what they would like to find in it.
Version 0.01 was uploaded to a University of Helsinki server (ftp.funet.fi) in September 1991. Linus wanted to call it Freax (free + freak + x); the server administrator, Ari Lemmke, put the files in a directory named linux. The name stuck.
From this very first version, Linux ran bash and gcc, two GNU tools (lesson 0.3).
4. 1992: the GPL and the dispute with Tanenbaum
Linus's first licence prohibited any commercial use. In early 1992, with version 0.12, he announced the move to the GPL (version 2). From then on, anyone could use, modify and redistribute Linux, provided they shared their modifications. With the Linux kernel and the GNU tools, a complete free system finally existed. Linus later said that choosing the GPL was one of the best decisions he ever made.
In January 1992, Tanenbaum posted a message on the same forum entitled "LINUX is obsolete". His two criticisms:
| Tanenbaum's criticism | History's answer |
|---|---|
| Linux is a monolithic kernel (the whole kernel in a single block), an outdated design in his view; the future belonged to microkernels | Linux remained monolithic, but modular: drivers are loaded on demand (lsmod, modprobe) |
| Linux is too tied to the 386 processor and will not be portable | Linux runs today on x86, ARM, POWER, IBM Z, RISC-V… more platforms than any other system |
This courteous but lively debate has remained famous. It shows that Linux was not the "best" system on paper; it won because it was free, practical and open to contributions.
5. The kernel grows (1992-2011)
The timing was ideal: BSD was blocked by its lawsuit (lesson 0.2), GNU's Hurd was not progressing, and the Internet was arriving in universities. Hundreds of developers sent patches to Linus.
| Version | Date | Notable new feature |
|---|---|---|
| 0.01 | September 1991 | First public version |
| 0.12 | early 1992 | Move to the GPL |
| 1.0 | March 1994 | First version considered stable; TCP/IP networking |
| 2.0 | June 1996 | Multiple processors (SMP); arrival of the mascot Tux, the penguin |
| 2.2 | January 1999 | Better multiprocessor support |
| 2.4 | January 2001 | USB, large amounts of memory: Linux enters the enterprise |
| 2.6 | December 2003 | New development model; kernel of RHEL 5 and RHEL 6 (2.6.32) |
| 3.0 | July 2011 | Number change for Linux's 20th anniversary, with no technical break |
In 2005, a licensing conflict deprived the developers of the tool they used to manage the code (BitKeeper). In a few weeks, Linus wrote his own tool: Git. Today, Git is used by almost every developer in the world (GitHub, GitLab…). It is Linus's second major invention.
6. How the kernel is developed today
The Linux kernel is probably the largest collaborative project in the history of software: more than 30 million lines of code, thousands of contributors for each version, most of them paid by their employer (Intel, Google, Red Hat, AMD, Meta, Huawei, SUSE, Linaro…).
A regular cycle
version 6.N released
│
├── 2 weeks: the "merge window"
│ new features prepared by the maintainers enter the kernel
│
├── 6.(N+1)-rc1, rc2, … rc7 (sometimes rc8): one "release candidate" per week
│ no more new features, only bug fixes
│
└── about 9 to 10 weeks later: version 6.(N+1) released
This gives 5 to 6 versions per year. There is no fixed date: Linus releases when the version is ready.
A pyramid of maintainers
Linus does not review everything himself. The kernel is divided into subsystems (networking, file systems, graphics drivers, USB, security…). Each has its maintainers, listed in the MAINTAINERS file of the source code. Contributors send their patches by e-mail to the right maintainer; the maintainer reviews them, tests them, then passes them up. Linus merges the work of the top-level maintainers.
Mainline, stable, longterm
On kernel.org, you will see several kinds of versions:
| Category | What it is | Maintained by |
|---|---|---|
| mainline | Linus's development version (e.g. 6.N-rc3) |
Linus Torvalds |
| stable | The latest released version, with fixes (e.g. 6.N.4) until the next one |
Greg Kroah-Hartman and the stable team |
| longterm (LTS) | Usually the last version of each year, fixed for several years | Volunteer maintainers |
Since 2023, new LTS versions on kernel.org are announced for about two years (compared with six years for some before), due to a lack of resources to maintain more. Projects such as the CIP (Civil Infrastructure Platform) maintain certain versions for ten years for industry.
The first number means nothing technical: Linus changes it when the second one becomes too large (3.0 in 2011, 4.0 in 2015, 5.0 in 2019, 6.0 in 2022…).
7. Distribution kernels
Enterprise distributions do not follow the latest kernel.org version. They choose a version at launch and maintain it themselves for the whole life of the product, adding security fixes and even new features (this is called "backporting").
| Distribution | Base kernel |
|---|---|
| RHEL 6 / CentOS 6 | 2.6.32 |
| RHEL 7 / CentOS 7 | 3.10 |
| RHEL 8 / Rocky 8 / Alma 8 | 4.18 |
| RHEL 9 / Rocky 9 / Alma 9 | 5.14 |
| RHEL 10 / Alma 10 | 6.12 |
| Debian 12 "bookworm" | 6.1 |
| Debian 13 "trixie" | 6.12 |
| Ubuntu 22.04 LTS | 5.15 |
| Ubuntu 24.04 LTS | 6.8 |
How to read a Red Hat kernel version:
uname -r
# 5.14.0-427.13.1.el9_4.x86_64
# 5.14.0 → base version chosen by Red Hat (kernel.org 5.14)
# 427.13.1 → Red Hat build number: hundreds of patches added
# el9_4 → "Enterprise Linux 9", update 9.4
# x86_64 → architecture (64-bit PC)
A RHEL 9 5.14 kernel from 2025 is therefore very different from the kernel.org 5.14 kernel of 2021: it contains years of fixes.
8. The lesson timeline
1987 Minix (Andrew Tanenbaum)
1991 January: Linus buys his 386 PC — 25 August: the announcement — September: Linux 0.01
1992 Linux moves to the GPL (0.12); "LINUX is obsolete" debate
1994 Linux 1.0 (March)
1996 Linux 2.0; the Tux mascot
2003 Linux 2.6
2005 Linus creates Git
2007 Creation of the Linux Foundation (which employs Linus)
2011 Linux 3.0, for the 20th anniversary
2022 Linux 6.0; first Rust language components in the kernel (6.1)
Common pitfalls
- Confusing the kernel version with the distribution version.
uname -rgives the kernel;/etc/os-releasegives the distribution. Rocky 9.4 and Rocky 9.5 have the same 5.14 base kernel. - Believing that an old kernel number means "not up to date". The 4.18 kernel of RHEL 8 still receives security fixes. What matters is the package date, not the base number.
- Installing "the latest kernel from kernel.org" on an enterprise server. You lose vendor support, and third-party modules (drivers, antivirus) may stop working.
- In a container, believing that the kernel is the distribution's kernel. A container shares the kernel of the host machine. You will see this in the lab.
Lab
You are on an Ubuntu 24.04 machine. Query the kernel:
uname -r # the kernel version
uname -r | cut -d. -f1 # only the first number
cat /proc/sys/kernel/ostype # where uname gets its answers
cat /proc/sys/kernel/osrelease
grep PRETTY_NAME /etc/os-release # the distribution
Surprise: your lab is a container. The distribution is indeed Ubuntu 24.04, but the kernel displayed is not Ubuntu's 6.8: it is the kernel of the machine hosting the lab. A container borrows its host's kernel; only the programs and files are Ubuntu's. Complete the tasks, then click Check.
Quiz
- Which system was Linus Torvalds using before writing Linux, and who had created it?
- Why was the move to the GPL in 1992 so important?
- What is a "merge window" in kernel development?
- What is the difference between a stable version and a longterm (LTS) version on kernel.org?
- A RHEL 9 server displays
5.14.0-503.el9.x86_64. Why is it not "behind" even though kernel.org offers 6.x versions?
Answers
- Minix, a small educational UNIX created by Professor Andrew Tanenbaum (1987).
- The GPL lets everyone use, modify and redistribute Linux while requiring them to share improvements; it attracted contributors and made it possible to combine the kernel with the GNU tools to form an entirely free system.
- The two weeks following a release, during which new features enter the kernel; then come the
-rcversions, reserved for fixes. - A stable version is fixed only until the next one comes out; a longterm version is fixed for several years.
- Red Hat chose the 5.14 base and maintains it itself, adding security fixes and new features (the number
503shows this). The base number does not tell you whether the kernel is up to date.
Reference sources: Linux kernel documentation (docs.kernel.org, GPL-2.0), kernel.org, "Just for Fun" by L. Torvalds. Original MasterLinux text.