The early days of Linux
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.
I 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 shop that assembled computers from parts. The PC had a 386 CPU, which was relatively fancy at that time, because Linus wanted to explore multitasking. Also, since he came from a Sinclair QL 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 well.
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 sprintf() function 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 snprintf().
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,
won't be big and professional like gnu)
". Such humility.
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
source files.
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.
1992
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 comp.os.linux.announce newsgroup.
The first Linux distribution was also started in 1992: Softlanding 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 pranks 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 great motivator.
1.0
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 FTP sites.
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 week-by-week basis.
In 1991, Linus wrote that Linux "won't be big and professional
like gnu
".
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.
Index entries for this article | |
---|---|
GuestArticles | Wirzenius, Lars |
The early days of Linux
Posted Apr 12, 2023 17:27 UTC (Wed)
by ccchips (subscriber, #3222)
[Link]
Posted Apr 12, 2023 17:27 UTC (Wed) by ccchips (subscriber, #3222) [Link]
The early days of Linux
Posted Apr 12, 2023 18:04 UTC (Wed)
by Ndjenks (guest, #164469)
[Link] (3 responses)
Posted Apr 12, 2023 18:04 UTC (Wed) by Ndjenks (guest, #164469) [Link] (3 responses)
The early days of Linux
Posted Apr 12, 2023 18:29 UTC (Wed)
by flussence (guest, #85566)
[Link] (1 responses)
Posted Apr 12, 2023 18:29 UTC (Wed) by flussence (guest, #85566) [Link] (1 responses)
The early days of Linux
Posted Apr 14, 2023 21:02 UTC (Fri)
by Ndjenks (guest, #164469)
[Link]
Posted Apr 14, 2023 21:02 UTC (Fri) by Ndjenks (guest, #164469) [Link]
The early days of Linux
Posted Jul 3, 2023 20:15 UTC (Mon)
by n7ekg (guest, #165912)
[Link]
Posted Jul 3, 2023 20:15 UTC (Mon) by n7ekg (guest, #165912) [Link]
The early days of Linux
Posted Apr 12, 2023 18:39 UTC (Wed)
by amacater (subscriber, #790)
[Link]
Posted Apr 12, 2023 18:39 UTC (Wed) by amacater (subscriber, #790) [Link]
You could run an ISP using only those HOWTOs - I know because myself and a good friend basically built a small ISP using only that documentation until we could get on the Internet. Thanks Lars for sacrificing a machine to someone else's pet student project and kickstarting everyone else.
The early days of Linux
Posted Apr 12, 2023 20:02 UTC (Wed)
by iabervon (subscriber, #722)
[Link]
Posted Apr 12, 2023 20:02 UTC (Wed) by iabervon (subscriber, #722) [Link]
The early days of Linux
Posted Apr 12, 2023 20:11 UTC (Wed)
by halla (subscriber, #14185)
[Link]
Posted Apr 12, 2023 20:11 UTC (Wed) by halla (subscriber, #14185) [Link]
But got together with my wife (and now I'm, her wife, all of thirty years later) and we got a stack of SLS floppies from our neighbour in the converted-to-appartments-convent-school appartment where we lived, back then (every school room was converted into a living/kitching + bedroom + bathroom).
He gave my wife those 3.5" disks because she liked nethack, and knew I was being re-schooled into an Oracle 4GL programmer, at the time. Our first child was coming up...
We managed to boot up and install Linux back then in 1993, and never looked back. Well, I'm looking back now, but whatevs. Linux Journal. gui toolkits, windowmaker, fvwm, wordperfect for Unix, there's been so much!
The early days of Linux
Posted Apr 12, 2023 22:09 UTC (Wed)
by leromarinvit (subscriber, #56850)
[Link]
Posted Apr 12, 2023 22:09 UTC (Wed) by leromarinvit (subscriber, #56850) [Link]
I'd like to nominate this gem as QOTW. It also reminds me of another recent article here, which quoted Rebecca Giblin saying (about Cory Doctorow) "if he were here, he would say 'please don't do that'". I imagine that might be applicable here as well...
Thank you, Lars, for this wonderfully written piece of history!
The early days of Linux
Posted Apr 12, 2023 23:21 UTC (Wed)
by csigler (subscriber, #1224)
[Link] (5 responses)
Posted Apr 12, 2023 23:21 UTC (Wed) by csigler (subscriber, #1224) [Link] (5 responses)
The early days of Linux
Posted Apr 13, 2023 5:53 UTC (Thu)
by bof (subscriber, #110741)
[Link] (1 responses)
Posted Apr 13, 2023 5:53 UTC (Thu) by bof (subscriber, #110741) [Link] (1 responses)
I miss Andy Glew and Terje Mathisen penning hyper insightful articles on processor architecture and optimisations, on comp.arch
That's about it...
The early days of Linux
Posted Apr 13, 2023 16:30 UTC (Thu)
by anton (subscriber, #25547)
[Link]
Just resubscribe to comp.arch. Terje Mathisen is still active, although Andy Glew isn't.
Posted Apr 13, 2023 16:30 UTC (Thu) by anton (subscriber, #25547) [Link]
The early days of Linux
Posted Apr 13, 2023 6:11 UTC (Thu)
by jem (subscriber, #24231)
[Link] (1 responses)
Posted Apr 13, 2023 6:11 UTC (Thu) by jem (subscriber, #24231) [Link] (1 responses)
The early days of Linux
Posted Apr 13, 2023 20:20 UTC (Thu)
by klossner (subscriber, #30046)
[Link]
Posted Apr 13, 2023 20:20 UTC (Thu) by klossner (subscriber, #30046) [Link]
The early days of Linux
Posted Apr 13, 2023 23:29 UTC (Thu)
by jschrod (subscriber, #1646)
[Link]
Posted Apr 13, 2023 23:29 UTC (Thu) by jschrod (subscriber, #1646) [Link]
The flamers and AOL me-toos have gone, to Facebook, Twitter and other venues.
Currently it's similar to the late 80s, and I like that. ;-)
The early days of Linux
Posted Apr 13, 2023 2:09 UTC (Thu)
by hendry (guest, #50859)
[Link]
Posted Apr 13, 2023 2:09 UTC (Thu) by hendry (guest, #50859) [Link]
The early days of Linux
Posted Apr 13, 2023 6:25 UTC (Thu)
by bof (subscriber, #110741)
[Link]
Posted Apr 13, 2023 6:25 UTC (Thu) by bof (subscriber, #110741) [Link]
Still remember creating SLS install disks, downloaded through the University FTP access, getting them to work and then just cloning and compiling for a few years what came up afterwards, who needs distros actually... Incredible that you could do all that back then on a 386 with just iirc 8 MB of RAM, and half a Gig or so of disk.
Never looked back to the previous OSses I ran, because - why?
P.S.: Lars, remember our CeBIT booth backroom hacking on Kannel, early 00s? It was such a joy working with you on that back then!
The early days of Linux
Posted Apr 13, 2023 6:27 UTC (Thu)
by ccezar (subscriber, #2749)
[Link]
Posted Apr 13, 2023 6:27 UTC (Thu) by ccezar (subscriber, #2749) [Link]
The early days of Linux
Posted Apr 13, 2023 8:14 UTC (Thu)
by pmatilai (subscriber, #15420)
[Link]
Posted Apr 13, 2023 8:14 UTC (Thu) by pmatilai (subscriber, #15420) [Link]
The early days of Linux
Posted Apr 13, 2023 8:36 UTC (Thu)
by rsidd (subscriber, #2582)
[Link] (9 responses)
Posted Apr 13, 2023 8:36 UTC (Thu) by rsidd (subscriber, #2582) [Link] (9 responses)
The early days of Linux
Posted Apr 13, 2023 8:39 UTC (Thu)
by rsidd (subscriber, #2582)
[Link] (8 responses)
Posted Apr 13, 2023 8:39 UTC (Thu) by rsidd (subscriber, #2582) [Link] (8 responses)
corbet is clearly a C programmer; his love of semicolons indicates that.
Semicolons
Posted Apr 13, 2023 13:31 UTC (Thu)
by corbet (editor, #1)
[Link] (6 responses)
Posted Apr 13, 2023 13:31 UTC (Thu) by corbet (editor, #1) [Link] (6 responses)
Semicolons
Posted Apr 13, 2023 14:42 UTC (Thu)
by Wol (subscriber, #4433)
[Link]
Posted Apr 13, 2023 14:42 UTC (Thu) by Wol (subscriber, #4433) [Link]
FORTRAN - and I can tell it's warped my mind :-)
Cheers,
Wol
Semicolons
Posted Apr 14, 2023 1:54 UTC (Fri)
by Cyberax (✭ supporter ✭, #52523)
[Link] (3 responses)
Posted Apr 14, 2023 1:54 UTC (Fri) by Cyberax (✭ supporter ✭, #52523) [Link] (3 responses)
Since we're quoting Linus today: "Yeah, yeah, most _practical_ versions of Pascal ended up having all the stuff necessary to break structure, but as you may be able to tell, I was one of the unwashed masses who had to write in "standard Pascal" in my youth. I'm scarred for life"
Semicolons
Posted Apr 14, 2023 4:27 UTC (Fri)
by rsidd (subscriber, #2582)
[Link] (1 responses)
Posted Apr 14, 2023 4:27 UTC (Fri) by rsidd (subscriber, #2582) [Link] (1 responses)
Semicolons
Posted Apr 17, 2023 1:02 UTC (Mon)
by mathstuf (subscriber, #69389)
[Link]
Posted Apr 17, 2023 1:02 UTC (Mon) by mathstuf (subscriber, #69389) [Link]
Semicolons
Posted May 15, 2023 5:44 UTC (Mon)
by sammythesnake (guest, #17693)
[Link]
Posted May 15, 2023 5:44 UTC (Mon) by sammythesnake (guest, #17693) [Link]
Thankfully, I understand that my cohort was the last year before they switched to using that new fangled "Java" thing, which despite valid criticisms was at least a great language for learning how to "do OOP right".
Standard Pascal is not, IMNSHO a "great language" for really anything other than being less brain damaging than my later experience having to use that prehistoric dinosaur FORTRAN - and because it was in the context of stick-in-the-mud physicists at a university, it was a pretty early flavour, too (which at least *had strings* as of FORTRAN77 in '78, 2 decades before that Pascal course!)
I'm mostly Ok now, though. *twitch*
The early days of Linux
Posted Apr 13, 2023 14:44 UTC (Thu)
by Klaasjan (subscriber, #4951)
[Link]
Posted Apr 13, 2023 14:44 UTC (Thu) by Klaasjan (subscriber, #4951) [Link]
The early days of Linux
Posted Apr 13, 2023 14:00 UTC (Thu)
by Tet (subscriber, #5433)
[Link] (1 responses)
Posted Apr 13, 2023 14:00 UTC (Thu) by Tet (subscriber, #5433) [Link] (1 responses)
The early days of Linux
Posted Jul 3, 2023 19:04 UTC (Mon)
by n7ekg (guest, #165912)
[Link]
Posted Jul 3, 2023 19:04 UTC (Mon) by n7ekg (guest, #165912) [Link]
I did a distro that was elm/uucp-centric, but lost all of my old software and archives in Hurricane Ivan. :(
The early days of Linux
Posted Apr 13, 2023 17:10 UTC (Thu)
by karim (subscriber, #114)
[Link]
Posted Apr 13, 2023 17:10 UTC (Thu) by karim (subscriber, #114) [Link]
The early days of Linux
Posted Apr 14, 2023 6:24 UTC (Fri)
by wtarreau (subscriber, #51152)
[Link] (1 responses)
Posted Apr 14, 2023 6:24 UTC (Fri) by wtarreau (subscriber, #51152) [Link] (1 responses)
Your story about multi-tasking with "A" and "B" is excellent. I did something comparable when trying to turn an XT motherboard to SMP. I noticed the 8087 and 8088 almost had the same pinout, and using a pair of 74LSxx chips solder on top of it with the 8088 pins bent, I managed to run a second 8088 inserted into the 8087 socket. I had to invert its A19 pin so that it could boot to a RAM address that I could control (just below 512kB) before I released the RST pin. I had zero experience with SMP by then and figured nothing in my MS-DOS was designed to support this. I remember thinking "if at least it could format floppies in the background" (yes by then that was a common and extremely boring task). So I managed to make this second CPU blink the floppy drive's LED by writing to 3F2 IIRC, and could confirm that it continued to do so while I was starting a graphics game on the main CPU. Then I tried other stuff such as switching the CGA text attributes in the frame buffer to change colors on screen. That was totally useless but it felt absolutely awesome to me to imagine that this second CPU with 8 ot 10 pins bent and soldered to mollested 74LSxx was actually working fine there and sharing bus access with the primary CPU. So I can definitely understand the joy you and Linus experienced when seeing this A/B on screen!
The early days of Linux
Posted Jun 25, 2023 20:27 UTC (Sun)
by nix (subscriber, #2304)
[Link]
Posted Jun 25, 2023 20:27 UTC (Sun) by nix (subscriber, #2304) [Link]
(... I'm also jealous that you could afford to risk a whole 8088 like that :) )
The early days of Linux
Posted Apr 14, 2023 10:34 UTC (Fri)
by kena (subscriber, #2735)
[Link]
Posted Apr 14, 2023 10:34 UTC (Fri) by kena (subscriber, #2735) [Link]
The early days of Linux
Posted Apr 14, 2023 13:55 UTC (Fri)
by NightMonkey (subscriber, #23051)
[Link]
Posted Apr 14, 2023 13:55 UTC (Fri) by NightMonkey (subscriber, #23051) [Link]
The early days of Linux
Posted Apr 14, 2023 14:45 UTC (Fri)
by PhilippReisner (subscriber, #153492)
[Link]
Posted Apr 14, 2023 14:45 UTC (Fri) by PhilippReisner (subscriber, #153492) [Link]
The early days of Linux
Posted Apr 15, 2023 14:21 UTC (Sat)
by ermo (subscriber, #86690)
[Link]
Posted Apr 15, 2023 14:21 UTC (Sat) by ermo (subscriber, #86690) [Link]
Thank you for the wonderful article and thank you for the time and effort you (and your peers of the same persuasion) put into Linux and its documentation over the years.
It is primarily thanks to said efforts that yours truly got hooked on Linux and never looked back.
The early days of Linux
Posted Apr 16, 2023 17:27 UTC (Sun)
by iustin (subscriber, #102433)
[Link]
Posted Apr 16, 2023 17:27 UTC (Sun) by iustin (subscriber, #102433) [Link]
And yes, the Linux Documentation Project was awesome. Like another commenter, I also built small ISPs based on nothing more than one or two Linux machines, lots of serial port expanders, and reading many, many man pages.
Thank you for the trip down the memory lane, much appreciated!
The early days of Linux
Posted Apr 23, 2023 14:55 UTC (Sun)
by madscientist (subscriber, #16861)
[Link]
Posted Apr 23, 2023 14:55 UTC (Sun) by madscientist (subscriber, #16861) [Link]
I'm not sure I ever fessed up to my bosses exactly how my system got corrupted :).
The early days of Linux
Posted Apr 27, 2023 13:45 UTC (Thu)
by jwr (guest, #164834)
[Link]
Posted Apr 27, 2023 13:45 UTC (Thu) by jwr (guest, #164834) [Link]
Thank you Lars for this nice writeup, it brings back memories of installing Slackware 1.0 in 1993.
The early days of Linux
Posted Jul 3, 2023 20:15 UTC (Mon)
by n7ekg (guest, #165912)
[Link]
Posted Jul 3, 2023 20:15 UTC (Mon) by n7ekg (guest, #165912) [Link]
I tried 386/BSD, but I wasn't happy with having to wait 6 months for releases, so when I saw Linus' famous "free OS" email in late 1991 (October, as I recall), I jumped on board. Haven't looked back since - I've even been thinking about reviving my UUCP-over-SSH stuff. :)
I ported a lot of software, even ported my own version of curses that I had written years before for MS-DOS, but ncurses won the day. It's been a fun ride, seeing all these distributions, the freedom of choice, the different windowing managers, and lots and lots of apps! From one of my first Linux boxes running 0.99+ on a 486DX4-100 with 16 MB of RAM (the motherboard was sitting on top of a pizza box), to today's monster servers and laptops, it's been an awfully fun journey!
Thanks to Lars, Ted, Remy, Peter, Ian, Linus, and all the rest whose names I can't recall at the moment!
The early days of Linux
Posted Oct 31, 2023 3:35 UTC (Tue)
by louisdaoren (guest, #167736)
[Link]
Posted Oct 31, 2023 3:35 UTC (Tue) by louisdaoren (guest, #167736) [Link]
What a great read!
Posted Mar 2, 2025 15:13 UTC (Sun)
by yatt-code (guest, #176296)
[Link]
Posted Mar 2, 2025 15:13 UTC (Sun) by yatt-code (guest, #176296) [Link]