#fundamentals #linux

From Unix to Linux

Mathieu Hadjimegrian Mathieu Hadjimegrian 6 min

An Android phone and an Ubuntu computer do not look much like a machine at Bell Labs in 1969. Both can run a Linux kernel, though, and Linux inherited ideas from the Unix system that began there. It would be tempting to draw a single arrow from Unix to Linux, as if one had simply been updated into the other. That skips the most interesting part of the story: another project built many of the tools, while a separate project supplied a new kernel.

A system people could share

Ken Thompson, Dennis Ritchie and their colleagues began developing Unix at Bell Labs in 1969. An operating system gives programs a way to use a computer's memory and devices, and gives people a way to work with files. Early Unix brought those pieces together on a machine that could be shared by more than one user.

A person could type commands into a shell, a program that starts other programs. Files lived in a hierarchy of directories. The details changed as Unix developed, but the idea of composing useful tools on top of a common system travelled well beyond its original computer.

C helped that travel. Ritchie developed the language alongside Unix, and much of the system was written in it. Code written in a higher-level language could be adapted to new machines more readily than code written entirely for one processor. Unix spread through research, education and commercial products; those paths did not all produce the same operating system.

This is where the name begins to blur. Unix can refer to the original Bell Labs work and the systems that followed it. Later, UNIX in capitals also became a name reserved for products certified against a specification. We will come back to that distinction. First, the missing piece between early Unix and Linux is GNU.

GNU: build something compatible, not copy Unix

Richard Stallman announced the GNU project in September 1983, and work began in January 1984. The name means “GNU's Not Unix”. The aim was a free operating system that could work in a Unix-like way. Here, free means the freedom to use, study, change and share software, not simply a price of zero.

An operating system needs more than a kernel. It needs tools to work with files, a compiler to turn source code into executable programs, libraries that programs rely on, and much more. GNU developed many such pieces. It was a separate effort, not a new release of Bell Labs Unix and not a project that began with Linux.

That matters because the story is sometimes shortened to “Linus Torvalds created Linux, then everyone got a free Unix”. By the time his kernel appeared, other people had already been building the surrounding tools for years.

1991: a kernel finds its company

In 1991, Linus Torvalds released Linux 0.01. Its release notes describe a kernel for a particular class of personal computers, not a finished desktop system. They also mention GNU software among the tools used alongside it. A kernel manages core work such as running processes, using memory and communicating with hardware. You do not browse the web or edit a document with a kernel alone.

Combining the Linux kernel with GNU tools and other software made complete systems possible. Many are called Linux distributions: each makes choices about installation, updates, libraries and the programs people actually use. “Linux” can therefore mean the kernel in a technical discussion or a whole distribution in everyday speech. “GNU/Linux” makes GNU's contribution to many such systems explicit. Neither name describes every piece of every product.

Linux was influenced by Unix-style ways of working, but it was not simply Unix's source code with a new name. The story is one of compatible ideas, independent projects and software brought together, not a straight family succession.

A growing project, and a changing rivalry

The kernel did not stay a small personal experiment. Contributors had to organise changes, review them and maintain versions as more people and organisations became involved. Kernel documentation describes a development process built around patches and maintainers. That is a different kind of work from writing a first working version: a change must still fit a system other people depend on.

Linux also became part of a wider contest over software platforms. A leaked 1998 Microsoft strategy memorandum discussed Linux and open-source software as a competitive phenomenon. It is evidence of how seriously one internal discussion took them, not proof that every statement in the memo was company policy. The relationship did not remain a simple story of enemies: in 2016, Microsoft announced that it was joining the Linux Foundation to collaborate with the open-source community. Competition and cooperation could exist at the same time.

The Linux name reaches very different devices

Ubuntu's first public release came in 2004. Its makers set out to make a Linux-based system easier to use and maintain for everyday computing. It is a distribution: the Linux kernel plus decisions about the rest of the software and how people receive updates. The name Ubuntu does not refer to a different kernel invented from scratch.

Android took Linux in another direction. Its architecture includes a Linux kernel, but the Android framework, services and apps above it are not simply an Ubuntu desktop squeezed into a phone. Sharing a kernel does not make their applications interchangeable. Once Linux became a foundation for such different systems, asking “does it run Linux?” became less informative than asking which complete system an application or device depends on.

UNIX certification is another question again. The Open Group certifies particular complete products against the Single UNIX Specification. Looking Unix-like is not, by itself, the same as holding that certification. That modern use of the name does not turn Linux into the next numbered release of the 1969 system.

From Unix came ideas about how to organise a useful operating system. GNU built free tools around many of those ideas. Linux supplied a kernel that could join them, and the resulting systems spread in different forms. If you now see “Linux” on a product description, look for the distribution or platform as well as the kernel: that tells you much more about what you can run and what someone will maintain. The next puzzle is how people coordinate changes to a kernel worked on by so many contributors. That is where Git enters the story.

Sources and further reading

Related Articles