Redazione RHC : 13 July 2025 12:25
Article by Pietro Cornelio and Massimiliano Brolli
Previous articles: The history of the Linux Kernel (1 of 2). From Torvalds to the hacker community
In the first article we met Linus Torvalds, his adolescence and his excessive interest in computers. We have also seen that after having worked on a MINIX operating system (which could not be modified as source code) he went on to create first a shell and then drivers until he defined a primordial operating system that at the time was not yet autonomous.
Immediately after sharing the embryo of what later became Linux, to the comp.os.minix Newsgroup, everything began to change rapidly and it is from September 17, 1991 that we resume this exciting story.
“I don’t think there were more than one or two people who tried it,” said Torvalds when “they had to install the special compiler, create a clean partition to use as a boot partition, compile my kernel and then start the shell. Starting the shell that was pretty much all you could do with that version.”
You could print out the source code, which was no more than 10,000 lines, less than 100 pages if you printed it in small print. Ari Lemke was in charge of getting the operating system onto the ftp site, and he hated the name Freax that Torvalds had given it.
He preferred the other name – Linux – so he placed the source code in a directory called “Linux”; residing within “pub/OS/Linux” .
Torvalds fixed some bugs, such as the one that caused GCC to crash when running out of memory, and managed to port the GCC compiler to the Linux operating system so that small programs could be compiled.
This meant that users would no longer need to load the GCC compiler before booting the Linux operating system. In early October, version 0.02 was released, which included some bug fixes and a few additional programs. The next month, Torvalds released version 0.03.
Linus Torvalds said years later:
“I could have stopped at the end of 1991. I had done a lot of things that seemed interesting to me. Not everything worked perfectly, but in my opinion in the software world, it’s easy to lose interest in a project once you’ve solved the fundamental problems. And that was happening to me. Debugging software is not a very fun activity. Then two things happened that kept me going. First, I accidentally destroyed my Minix partition; Second, people kept asking Send me your feedback on the system.
At the time, I was booting into Linux but using Minix as my primary development environment. I used Linux mostly to read email and news from my university computer via the terminal emulation I had written. The university computer was always busy, so I had written a program that automatically called it. But in December, I accidentally connected to my hard drive instead of the modem. I was trying to connect to /dev/tt1, the serial line. I made a mistake and automatically connected to /dev/hda1, the hard drive. The end result was that I accidentally overwrote the most critical parts of the partition where I had Minix. It was at that point that I had to make a decision: I could reinstall Minix or take the opportunity and tell myself that Linux was good enough to replace it. I would write programs to compile Linux directly into it, and when I felt the need for Minix, I would simply add that feature. to Linux. Leaving the starting environment and making a program truly independent is a significant conceptual step, so much so that at the end of November I released the new version, calling it .10. A few weeks later came version 0.11”.
From then on, after the community’s interest in Linux, a series of people joined the project, giving Torvalds a hand. Below we report, taken from the C files, the names of the first programmers who helped Torvalds, taken from the head of the sources of the Linux version 0.11. D done at the time was only “Theodore Ts’o”.
Theodore Ts’o, the first programmer who joined Torvalds on the Linux kernel
Here Linus Torvalds begins to implement the first important functions to solve user problems and said:
“I remember in December there was a guy in Germany who only had 2 megabytes of RAM and was trying to compile the kernel but couldn’t run GCC because at the time this compiler needed more than a megabyte. He asked me if Linux could be compiled with a smaller compiler, one that didn’t need all that memory. So I decided that even if I didn’t need that particular function, I would implement it for him. It’s called page-to-disk and it means that even if one has Only 2 megs of RAM can simulate having more than that by using the disk as storage. It was around Christmas 1991. I remember on December 23rd, I was trying to get page-to-disk working. On December 24th, it worked pretty well, but occasionally crashed the machine. On the 25th, it was fine. That was the first feature I added to meet someone else’s needs. And I was proud of it.
But with each passing day, the Linux user community grew larger. Torvalds received emails from places he had dreamed of visiting, like Australia and the United States. Page-to-disk was remarkable, because Minix had never done it. In fact, it was included in version 0.12, which was released the first week of January 1992.
People immediately began comparing Linux not only to Minix, but also to Coherent, a small Unix clone developed by the Mark Williams Company. From the beginning, adding page-to-disk put Linux a step ahead of the competition. That’s when Linux really took off.
Suddenly, there were people switching from Minix to Linux. At the time, Linux didn’t do all the things Minix did, but it did most of the things that people really care about. And it had this feature that many people found really useful: with page-to-disk you could run programs larger than your memory.
Torvalds said:
“The fact is that to make Linux usable I had relied on a set of tools freely distributed on the Internet: I too had worked by standing on the shoulders of giants. The most important of these free software was the GCC compiler, with a copyright under the General Public License, the creation of Richard Stallman universally known as the GPL (or «copyleft»). So I abandoned my old copyright and adopted the GPL, a document written by R. Stallman with the supervision of some lawyers (and since there are lawyers involved, it is several pages long). The new copyright was included in version 0.12, but I remember lying awake the night after the release, tormented by the idea of the commercial interest the system would generate.”
All that attention was not all positive. Torvalds said that although he never liked comparisons, he was forced to defend Linux when Andrew Tanenbaum started attacking Linux, as it was supplanting his own.
MINIX GUI from a few years later, very similar to Windows 95 They were both nerds, so all this exchange happened via email. Torvalds said on this issue:
“Who would blame him if they were spinning like crazy? Before Linux newsgroups were created, I was constantly using the Minix newsgroups to post announcements about Linux or to find people interested in the operating system. Why would Andrew like that? He had opposing ideas about how an operating system should be built than I did. At the time, Andrew was part of a school of computer scientists who advocated a microkernel approach to operating systems. He had built Minix as a microkernel, and Amoeba, the system he was working on at the time, was also of the same kind. This was a very lively movement in the late 1980s and early 1990s. And the success of Linux was a threat. So Andrew kept sending very unpleasant messages to the newsgroup.”
The theory behind the microkernel is that operating systems are complex. So we try to eliminate some of the complexity with heavy modularization. The principle of the microkernel approach is that the kernel—which is the foundation of the foundation of an operating system—should do as little as possible.
Its main function is to communicate. All other things a computer offers are services available through microkernel communication channels. In the microkernel approach, the problem space must be divided so that no part of it is complex. Torvalds found this approach stupid.
He said that the interactions made it much more complex than it could be if many services were included in the kernel itself, as is the case in Linux. Another problem with Minix was that you could have the source code, but the licenses didn’t allow you to do much with it.
Take someone like Bruce Evans, who had done a lot of surgery on Minix and made it more usable. He couldn’t incorporate his improvements. He had to limit himself to making patches. From a practical standpoint, it was a disaster.
From a legal standpoint, he couldn’t make a boot image available to users so they could easily upgrade. So users had to go through a step-by-step process to get a usable system. A terribly uncomfortable thing.
Linus reads the professor’s emails on screen. Tanenbaum
Torvalds began communicating with Andrew Tanenbaum in early 1992. Torvalds said of Tanenbaum’s first message:“Imagine going online on a cold morning and being confronted with the uncut version of this message”:
In 1992, the operating system went from being a toy to something integrated into people’s lives, their activities, their businesses. The switch came in the spring of 1992, about a year after I started terminal emulation, when the first version of the X window system began running under Linux. This meant that the operating system was able to support a graphical interface that users could use simultaneously on multiple windows, thanks to the X window design that originated at MIT. This was a big change.
“I remember joking about it with Lars, a year or so before it happened, telling him that one day we’d run X and be able to do anything. I didn’t think it would happen so quickly. It was a hacker named Orest Zborowski who managed to port X to Linux.”
Orest’s contribution made not only windows available; it also opened a big door to the future. Sockets were used for local networking to allow the X Window System to function. It was therefore possible to start from those same sockets to make Linux take the great leap towards external networks.
Without networks, Linux was only usable by people who stayed at home and used a modem to connect, or did everything locally. With great optimism, Linux networking began to be developed over the original sockets, even though they were never intended for networking at all.
Torvalds was so convinced that the goal was close that he made a big leap in the version numbering scheme. In March 1992, I was considering releasing version 0.13. Instead, with the graphical interface working, he thought Linux was now about 95 percent of the way to its goal of releasing a complete, reliable operating system with networking.
So the new release was 0.95, but Linus said:
“Boy, I was way ahead of myself. How naive… Networking is a nasty beast, and in the end it took exactly two years to fix it, to get it into a form that could be made public. When you add networking, you suddenly introduce a whole new set of problems. Security problems, for example. You don’t know who’s out there, or what you’re trying to do. You have to be very careful that someone else doesn’t crash your computer. sending you garbage packets. You can no longer control who is trying to contact your machine. And besides, many people have wildly different system settings. It seemed like we were going to go on like this forever. “
By the end of 1993, Linux had nearly usable networking features, although some people had serious problems getting them to work.
It couldn’t handle networks that didn’t have 8-bit boundaries.
Because Torvalds had been so optimistic about the 0.95 version numbering, he quickly ran into problems. In the two years it took to get to version 1.0, the community had to juggle release numbers. There weren’t many numbers between 95 and 100, but they kept releasing new versions based on bug fixes or new features.
When they got to version 0.99, they started adding additional release levels to indicate patch levels, and then they settled on the alphabet.
At one point, you had version 0.99, patch level 15. Then version 0.99, patch level 15B, and so on. They worked their way up to patch level 15Z. Patch level 16 finally became Linux version 1.0, the point where the software became usable. This version was released in March 1994 to great fanfare in the auditorium of the Faculty of Computer Science at the University of Helsinki.
Sources
https://www.wired.com/2001/10/kernel/