Welcome to LWN.net
The following subscription-only content has been made available to you
Free trial subscription
Try LWN for free for 1 month: no payment
April 12, 2023
This article was contributed by Lars Wirzenius
My name is Lars Wirzenius, and I was there when Linux started. Linux
is now a global success, but its beginnings were rather more humble.
These are my memories of the earliest days of Linux, its creation, and the
start of its path to where it is today.
started my computer science studies at the University
of Helsinki in the fall of 1988, and met Linus Torvalds, who was the
other new Swedish speaking student in computer science that year. Toward
the end of that first year, we had gotten access to a Unix server, and I
accidentally found Usenet, the discussion
system, by mistyping rm as rn, the Usenet reader. I told
Linus about it and we spent way too much time exploring this.
After the first year, we both went away to do the mandatory military
service, though in different places. We returned to our university
studies in the fall of 1990, and both took the course on C and Unix
programming, which included a fair bit of theory of the Unix kernel
architecture as well. This led to us reading about other operating
system kernels, such as QNX and
Plan 9. Linus
and I discussed with some enthusiasm how an operating system
should be built correctly. We had all the overconfidence of
20-year-old second-year university students. Everyone is better off
that this wasn’t recorded for posterity.
In January 1991, Linus bought his first PC from a local
that assembled computers from parts. The PC had a 386 CPU, which was
fancy at that time, because
Linus wanted to explore multitasking. Also, since he came from a
with a 32-bit Motorola 68008 CPU, he wanted a 32-bit CPU, and did
not want to step down to a 16-bit one, so a 286 was not an option.
Linus’s first PC had a whopping 4 megabytes of RAM and a hard drive.
He got a copy of the game Prince of Persia, which occupied most
of his spare time for the next couple of months. He later also bought
a copy of MINIX, because after
using Unix at the university, he wanted something like that at home as
As and Bs
After finishing the game, Linus started learning Intel assembly
language. One day he showed me a program that did multitasking. One
task or thread would write a stream of the letter “A” on the screen, the
other “B”; the context switches were visually obvious when the stream
of As became Bs. This was the first version of what would later become
known as the Linux kernel.
Linus would later expand the program, and write most of it in C.
During this time, late spring of 1991, I wrote an implementation of the C
for him, as he hadn’t yet learned how to write functions with variable
argument lists. I wanted to spare him the pain of having a different
function for every type of value to write out. The core of this code is
still in the kernel, as
As time went on, Linus made his fledgling kernel better and kept
implementing new things. After a while, he had drivers for the keyboard and
the serial port, emulation of VT100 terminal escape sequences
for the screen, and could use it to dial via a modem to the university to
read Usenet from home. Science fiction!
One day, Linus accidentally attempted to use his hard drive to dial the
university, resulting in his master boot sector starting with
“ATDT” and the
university modem-pool phone number. After recovering from this, he
implemented file permissions in his kernel.
In August 1991, Linus mentioned his new kernel in public
for the first time, in the comp.os.minix newsgroup. This
included the phrase “
I’m doing a (free) operating system (just a hobby,“. Such humility.
won’t be big and professional like gnu)
The system was initially called Freax. A few weeks later,
Linus asked Ari Lemmke, one of
the administrators of ftp.funet.fi, to do an upload of the first
tar archive. Ari chose the name Linux. The initial
version still contains the original name embedded in one of the
During this time, people were interested in trying out this new
thing, so Linus needed to provide an installation method and
instructions. Since he only had one PC, he came to visit to
install it on mine. Since his computer had been used to develop Linux,
which had simply
grown on top of his Minix installation, it had never actually been
installed before. Thus, mine was the first PC
where Linux was ever installed. While this was happening, I was taking
a nap, and I recommend this method of installing Linux: napping, while
Linus does the hard work.
The first releases of Linux used a license that forbade commercial
use. Some of the early contributors suggested a change to a free-software
license. In the fall of 1991, Richard Stallman visited
Finland and I took Linus to a talk given by Stallman. This, the
pressure from contributors, and my nagging eventually convinced Linus
to choose the GNU GPL license instead, in early 1992.
Over the Christmas break, Linus implemented virtual memory in Linux.
This made Linux a much more practical operating system on cheap
machines with little memory.
The year 1992 started with the famous debate with Andrew
Tanenbaum, who is a university professor and the author of MINIX. He had
some opinions about Linux and its architecture. Linus had opinions on
MINIX. The debate has been described as a flame war, but was actually
rather civil in hindsight.
More importantly for the future success of Linux was that the X11
system was ported to it, making 1992 the year of the Linux desktop.
I had chosen to contribute on the community side, rather than to the
kernel directly, and helped answer questions, write documentation, and
such. I also ran a short-lived newsletter about Linux, which is mainly
interesting for publishing the first ever interview with
Linus. The newsletter was effectively replaced by the
The first Linux distribution was also started in 1992:
Linux System or SLS. The next year, SLS morphed into Slackware, which
inspired Ian Murdock to start Debian in 1993, in order to explore a
more community-based development structure. A few other distributions would
follow in the
years to come.
In 1993, both Linus and I got hired as teaching assistants at the
university. We got to share an office. That room had a PC, which Linus
took over, and used for Linux development. I was happy with a DEC
terminal for Usenet access.
One day, Linus was bored and the PC at work felt slow. He spent the
day rewriting the Linux kernel command-line parser in assembly
language, for speed. (That was, of course, quite pointless, and the
parser would later be rewritten again in C, for portability. Its speed
does not matter.) A couple of years later, he spent days playing
Quake, ostensibly to stress-test kernel memory management, although
that was with a newer PC. Much fun was had in that room, and there were no
whatsoever. None at all.
At some point, Linux gained support for Ethernet and TCP/IP. That meant
one could read Usenet without having to use a modem. Alas, early Linux
networking code was occasionally a little rough, having been written
from scratch. At one point, Linux would send some broken packets that
took down all of the Sun machines on the network. As it was difficult to get
the Sun kernel fixed, Linux was banned from the university network
until its bug was fixed. Not having Usenet access from one’s desk is a
In the spring of 1994 we felt that Linux was done. Finished. Nothing
more to add. One could use Linux to compile itself, to read Usenet, and
run many copies of the xeyes program at once. We
decided to release version 1.0 and arranged a release event. The
Finnish computer press was invited, and a TV station even sent a crew. Most
of the event consisted of ceremonially compiling Linux 1.0 in the
background, while Linus and others spoke about what Linux was and what it
was good for. Linus explained that commercial Unix for a PC was so
expensive that it was easier to write your own.
In 1995 Linus and I did a software engineering course at the university,
which mostly consisted of a large practical project. This was built on top
of Linux, of course. I insisted that a version-control system be used. I
had witnessed students in earlier courses do the shouting kind of version
control: the students shared a source tree over NFS and shouted “I’m
editing this file” when they were changing something. This did not seem
like an effective method to me, so I insisted on CVS,
which I’d just learned about. This experience is why Linus dislikes CVS and
for years refused to use any version control beyond uploading tar balls to
That year was also when Linux was first ported to a new architecture
by Linus. He’d been given a DEC Alpha machine. I would later get the
machine to use as a terminal for reading Usenet. Other people ported
Linux to other architectures, but that did not result in me getting any
more machines to read Usenet on.
In 1997 Linus graduated and moved to the US to take a job at
Transmeta. I took a
job at a different university in the Helsinki area.
In the following years, many things happened. It turned out that there
were still a few missing features from Linux, so people worked on
those. The term “open source” was coined and IBM invested a ton of money in
Linux development. Netscape published a version of its web browser as
open source. Skipping a few details and many years, open source basically
took over the world. LWN was started and covered much of this history on a
In 1991, Linus wrote that Linux “
won’t be big and professional“.
In 2023. Linux is running on every continent, on every ocean, on billions
of devices, in orbit, and on Mars. Not bad for what started as two threads,
writing streams of As and Bs on the screen.
Did you like this article? Please accept our
trial subscription offer to be
able to see more content like it and to participate in the discussion.
(Log in to post comments)