Red Hot Cyber

Cybersecurity is about sharing. Recognize the risk, combat it, share your experiences, and encourage others to do better than you.
Search

The History of the Linux Kernel (1 of 2). From Torvalds to the Hacker Community

Redazione RHC : 13 July 2025 12:19

Article by Pietro Cornelio and Massimiliano Brolli

The history of the Linux Kernel is a story of pure hacking as well as being a miracle of “collaboration”.

It is the fruit of the genius of Torvalds but also of many hackers/programmers scattered around the globe, who contributed, each in their own way, to the creation of a “disruptive” innovation for that period historical, where software was completely veering towards “closed source” logic.

It all started with Linus Benedict Torvalds, born in Helsinki, Finland, on December 28, 1969 to Nils and Anna Torvalds. But Torvalds aside, the history of the Linux kernel introduces us to some “generous hackers” that this article wants to bring to light, without whom this technology, which we find in everything today, could not have been created.

Prologue

The story of Linus Torvalds is very interesting, the classic nerdy boy, a bit of a loser, good at math, physics and as nerd tradition demands, lacking any social skills and a psychosis for his nose that Linus considered too big.

Torvalds’ father was a radio journalist, while his mother worked for the Finnish newspaper. His parents divorced at an early age and he began living with his mother and grandparents. Linus’s grandfather, Leo Toerngvist, was a professor of statistics at the University of Helsinki.

It’s interesting to know that Linus’s happiest memories are the moments when he played with the old electronic calculator of his grandfather (his mother’s father), Leo Waldemar Tornqvist, a professor of statistics at the University of Helsinki.

He started creating new programs using the BASIC language and then moved on to assembly language, very difficult but powerful, making mathematics and programming his passion.


A young Linus Torvalds plays with Ernő Rubik’s magic cube

The first computers

Linus saw his first computer at the age of eleven (around 1981) when his grandfather bought a Commodore VIC-20 home computer. It was his maternal grandfather who got Linus interested in computers by showing him the rudiments of BASIC programming, which turned out to be a revelation for Linus, as he read the manuals and programmed in BASIC, Linus said years later:

“It was an intoxicating sensation, and while the kids in Helsinki were playing hockey and going skiing with their parents, I was learning how a computer actually works. I discovered that it is possible to program in machine language, and by doing it, you start doing things you didn’t even think possible before, that is, using the computer better, you can control every little detail, and I started thinking about how to do those things faster and in less space. With machine language, there are no diaphragms of abstraction between you and the computer, you are very close to it. It’s the intimacy with a machine.”

After Linus had squeezed the VIC-20 to its limits, he started saving up (by doing summer jobs like cleaning parks in Helsinki) to buy a C64.


A Commodore VIC20 with the CBM BASIC interface

In 1986, at the age of 16/17, after long research and market analysis to decide which computer to buy, Linus decided on a beautiful Sinclair QL, one of the first 32-bit computers that Linus considered a really cool computer because of its black color and advanced features. Interestingly, the Sinclair QL provided Linus Torvalds with a series of study ideas for his programming hacks, allowing him to develop tools completely independently.

He purchased an assembler to translate assembly language into machine language and an editor. Torvalds realized that the new assembler and editor were on microdrives, so he couldn’t put them in the E-PROM to have them immediately available (here comes the hacker’s creative spark), so he decided to venture into writing a faster editor and assembler, which he then used to write all his subsequent programs, such as cloning his favorite Commodore VIC-20 games.

The Sinclair QL accompanied Linus for three years, from high school to the University of Helsinki and the Finnish Army, where he performed his military service. By now the Sinclair QL for Linus Torvalds had no more limits and reading in the specialized magazines about the new generation of Motorola 68020 CPUs he even began to think about mounting the 68020 on the Sinclair QL and rewriting the operating system to adapt it to the new CPU, he thought.

“Sure, that would be a big step. And getting a new CPU would cost me a lot of money.”

But the Sinclair QL would have had no future, so Linus abandoned the crazy idea. At the same time, Linus began to notice the arrival on the market of IBM-compatible PCs, which were starting to look interesting.

Linu

s Torvalds stated years later

“During my first year at university, the Sinclair QL found a place on a desk in front of the window of my room on the first floor on Petersgatan, but I didn’t make much progress with programming. Partly because I wanted to concentrate on my studies. But also because I found myself without a project to do on my computer. And without a project, you also lack enthusiasm. You try to think of something that can motivate you.”

