"A kernel by itself gets you nowhere"
Linux 0.01 turned thirty-five on 17 September. The history is stranger — and more precise — than the anniversary coverage suggests.
The most honest sentence in the Linux origin story was written by the person who started it. In the release notes for Linux 0.01, dated 17 September 1991, Linus Torvalds wrote: "a kernel by itself gets you nowhere." He then listed everything else a working system required: a shell, a compiler, a C library, text utilities. Almost all of them, he noted, were GNU software.
That single sentence contains most of what the anniversary coverage usually gets wrong. Linux 0.01 was not the birth of a complete operating system. It was a small, incomplete, non-portable kernel that could slot into a space that someone else had spent eight years preparing.
What 0.01 actually was
The release notes are worth reading for their specificity. The system ran on one narrow class of hardware: 386 AT machines with VGA or EGA, an AT-compatible disk controller, and — in practice — a Finnish keyboard layout. `mount` and `umount` were not yet implemented. There were no general-purpose binaries to download; users compiled the source on their own machines. Torvalds described the release as primarily intended for reading, with frequent changes expected and a future production version that would "probably be very different from this one."
This is not a modest disclaimer protecting against early criticism. It is an accurate technical description. The hardware list alone explains what kind of project this was: not a universal platform, but a solution for one specific piece of machinery. The i386 specificity was a deliberate trade-off. By targeting a single architecture with known paging, segmentation, and task-switching capabilities, Torvalds could build something that worked without writing general abstractions first. Portability was the bill presented later.
The kernel did have real structure. Process primitives — `fork`, `exit`, basic scheduling — were there. So were trap handling, low-level drivers, a filesystem, and memory management. Torvalds chose a monolithic design: filesystem, memory management, and kernel code compiled together; system calls implemented as direct function calls rather than message-passing between isolated servers. Less modular than MINIX. Faster to get running.
"Get it working fast" was the stated priority. The architecture reflected it.

The world that was waiting
GNU had been under construction since 1983. Richard Stallman's September 1983 announcement described the project as a complete Unix-compatible system — kernel plus editor, shell, C compiler, linker, assembler, and utilities. By 1991, the distribution of work between those parts had become asymmetric.
The GNU tools were not theoretical. GCC was a widely used compiler. Bash was a working shell. The GNU text utilities, assembler, and linker were in active use on existing Unix systems. According to the GNU project's own history, by around 1990 the kernel was the remaining major gap.
That gap had a specific shape: GNU was building Hurd, a kernel designed as a collection of servers running above the Mach microkernel. The architectural logic was elegant — keep the core small, run operating system services as isolated user-space processes that could be inspected with GDB like ordinary programs. The execution turned out to be harder than the design. Mach's free distribution terms took time to sort out. Multithreaded servers communicating through messages proved difficult to debug reliably. A 1990 GNU announcement still described the project as not doing kernel work while there was hope of using Mach; by late 1991, Hurd-on-Mach was the official plan. It was not yet running.
This timeline matters because it changes the shape of what happened. Linux did not arrive before a finished Hurd. It arrived during a difficult transition from design to execution — a transition that was, at the time, hard to see from the outside.
Torvalds acknowledged the dependency directly. The release notes specify that a practical working system requires Bash, GCC, and GNU utilities around the kernel. An October 1991 installation guide for Linux named them explicitly: the Bash source, GNU GCC, assembler and linker, headers, user-space interface, and GNU utilities. The technical name "GNU/Linux" for the combined system is a precision, not a naming dispute.
MINIX: teacher, not template
Andrew Tanenbaum built MINIX as a teaching system — a Unix V7-compatible operating system written from scratch, without AT&T code, whose source could be studied in a course. It was influential and practically useful. It was also, in 1991, not freely redistributable: the Prentice-Hall licence permitted limited copies for education and research, prohibited public source repositories, and required permission for commercial use.
Torvalds learned in the MINIX environment. He used the MINIX filesystem layout for pragmatic reasons — it was the filesystem he knew how to work with. His August 1991 Usenet announcement described Linux as MINIX-like, then immediately clarified that it contained no MINIX source. The 0.01 release notes make the same double point: no MINIX code inside, but MINIX still required to bootstrap the system — to compile it and create an initial root filesystem.
The two directions in which this history gets distorted are symmetrical. Linux was not conjured from nothing: MINIX provided a shared technical vocabulary, a course context, and a practical bootstrap environment. Linux was also not a copy of MINIX. Architecturally, Torvalds moved in the opposite direction. MINIX used message-passing and isolated components. Linux 0.01 chose the more direct monolithic structure.
The Usenet announcement was a technical question, not a launch
The post Torvalds made to `comp.os.minix` on 25 August 1991 — three weeks before the 0.01 release — is sometimes described as a product announcement. It reads differently. He asked MINIX users what they missed, reported that Bash 1.08 and GCC 1.40 had already been ported, invited replies, and noted that Linux would "probably never support anything other than AT hard disks." He explicitly flagged the i386-specificity.
That last hedge reads, in retrospect, as the project's most inaccurate prediction. But it explains why the announcement worked. Torvalds was not asking a general audience whether they were interested in a Unix-like system in the abstract. He was asking people who already used MINIX on 386 hardware whether they had specific things they wanted but didn't have. The question was narrow enough to be answerable. The code, when it appeared, was specific enough to compile, run, and criticize.

