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 (2 of 2). Early Hackers Up to Version 1.0.

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.

After the email to the Newsgroup

“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”.

The first hackers who joined Torvalds

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

linux/kernel/blk_drv/ramdisk.c/* * linux/kernel/blk_drv/ramdisk.c * * Written by Theodore Ts’o, 12/2/91 *//* * malloc.c — a general purpose kernel memory allocator for Linux. * * Written by Theodore Ts’o ([email protected]), 11/29/91…

First developments recommended by users

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.”

Minix vs. Linux

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

Exchanges with Professor 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”:

From: [email protected] (Andy Tanenbaum) To: Newsgroup: comp.os.minix Subject: LINUX is obsolete Date: 29 January 1992 12:12:50 GMT I was in the US for a couple of weeks, so I didn’t comment much on LINUX (not that I would have said much if I had been at home), but for what it’s worth I have a couple of comments to make now. As many of you know, MINIX is a hobby for me, something I do in the evenings when I’m tired of writing books and there are no major wars, revolutions, or Senate hearings to follow live on CNN. My real job is as a professor and researcher in the area of operating systems. Given the work I do, I think I know a little about where operating systems are going in the next ten years or so. Two things are obvious: 1. MICROKERNEL VERSUS MONOLITHIC SYSTEM Most older operating systems are monolithic, meaning the entire operating system is a single a.out file running in “kernel mode.” This binary contains process management, memory management, the file system, and so on. Examples of these systems include UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS, and many others. The alternative is a microkernel-based system, where most of the OS runs as separate processes, mostly outside the kernel. Processes communicate by passing messages. The kernel’s job is to handle message passing, interrupts, low-level processes, and sometimes I/O. Examples of this type of architecture include RC4000, AMOEBA, CHORUS, MACH, and Windows/NT (soon to be released). I could go on a long story about the relative merits of the two architectures, but suffice it to say that among people who design operating systems, the debate is basically settled. The microkernel has won, MINIX is a microkernel-based system. The file system and memory management are separate processes running outside the kernel. Drive I/O are also separate processes. LINUX is a monolithic system. A big step back to the 1970s. 2. PORTABILITY MINIX was designed to be reasonably portable, and has been ported from the Intel line to the 680×0 (Atari, Amiga, Macintosh), the SPARC, and the ns32016. LINUX is tied pretty firmly to the 80×86. And that’s the wrong path. Don’t get me wrong, it’s not that I’m not happy about LINUX’s existence. It will get rid of all those people who want to turn MINIX into BSD. But in all honesty, I would advise anyone who wants a *free* and **MODERN** operating system to look for a portable, microkernel-based OS, perhaps something like GNU. Andy Tanenbaum ([email protected])“I knew I had to defend my honor, so I replied,” said Tovalds:

From: [email protected] (Linus Benedict Torvalds) Subject: RE: LINUX is obsoleteDate: 29 Jan 92 23:14:26 GMT Organization: University of Helsinki Well, with a subject like that I’m afraid I’ll have to reply. Apologies to the minix users who have heard too much about Linux. I’d love to *ignore the hook*, but… it’s time for a good fight! In message «[email protected]» [email protected] (Andy Tanenbaum) writes: >I’ve been in the US for a couple of weeks, so I haven’t commented much on LINUX (not that I would have said much if I’d been at home), but for what it’s worth I have a couple of comments to make now. >As many of you know, MINIX is a hobby for me, something I do in the evenings when I’m tired of writing books and there are no major wars, revolutions, or Senate hearings to follow live on CNN. My real job is as a professor and researcher in the area of operating systems. Is that an excuse for MINIX’s limitations? Sorry, but you lose: I have many more excuses than you do, and yet Linux leaves MINIX in the dust on almost every level. Not to mention that most of the best Minix code seems to have been written by Bruce Evans. Answer 1: You’d be doing Minix as a hobby: look who makes money with Minix and who gives Linux away. Then come and talk to me about hobbies. Make Minix freely available and one of my main objections will disappear. Linux has definitely been a hobby (but a serious, good one) for me: I don’t make money from it and it’s not even part of my university studies. I did it all in my spare time and on my own machine. Answer 2: Your job is that of a professor and researcher. That’s a great excuse for some of the Minix hoaxes. I can only hope (and assume) that Amoeba doesn’t suck like Minix. >1. MICROKERNEL VS. MONOLITHIC SYSTEM It’s true, Linux is monolithic, and I agree that the microkernel is nicer. If you had limited yourself to arguing less, I probably would have agreed with almost everything you wrote. From a theoretical (and aesthetic) point of view, Linux loses. If the GNU kernel had been ready last spring, I wouldn’t have even started my project: the fact is that it wasn’t ready, and it still isn’t. Linux definitely wins on this front: it’s available here and now. >MINIX is a microkernel-based system, [part deleted, but not so much as to confuse the issue] LINUX is a monolithic system. If this were the only criterion for evaluating the “goodness” of a kernel, you’d be right. What you don’t say, however, is that MINIX doesn’t play the microkernel very well and has problems with real (in-kernel) multitasking. If I had created an operating system that had problems with a multithreaded file system, I wouldn’t condemn the others so lightly. In fact: I’d do my best to make people forget about my fiasco. [Yes, I know there are hacks for multithreading in Minix, but they are just hacks, and Bruce Evans tells me there are a lot of problems.] >2. PORTABILITY “Portability is for people who can’t write new programs.” The fact is that Linux is more portable than Minix. I hear you say, “What?” That’s true, but not in the way you mean: I made Linux as standards-compliant as possible (without having POSIX standards in front of me). Porting things to Linux is generally much easier than porting them to Minix. I agree that portability is a good thing, but only when it actually makes sense. There’s no point in trying to make an operating system overly portable: adhering to a portable API is enough. The whole idea of an operating system is to take hardware features and hide them behind a layer of high-level calls. That’s exactly what Linux does: it uses a larger subset of 386 features than other kernels seem to. Of course, this makes the kernel less portable, but it also makes the architecture much simpler. It’s the compromise that made Linux possible. I also agree that Linux takes non-portability to the extreme: I got my 386 last January, and Linux was partly a project to learn about the machine. A lot of things should have been done more portable, if it had been a real project. But I’m not making excuses: it was a design decision, and last April, when I started the project, I didn’t think anyone else would want to use it. I’m happy to say I was wrong, and since my sources are freely available to everyone, anyone can try to port it, though it won’t be easy. Linus P.S.:> Sorry if I seemed too aggressive. Minix is fine if you have nothing else available. Amoeba might be a viable option if you have 5-10 spare 386s, but that’s certainly not my case. I don’t usually jump into an online argument, but when Linux is mentioned, I get touchy 🙂

Linux, ever on the rise: the X Window

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.

Linux and the network

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/

http://zeniv.linux.org.uk/~telsa/index.html

https://bnnfeed.com/alan-cox/

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