What Is GNU/Linux?
Written by Troels Just
This article is licensed under the
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
The GNU/Linux operating system, most commonly known as “Linux”, is a UNIX-like computer operating system, consisting of a large collection of programs and libraries, a lot of which comes from the GNU project, and the Linux kernel.
GNU is a recursive acronym for “GNU’s Not Unix”. The GNU project was started by Richard M. Stallman (RMS) in 1983, with the goal to create a free operating system, free as in freedom, compatible with UNIX for everyone to use and share.
RMS has the philosophy that every computer user must have “four essential freedoms” regarding the software they use.
- 0. The freedom to run the software, as you see fit.
- 1. The freedom to study the source code, and change it as you see fit.
- 2. The freedom to make copies, and redistribute them to others.
- 3. The freedom to publish modified versions (including their source code).
With these four freedoms in mind, RMS came up with a concept called “copyleft”, which he used to write the GNU General Public License (GNU GPL). The GPL, and it’s sibling the LGPL, is the license that governs most of programs published by the GNU project, but it’s also used by a lot of other people, for example, Linus Torvalds uses the GPL for the Linux kernel.
In 1985, RMS founded the Free Software Foundation to support the free software movement, and the GNU project.
From it’s founding in 1985 to about 1995, the funds of which the Free Software Foundation received was used to employ programmers to write their published software. Today, there are thousands of volunteering individuals, and huge companies, writing free software. Today, the Free Software Foundation is primarily using the funds it receives, to work on legal issues, and promote the free software movement. For example, by the time of writing, RMS, and a few other people from the Free Software Foundation, are working on the third version of the GNU GPL.
The Linux kernel was not written by the GNU project. Linux is not a complete operating system; it’s the very core of an operating system, the kernel. A kernel allocates and manages computer resources in order to make it easier, for other programs to run; the kernel is basically a layer between the programs that you use, and the hardware of the computer.
In 1991, Linus Torvalds, was studying computer science at the University of Helsinki, in Finland. In order to learn more, about a certain type of computer, which he wasn’t that familiar with at the time (the IBM PC), he decided to create his own operating system, just for fun. While developing Linux, Linus used another UNIX-like operating system called Minix, written by Andrew Tanenbaum. Because of it’s copyright and design, Minix had a lot of limitations. Those limitations, was also one of the reasons, that Linus decided to write his own operating system, Linux.
On the 25th of August 1991, Linus posted a message in the comp.os.minix newsgroup, announcing that he were doing his own operating system, and he’d like to know, what other people liked, or disliked, about Minix. It only took a few hours, for the first response to arrive. After a few months of brewing in the newsgroups, Linux exploded on Linus, like an avalanche that was already on the move, and suddenly took a tremendous increase in speed. Already a year later, the Linux kernel consisted of more than 10,000 lines of code.
The original UNIX operating system consisted of a large number of separate programs that communicated with each other; this type of operating system design is called a micro kernel. The GNU project’s goal was to replace each of these proprietary UNIX programs with a “free” replacement. By 1990, they had replaced practically all of these programs; one remained though… the kernel. Not long before Linus Torvalds started Linux in 1991, the GNU project started the GNU Hurd, which they intended, to be the last piece of the puzzle, to make a complete free operating system.
The GNU project decided to use the micro kernel design for their free replacement kernel, the Hurd. However they ran into a lot of difficulties. The problem with the micro kernel design, is that it consists of a large collection of smaller programs, that send messages to each other, in order to communicate.
Mistakes in the order of which the messages are sent, can often lead to system instability, because the system doesn’t know, if it received a message from the file system handler, before or after it received a message from the shell interpreter.
People quickly realized that the GNU Hurd, wouldn’t get to a usable state within two or three years. So some people began to look around, for another alternative, and what they needed was already in existence.
Linux uses a so called monolithic kernel design, which means that the kernel is one entity, whereas with the micro kernel design, the kernel is divided up into a lot of smaller programs.
The monolithic kernel design is far less complex, compared to the micro kernel design. This allowed Linux to get to a stable point, fairly quickly. When Linus Torvalds decided to use the GNU GPL for Linux, people found themselves a “free” kernel, which they could use to fill in the gap in the GNU system. So when they put the Linux kernel together with the larger GNU system they had a 100% free operating system, GNU/Linux.