The distribution infrastructure matched the scope. In October 1991, Linux appeared via anonymous FTP at `nic.funet.fi` with source, documentation, and a minimal set of binaries. Usenet brought together the developers who already shared a reference environment; FTP made distribution practical. None of this was automatic — it required the code to be available, the target hardware to be recognizable, and the first task to be small enough for someone to complete and return a patch.
BSD: a genuine alternative, with a timing problem
The history of BSD in the early 1990s is not a story of one Unix losing to another. Berkeley's Net/2 was released in June 1991 and was technically serious — a long-accumulated body of Unix development with its own heritage. BSDi used that material for BSD/386. Unix System Laboratories began proceedings against BSDi and UC Berkeley in 1992 over claimed rights in the AT&T Unix heritage.
The lawsuit did not create Linux. It began after 0.01. But it makes a precise counterfactual point available: from 1992 onward, the legal future of a BSD-based distribution route became harder to predict for anyone building commercial or semi-commercial products around it. Linux, a new project without inherited AT&T lineage, carried no equivalent uncertainty. That was a favorable circumstance. It was not a cause. Linux still needed a licence, expanded hardware support, and enough users to form a functioning ecosystem.
The decision that actually mattered was in January 1992
Linux 0.01 had its own licence. Source had to remain available, but distribution for payment was forbidden. That restriction was not incidental — it ruled out the distribution models that could move the system beyond a small technical circle.
With version 0.12, in January 1992, Linux adopted GPLv2. Commercial distribution became possible under the condition that derivative source remained available. The licence now matched the GNU components already surrounding the kernel.
Shortly afterward, the first distributions appeared — MCC Interim Linux is among the early ones, built around 0.12. Their practical significance is straightforward: they turned a collection of kernel source, bootstrap tools, and individual GNU programs into something a person could install and maintain. Kernel, user space, licence, and distribution together form a usable system. Linux 0.01 was not the endpoint of the breakthrough; it was the connecting layer that made the endpoint reachable.
Three dates, not one birthday
The anniversary on 17 September is worth marking if it is marked precisely. On 25 August 1991, Torvalds made his project public in `comp.os.minix`. On 17 September 1991, the first public source release appeared. In January 1992, the GPL choice changed the distribution model in a way that mattered more than any single version number.
Compressing those three moments into one "birthday of the complete Linux operating system" loses the interesting part of the history. The September 1991 release was a small source drop for people who had a specific PC, MINIX installed, and the right development tools. That group was not large. It was technically exactly the group that could read code, send patches, and redistribute improvements through the same networks that had delivered the original.
A project can be too limited for ordinary users and precisely usable enough for its first contributors — at the same time. The limitations were not a weakness to explain away or a proof of unimportance. They defined the first circle of participants with some precision.
Torvalds's release notes knew this. A kernel by itself gets you nowhere. The sentence was not false modesty. It was a description of the work that remained, most of which had already been done by other people over the previous eight years, waiting for exactly this missing part.
Sources
Linux source and announcements
- Linux 0.01 release notes — Linus Torvalds, 1991. The primary document: hardware requirements, missing features, GNU dependencies.
- "What would you like to see most in minix?" — Linus Torvalds, comp.os.minix, 25 August 1991. The original Usenet announcement.
- Linux — A Free Unix-386 Kernel — Linus Torvalds, October 1991. Installation guide naming GNU dependencies explicitly.
- Historic Linux releases — Linux Kernel Archives. 0.01 source archive.
GNU Project
- Initial Announcement of the GNU Project — Richard Stallman, 27 September 1983. The founding document describing the planned complete Unix-compatible system.
- About the GNU Project — GNU Project. Section "The GNU Hurd" on the state of the kernel by 1990.
- An Incomplete GNU Hurd Timeline and The Hurd and Linux — Hurd development history and GNU/Linux naming.
MINIX
- MINIX Information Sheet — Andrew S. Tanenbaum, comp.os.minix, 1990. Licence terms and distribution restrictions.
Legal history
- Unix System Laboratories, Inc. v. Berkeley Software Design, Inc., 832 F. Supp. 790 (D.N.J. 1993) — The USL/BSD lawsuit that began after 0.01 in 1992.