For that reason, Linus Torvalds decided that the time had come to join the army, which sooner or later he would have to do. He was nineteen years old, and irritated by the limitations of his Sinclair QL computer which would not allow him to develop interesting computer projects, he took a train to Lapland to fulfill his 11-month duty. His military service ended on May 7, 1990.


Sir Clive Sinclair holding a Sinclair QL and its interface

The 80386 Processors

Upon returning from military service, Linus Torvalds faced a typical geek dilemma. Like all purists who grew up with a 68008 chip, he snubbed PCs. But when the new Intel 80386 processor came out in 1986, PCs began to become much more attractive. They could do everything a 68020 could, and by 1990, mass production and the introduction of inexpensive IBM clones made those computers much more affordable. Torvalds said

“I was very careful about the money issue, because I didn’t have any. So I decided: this is the machine I want. And since PCs were booming, upgrades and peripherals would be easy to find. Especially when it came to hardware, I wanted something standardized.”

So Linus decided to take the plunge and buy an IBM-compatible PC by saving up money by selling the expansion devices of his glorious classmate Sinclair QL.

Very significant for Linus Torvalds the intellectual switch that made him leap to a very high level of knowledge of the art of programming and the details of operating systems. Torvalds has always said on various occasions that everyone has a particular book that has changed their life,


An Intel 80386 processor

“The one that took mine and propelled it to new heights was Andrew S. Tanenbaum’s “Operating Systems: Design and Implementation””

Let’s read the words of Linus Torvalds himself:

“I had already signed up for the fall university courses and what I was most looking forward to was the course on C programming and the Unix operating system. That summer, to prepare for the course, I bought the book by Prof. A. Tanenbaum (a university professor in Amsterdam) in the hope of getting ahead with my work. In the book, Prof. Tanenbaum presented his creation Minix, a small clone of Unix. Immediately after reading the introduction and discovering the philosophy of Unix and what that powerful, clean and beautiful operating system was capable of doing, I decided to get a machine on which to run Unix. I would install Minix, the only reasonably useful version I could find. As I read the book and began to understand Unix, I felt the enthusiasm growing inside me. And honestly, it never went away.”

It is curious to note that Linus Torvalds’s first academic year in the fall of 1990 also coincides with the first year in which the University of Helsinki adopted Unix, the powerful operating system born at AT&T’s Bell Labs in the late 1960s and grown around the world with the various dialects and versions that had made a good part of the academic world of the time fall in love with it. In particular, the university bought a MicroVAX running DEC’s Ultrix, Digital Equipment Corporation’s version of Unix.

Linus Torvalds was amazed by the versatility of the Unix he was learning from Andrew Tanenbaum’s book and was eager to work with Unix to experiment with new ideas, and at the same time was very excited about the new projects he could develop if he owned an IBM Intel 80386 compatible PC. But since he had no way of raising the 18,000 Finnish marks (including interest for the installment loan) to buy one, he decided that he would start the fall semester at the university using his Sinclair QL as a terminal and a modem to dial into the university’s new Unix computer until he could buy a PC on which to run his own Unix.

The encounter with the Minix operating system

January 2, 1991 was the first day the shops were open after Christmas and after his twenty-first birthday with Christmas/birthday money in hand Linus made the big decision to buy a computer with an Intel 80386 CPU at 33 Mhz and 4 Mb RAM. The computer ran a reduced version of DOS. Torvalds wanted to run Minix, the Unix variant, so he ordered it, and it took over a month for the operating system to reach Finland.

Finally, Minix arrived one Friday afternoon, and Linus Torvalds spent the whole night installing it: sixteen disks that he took turns inserting into the computer. The whole weekend was spent getting to know the new system. Torvalds understood what he liked and what he didn’t like about that operating system, so with the tenacity and intelligence typical of a hacker, he began to study and develop ideas to compensate for the defects. He downloaded from the Internet some programs he had already used on the university computer, and after more than a month, Torvalds managed to adapt the system to his needs.

Andrew Tanenbaum, the Amsterdam professor who had written Minix, wanted the operating system to remain an educational tool, therefore not suitable for modifications and adjustments under penalty of violation of the license. However, there were patches available for Minix developed by an Australian hacker named Bruce Evans, considered online to be the God of the Minix 386. His improvements made Minix much more usable. Even before buying the computer, Linus had been following Minix newsgroups online, so he learned every detail of Minix and how to improve it even before buying a PC. Unfortunately, licensing issues meant buying the official version of Minix and then doing a lot of work to install Evans’ patches.


Professor. Andrew Tanenbaum

Towards the Development of a Proprietary Kernel

Years later, Linus Torvalds stated that there were a number of disappointing features in Minix. The worst was terminal emulation, an important function because it was the favorite program he used to connect to the university computer to work on their powerful Unix or even just to go online.

So once again Torvalds thought of designing a better terminal emulation program but with the difference (and here is where fate begins) of not designing it under Minix, but at the pure hardware level as a stand-alone program. That stand-alone terminal emulation project in pure hacker style of “learning on the job” was an excellent opportunity to learn how the 386 PC hardware worked. The idea was simple, Linus wanted to have two independent processes, one would read from the modem and display on the screen while the other process would read from the keyboard and write to the modem, basically there would be two channels in both directions. It’s a typical task-switching application, and the Intel 80386 CPU had the best hardware capabilities for it.

The first release of the software used to test the idea was implemented on two processes, one to write the letter A on the screen, the other process wrote the letter B scheduled to repeat these functions a certain number of times per second. So the screen would fill up with AAAAAAAAAA then, suddenly, it would switch to BBBBBBBBBB. It was a practical exercise to see if process switching worked. After about a month, while Linus Torvalds was learning while developing his idea, I managed to change the two processes, AAAAAAAAAAA and BBBBBBBBBB, so that one read from the modem and wrote to the screen and the other read from the keyboard and wrote to the modem.

Finally, Linus Torvalds built the basis for his terminal emulation program. Thus, Torvalds was able to read newsgroups and connect to the University. He rebooted the PC by booting from a floppy disk containing the terminal program, including the boot file. When he needed to modify the terminal program, he booted into Minix and used it for programming. Torvalds said years later that he was very proud of what he had done.

That’s how Linux began, a shapeless embryo born from a simple terminal program, but Linus Torvalds didn’t know it yet.

Linus Torvalds said of his shapeless terminal program:

“My terminal emulation grew legs. I used it regularly to connect to the university computer and read mail or participate in discussions on the Minix newsgroup. The problem was that I wanted to download and upload things. Which meant I needed to save them to disk. And to do that, my terminal emulation would need a disk driver. And also a file system driver, to be able to take into account the organization of the documents and save what I downloaded as files. It was at that point that I almost gave up: I thought the game wasn’t worth the candle.”

But, there’s a but, since Torvalds had nothing else to do, not even chasing girls or playing games or anything else, he loved computers and programming and so he thought: I have nothing else to do, so designing a disk/file system driver for my terminal emulator might be an interesting project.


A snapshot of Linus drinking a beer.

And so he set out on the adventure of developing a disk driver, but since he didn’t know how to do it, he thought of using the excellent Minix documentation in Tanebaum’s book (with attached sources) so he could use the Minix file system, which meant he could read and write the files I had created under Minix with the terminal emulation program. Of course it wasn’t easy, Torvalds said it took a lot of work, one of those things like program-sleep-program-sleep-program-eat pretzels-program-sleep-program-quick shower-program, when development was finished Torvalds realized that the project was turning into an operating system and here was the epochal turning point.

Torvalds stopped thinking of it as a terminal emulator and started thinking of it as an operating system. Torvalds would later say:

“Recalling those days, the transition occurred in the hypnotic state of one of those programming marathons where I was constantly adding extra functions. The next moment I realized that the program was accumulating so many functions that it was turning into a draft for a new operating system, I began to call it my gnu-emacs of terminal emulation programs.”

It should be remembered that the famous GNU/Emacs editor developed by Richard Stallman started out as a simple editor for developers, but then RMS and other programmers, being open source, had equipped it with many functions.


Richard Stallman, Free Software Guru and creator of GNU

First requests to the community

They wanted it to be a programmable editor, but then that took over and it became some kind of infernal editor that could do anything. The same thing was happening to Linus Torvald’s terminal emulation program. It was turning into something else.

From: [email protected] (Linus Benedict Torvalds) To: Newsgroup: comp.os.minix Subject: Gcc-1.40 and posix question Message-ID: «1991Jul13,[email protected]» Date: 3 July 1991 10:00:50 GMT Hi surfers, For a project I’m working on (in Minix) I’m interested in defining the posix standards. Could someone point me to a (preferably) machine-readable format of the latest posix rules? Better if on an FTP site.

Note how a hacker works, he sets himself a project and even if he does not have sufficient skills to do it, he avidly and diligently searches for technical sources from which he can take information and learn everything he needs to develop his project. Torvalds

No one got back to me to tell me where to find the POSIX standards, so I went to Plan B. I found some manuals for the Sun Microsystems version of Unix at the university, which ran a Sun server. The manuals contained a basic version of the system calls that I could get by pretty well. I could read in the manual pages what a system call was supposed to do and then start implementing it from there. The manuals didn’t tell me how to do it, they just told me what the end result was. I also studied some system calls from Andrew Tanenbaum’s book and some other books. Eventually, someone sent me the huge volumes that contained the POSIX standards.”

It is true to say that “fortune favors the bold,” and Linus Torvalds was bold.

Torvalds’ email did not go unnoticed. Torvalds:

“Anyone with any knowledge (and the Minix site was read only by knowledgeable people) could have figured out that my project was about an operating system. Why else would I need POSIX rules? The message piqued the curiosity of Ari Lemke, an assistant professor at Helsinki University of Technology (which I would have attended if I hadn’t been interested in studying theory). Ari sent me a friendly reply and offered to set up a subdirectory on the university’s ftp site for when I was ready to publish my operating system there, making it available to anyone who wanted to download it.”

Ari Lemke created the subdirectory in question (ftp.funet.fi) long before Torvalds had anything to publish, as if he had glimpsed a great opportunity that was about to present itself.

Torvalds he says:

“I had the password, and everything was ready to go, so I could just log in and upload my stuff. But it took me four months to decide I had something worth sharing with the world, or at least with Ari and the other operating system geeks I’d started emailing. My original goal was to create an operating system that I could use as a replacement for Minix. It wasn’t supposed to do more things than Minix, but rather the things in Minix that interested me plus some things that were missing from that system. For example, it wasn’t just the terminal emulation that was terrible in Minix; there was no way to do a job-control function—that is, run a program in the background while you’re not using it.”

This is how Linus Torvalds began developing the operating system, reading and learning the POSIX standards from the SUN OS manual and other books, he tried his hand at implementing the system calls (syscalls) one by one trying to create something that worked.

Torvalds confided years later that that period of study was very frustrating because it was difficult to understand the syscalls and implement them. The shell was retrieved free of charge from the Internet from the ftp site of the GNU project of the free software foundation and integrated into the terminal program. The very useful shell in an OS meant that the foundations of a real operating system had been built. So Torvalds began to test many internal programs thanks to the shell. He also began compiling new programs and dedicating a special partition just for his terminal program, which had become a mini-OS. Torvalds decided to call it Linux.

Linus Torvalds said years later:

Honestly: I never thought of releasing it under the name Linux, it seemed too egocentric. Do you know what the name I had chosen for eventual distribution was? Freax. In fact, some of the first make files—the files that describe how to compile the source code—had the word “Freax” on them for about six months. But I didn’t really care. At that point, I didn’t need a name because I had no intention of distributing it in any way.”

From: [email protected] (Linus Benedict Torvalds) To: Newsgroup: comp.os.minix Subject: What would you most like to see in minix? Summary: Little survey for my new operating system Message ID: « [email protected]» Hello everyone who uses Minix. I’m making a free operating system (it’s just a hobby, it won’t be a big, professional thing like gnu) for 386 (486) AT clones. I’ve been working on it since April and it’s starting to take shape. I’d love to hear your opinions on what you like/dislike about minix, because my OS resembles it in some ways (same physical filesystem layout — for practical reasons — and other things). I’ve been running bash (1.08) and gcc (1.40) so far, and it seems to work. That means I’ll have something usable in a few months, and I’d love to hear what features people are most interested in. Any suggestions are welcome, but I can’t promise to implement them 🙂 Linus ([email protected]) PS: Yes, it’s free of minix code and has a multi-threaded fs. It is NOT portable (uses 386 task-switching etc.) and will probably never support non-AT hard drives, because I only have that :-(.

Torvalds later said:

The most enthusiastic OS geeks in the Minix community saw a spark ignite. There weren’t many suggestions about Minix’s features, but there were other kinds of responses. In the end, putting it online wasn’t really a decision. That was how I was used to exchanging programs. So the only real decision was when I dared to show my system to other people. Or, more precisely, the question was: when will it be good enough that I shouldn’t be ashamed of it? What I ultimately wanted was to have a compiler and a real environment so I could create programs from within Linux, without having to use Minix. But I felt so proud when the gnu shell worked that I felt ready to show the world my creation. And I wanted opinions.

Redazione
The editorial team of Red Hot Cyber consists of a group of individuals and anonymous sources who actively collaborate to provide early information and news on cybersecurity and computing in general.

Lista degli articoli