Actually, what is GNU/Linux? Where to begin?
— Actually, what is Linux?
— Linux, first of all, the operating system is another Windows. 😉

There are a huge number of different operating systems.

Windows Windows Mobile- from Microsoft
Solaris - from Sun Microsystems (Java developers)
Linux is a free operating system from a large number of creators around the world
FreeBSB - another free Unix-like operating system

For example, operating systems are used for mobile applications telephone sets, PDAs, ATMs, industrial supercomputers and other...

Linux was started by Linus Tovalds, who in 1991 posted on the Internet the first Linux kernel, which he developed based on the UNIX operating system.
Although the new operating system was very similar to UNIX, which began its development, one might say, in the middle of the 20th century, it nevertheless featured many interesting innovations and new capabilities.
One of the main features of Linux was the open source this operating system, on the basis of which any programmer could create his own “ideal” Linux operating system.

Linux (full name GNU/Linux, pronounced “gnu slash Linux”) is the general name for UNIX-like operating systems based on the kernel of the same name and libraries compiled for it and system programs, developed by the GNU Project.

The GNU/Linux operating system also often includes programs that complement this operating system, and application programs, making it a full-fledged multifunctional operating environment.

Unlike Microsoft Windows(Windows NT), Mac OS (Mac OS X) and commercial UNIX-like systems, GNU/Linux does not have a geographic development center. There is no organization that owns this system; There is not even a single coordination center. Programs for GNU/Linux are the result of the work of thousands of projects. Some of these projects are centralized, some are concentrated in companies, but most bring together programmers from all over the world who know each other only through correspondence. Anyone can create their own project or join an existing one and, if successful, the results of the work will become known to millions of users. Users take part in testing free software and communicate directly with developers, which allows them to quickly find and fix errors and implement new features.

Linux development is divided into 3 main branches:

Distributions based on Debian GNU/Linux

Such as Ubuntu, Kubuntu, Knoppix, Runtu and many others...

Debian and distributions based on it use the .deb package format (packages are similar to the .exe installation executables in WINDOWS NT) and the dpkg package manager.

Distributions based on RedHat or using the RPM package format

The most famous of them are CentOS, Fedora, Mandriva Linux (formerly called Mandrake),
PCLinuxOS, SUSE/openSUSE.

Slackware-like distributions

Slackware is one of the oldest GNU/Linux distributions. It is sometimes called “the most UNIX-like”. Fans of this distribution are credited with the following saying: “If you know Slackware, you know GNU/Linux. If you know Red Hat, then all you know is Red Hat." Developed and maintained by Patrick Volkerding. Slackware is famous for its simplicity and security.

There are distributions based on other package systems, as well as commercial versions of various Linux distributions for business.

In Russia and the CIS countries, the commercial market for operating systems has been almost completely captured by Microsoft Corporation.
So we have using Linux is still something of a fantasy, but there are many enthusiasts.
In Russia, GNU/Linux is used most often by hosting providers, programmers and simply experienced users.
In countries far and near abroad, Linux is used in schools, hospitals, research centers, private firms and corporations, military bases, etc. and so on.

Linux, moreover, is notable for the fact that it initially does not have a graphical interface, which is common to us in Windows, Macintosh and other operating systems.
The real “naked” Linux is a “black screen” with a command line into which you can enter various action commands to run programs, view files, etc.
This is very similar to working with BIOS or MS-DOS.

But there are a lot of graphical interfaces for Linux.
The Linux community is divided into two main camps - KDE and GNONE.
The graphical interface provides a certain “Desktop” (unlike Windows there can be as many as 4, or even more...), a menu similar to the “Start” menu, shortcuts, tray, explorer, etc.
Exists Windows emulator with the same name called “WINE”, for launching games and programs such as .exe and others.
There is also some Microsoft alternative Oficce is OpenOficce.org
There is a pure gaming emulator called Cedega.
Unfortunately, you can't play all the games developed for Windows. That's why avid gamers, installing Linux will experience difficulties. This is quite natural, because Linux was not created for pampering.
It is absolutely obvious that this operating system is much more productive and secure than the Windows to which we are so accustomed. There are practically no viruses under it. Viruses for Windows, after all, are written under “Line”. There are many Unix hosters in Russia and other countries. Maintaining a server under Linux is easier and cheaper than using an OS like Windows Server 2003 (although, it should be noted, the Windows Server family is a very interesting operating system, which in its core is very different from regular user Windows).
Despite all its uniqueness, Linux has a lot to learn from commercial software.
For example, the French campaign Mandriva, which develops distribution kits of the Mandriva Linux family, with support for many languages, decent driver packages and a simple, intuitive installation system, is very actively fighting for the popularization of Unix-like operating systems. You can purchase the corporate version of Mandriva, or you can download free version or order discs by mail for a purely nominal fee on various sites. There is a FLASH version of "Mandriva", you can order a branded flash drive with a pre-installed distribution, with which you can boot from Linux from almost any computer.

In my opinion, it’s best to start getting acquainted with Linux with Mandriva, and then try something more advanced, like Debian and Ubuntu...

Good luck with your Linux journey!))

Installing Linux

Since we have already started this conversation, let's talk about installation.))

The installation principle is approximately the same as for Windows.
For example, you downloaded a Linux distribution in an ico image, burned it with programs from Windows, like Alchohol 120%, Nero, UltraICO or any others.
You did it boot disk, which you insert into the CD/DVD drive and boot from it from under the BIOS.
For example, distributions like Mandriva and Ubuntu have a convenient graphical installation interface.
It's better to start with them.
In the initial menu (it looks quite stylish), first of all we change “Language” to “Russian”, then in one of the tabs we select the optimal resolution for our monitor.
There are other useful settings if you are interested in them. Click on “Install”, and then it’s a matter of technique...
If you were able to install Windows yourself, then install Ubuntu or Mandriva without any problems. 😉

During the installation process, you will need to create mount points (these are something like local drives). The installer can do this for you, and you can then edit the total amount of disk space allocated to the Linux installation.
If you want to experiment with mount points yourself, remember that you need at least 3-4 mount points. The first one has the SWAP file system, it is optional, of course, but I strongly recommend not to forget about it. And allocate at least 1 GB for SWAP. This mount point is used as a swap file. Something like an addition to random access memory for resource-intensive operations (similar to the page file in Windows - C:\pagefile.sys)
The remaining mount points must have the Ext3 file system; they will be used as local disks.
In general, it's best to first look at how the installer creates mount points. Give it at least 10 GB or more free space.
In any case, it is better to “bite off” this space in advance from local disks with the NTFS or FAT32 file system used in Windows.
You should be very careful when combining Windows and Linux on one screw, because... they are poorly compatible.
It's better to buy an additional one for Linux HDD if you don't have one. Money is money, but nerve cells are not restored.))
You can use a variety of file systems on one screw, the main thing is that Linux does not come into contact with the C drive. That's all.))
What is noteworthy is that the latest Mandriva distributions have full NTFS support (read and write). This is a very convenient feature.
Also, during installation, Mandriva will find any other operating systems existing nearby, on all hard drives.
When loading from that screw ( hard drive) on which Mandriva is installed, you will see a beautiful, convenient operating system selection menu.
Also, during installation, you will be asked to select a graphical interface (KDE, GNOME, etc.) and other parameters. If you can't decide on a choice, leave all the default settings.
Regarding graphics, I would choose KDE. He looks prettier somehow. In my opinion.
KDE (also called “Sneakers”) is such a youth interface. And GNOME is so rigid and conservative... S

Perhaps this is all you need to know for now.
And don't think that I'm actively encouraging you to use Mandriva Linux.
You can start your acquaintance with Linux or research into Unix-like ones with any distribution that you like.
After all, it is Linux and similar, so-called opensource projects that promote freedom of choice(!), in contrast to commercial software created with the goal of emptying our wallets. %)

I came across a proposal to translate the article GNU or Linux? by David Chisnall. The author proposes to figure out what is more in the OS - GNU or Linux? Actually, the translation of this article is offered to your attention.

GNU or Linux?

No other system has experienced such controversy surrounding its name. A huge number of flame wars began after the FSF announced that distributions such as Ubuntu and Fedora should be called GNU/Linux instead of Linux. Were they simply trying to make money from someone else's labor, or were their arguments valid?

To understand this issue, let's take a look at what happens when you run a GNU/Linux system - how much GNU code is used, and how much Linux code is used. The developer uses a huge amount of GNU code, for example GCC and GNU Make, but how fair is this for the end user?

What does the Core do?

Before you start figuring out where the GNU bits are and where the Linux bits are, it's important to understand what exactly the kernel does. The kernel performs two main tasks:

* Frees developers from having to learn low-level architecture. This requires the presence of a large number of device drivers and common interfaces to these drivers. A good example serves as a socket interface. When you write network code, you simply open a socket and write data to it. You don't have to worry about the type of user's network equipment and underlying protocols.

* Isolates running programs from each other. Isolating processes in a platform-independent manner is simple: Allow processes to use only unprivileged processor instructions. Unfortunately, this approach will make any I/O operations impossible for programs, rendering all programs meaningless. To overcome this limitation, there is a system call, a mechanism that allows a running process to request the kernel to perform a privileged operation on behalf of the requesting process. Common examples are writing to a file ( virtual disk), memory allocation, or screen or keyboard access.

The mechanism used by the system call is platform dependent. On the x86 platform, throwing an exception was a common method, although newer processors from AMD and Intel provide instructions that make this even faster. In this case, control passes to the kernel, which decides how to interpret the values ​​​​in registers and on the stack, as well as what actions to take.

A developer's perspective.

An important standard when programming for or on *NIX is the Unified UNIX Specification - a POSIX superset that includes everything that should be in a UNIX system. Code written according to this standard is portable among a number of UNIX-like systems.

The standard does not describe system calls. Instead, it describes C functions that wrap system calls. When the programmer wants to call the open() function, he doesn't need to know that he will put a pointer in EBX and a value of 2 in EAX, and then call interrupt 80h; The C standard library implements all these functions. Any non-trivial program on Linux will access the C library (libc, for short). There are several implementations of the C standard library. Each member of the BSD family has its own implementation, just like any commercial UNIX system. Which version of the C standard library is used on Linux depends on the usage; There are several versions for embedded systems, but most desktop Linux distributions use GNU libc.

In terms of the amount of code, the kernel and libc are almost equal. For two, they provide a developer interface to the system. Since the standard defines only C interfaces and not system calls, most code is written using the standard C library. This rule is also true for other languages; if you, for example, run some java or python code, then it will access the kernel through the C library. Some languages ​​have their own standard library from the GNU Project. For example, any C++ code will use GNU libstc++ on GNU/Linux platforms. Some distributions also include GNU implementations for Java libraries, although this practice is no longer as popular given that Sun versions have become open source. Even if you use Sun Java libraries, you still use GNU libc on those platforms for any Java application.

C C++ has even more nuances than other languages. When you link two modules (for example, an executable file and a library), several standards describe the interaction model between these two modules. When calling a function from another module, you must explicitly determine the order of the arguments on the stack and in registers, who will clear the memory later, and so on. In C++, many things must be explicitly defined in order for classes to be used in various modules. This set of standards is called the Application Binary Interface (ABI). On Linux, the C++ ABI is defined in GCC, which is a GNU package, as mentioned earlier. Compiled C++ code, no matter what compiler is used, must conform to GNU standards, otherwise such code cannot be reused by other C++ code.

Modern GNU/Linux distributions begin the boot process with GRUB (GRand Unified Bootloader), which is also part of the GNU project. (Although, technically, booting begins in the BIOS or other firmware, and this applies to all systems that run on a hardware platform.) GRUB was not created specifically for Linux. It can run other operating systems and is the standard for running some x86-based systems, including OpenSolaris and the Xen hypervisor.

GRUB then passes control to the kernel, which continues to initialize the system and configure drivers. The kernel in turn passes control to the init process. This process is responsible for creating other processes.

On Linux systems, init is a very small program that does more than just run a script. Some distributions have replaced init with Upstart, a program that is neither part of Linux nor part of GNU and has a more complex event-driven model. Scripts launched by init or upstart are simply a set of commands interpreted by the shell.

The POSIX specification describes the minimum functionality of the shell. If you want to write portable shell scripts, you can stay within this limited functionality and end up with scripts that will run on all UNIX-like systems.

However, most init scripts are not portable. They use advanced shell functionality found in most Linux distributions- Bash, the GNU command shell.

What's in the standard?

The Uniform UNIX Specification contains much more than just a set of C functions. In particular, the standard defines a set of user utilities that must be present in UNIX-like systems. Many programs use these utilities through shell scripts or other calls. Most of them are contained in the GNU root utilities package. Again, comparing the number of lines of code, the size of the root utilities is comparable to the size of the kernel.

One might assume that these utilities are not such an important part of the system, but this is not the case. Without utilities, most init scripts simply will not run (even with Bash), and the system will be unusable. Most installers will also not start, which means that you will not be able to install any programs. Even basic functionality such as copying files uses root utilities.

The Unified UNIX Specification provides a list of 175 programs that must be present on every UNIX system. Most of which (with some exceptions, such as vi) are created by GNU and are present in most Linux distributions. Some of them are never used by ordinary users; for example, the standard requires c99 and fort77 utilities for compiling programs written in C and Fortran (both utilities are provided by GNU).

What else should you pay attention to?

I said earlier that the kernel has two roles. Main role in providing user programs with access to the hardware. Therefore, most Linux code (and most other kernel code) consists of device drivers. But it’s worth mentioning the graphics separately.

The old XFree86 driver model was loosely dependent on the kernel. The X server ran as a privileged process and gained direct access to the hardware. I myself saw a live example of this when trying to use the Matrox binary Linux driver under FreeBSD. Although the driver was written for Linux, it fit perfectly on FreeBSD, because it interacted directly with the X server and hardware, and not at all with the FreeBSD kernel.

The new drivers use the Direct Rendering Infrastructure (DRI). This system consists of two components called DRI and DRM. DRI is a user environment driver that provides commands to hardware and provides APIs to others user programs. DRM, in turn, is a small kernel module that checks commands and passes them on to the hardware.

Often, during holivars on the topic “is Linux ready for the desktop,” people ask, how well does 3D work in Linux? Actually, 3D processing is not a Linux task on most systems. Linux just provides a direct interface to the hardware, and X.Org writes the drivers. The same drivers can be run on FreeBSD, OpenBSD and a number of other systems. In the world of GNU/Linux systems, Linux does not develop drivers for one of the most complex parts of the hardware component of a modern desktop/laptop.

With the invention of FUSE, which also runs on FreeBSD, NetBSD, and Mac OS X, the kernel often stops providing all drivers for file systems, which further diminishes the role of “Linux” in the system.

Uninstalling GNU or Linux.

Perhaps the truest test of the importance of a particular system component is how easy it is to do without that component in the system. Some Linux platforms don't use as many GNU programs; for example using busybox for utilities command line and uclibc for the standard library. Some GNU platforms, such as Nexenta or Debian GNU/kFreeBSD, do not use the Linux kernel.

To appreciate the importance of Linux, let's take a look at Linux compatible environment in FreeBSD. On startup Linux programs on FreeBSD, a modified system call handler is installed that calls FreeBSD kernel functions in response to Linux system calls. This approach allows you to run programs written under Linux without changing them.

In order to this method worked, they often install a stripped-down Linux version in a separate environment. Programs written for Linux will eventually be able to find all the necessary libraries and utilities, including GNU utilities, GNU grep, Bash and other packages.

What does this mean? This means that if you want to run a GNU/Linux program on another system, it's easy to do without Linux, but it's not so easy to do without GNU.

Of course, most programs will run successfully without any compatibility mode if you recompile them. In this case they will not use GNU libc, GNU utilities or bash. Some programs require the GNU compiler or GNU Make to compile successfully, however, after compilation, these programs will no longer require any GNU utilities except:

  • programs using C++, which will most likely use GNU libstdc++.
  • programs that explicitly use one of the many GNU libraries.

So removing GNU from GNU/Linux seems much more difficult than removing Linux. PC-BSD or Nexenta are good desktop OSes without a drop of Linux code inside, but with a lot of GNU code. Those Linux systems that do not depend so much on GNU code are completely integrated systems, the names of which are not familiar to users of desktop and server versions of Linux.

So should we say Linux, GNU or GNU/Linux? I say GNU because, as a programmer and user, I mostly use the tools developed by GNU. When I port code from FreeBSD, the only problems occur are in the root utilities or the standard C library. If I wanted to run this same code on HURD or any other GNU system, I would use the same interfaces.

In general, I prefer to highlight distributions like Fedora or Ubuntu and not mention GNU or Linux. The system includes a huge amount of code from various sources. The biggest code providers include the GNU Project and X.org, but Ubuntu GNOME/X.Org/GNU/Linux sounds a little long. And including such a small and easily removable part as Linux in the name of the system is unfair to the many developers whose code is also present in the system.

1.2. What is GNU/Linux?

Linux is an operating system: a set of programs that allow you to work with your computer and run other programs.

The operating system (OS) consists of several basic programs that your computer needs so that it can communicate and receive instructions from users; read and write data to hard disks, ribbons and printers; monitor memory usage; launch other programs. The most important part of the OS is the kernel. In a GNU/Linux system, the kernel is Linux. The remainder of the system consists of other programs, many of them written by the GNU Project or for the GNU Project. Since one Linux kernel is not the entire running OS, we prefer to use the term " GNU/Linux » to refer to systems that many people mistakenly call " Linux ».

Linux is modeled after the Unix operating system. From the very beginning, Linux was designed to be a multi-tasking, multi-user system. These factors are enough to make Linux different from other well-known operating systems. However, Linux is much more different than you might imagine. Unlike other operating systems, Linux is not owned by anyone. Much of the system is developed by volunteers for free.

Development of what would become GNU/Linux began in 1984, when the Free Software Foundation began developing a free Unix-like operating system called GNU.

Linus Torvalds continues to coordinate the work of several hundred developers through several supporting subsystems. There is an official website for the Linux kernel. Mailing list information linux-kernel can be found in the linux-kernel mailing list FAQ.

Linux users have enormous freedom in choosing their software. For example, Linux users can choose from a dozen different command-line shells and several graphical desktops. This choice often surprises users of other operating systems who never thought that shells or the desktop could be replaced.

Linux is also less prone to crashes, better able to run more than one program at a time, and more secure than many other systems. Thanks to these advantages, Linux is quickly conquering the server operating system market. Recently, Linux has begun to become popular among home users and in corporate environments.

Quite often on the Internet there are disputes about what the Linux operating system should be called. Just the name Linux is enough, or you must definitely use the phrase GNU Linux.

In this article we will try to figure out how to correctly name operating systems with the Linux kernel and a set of software from the GNU project. So, Linux or GNU Linux? Let's find out!

One of the biggest controversies in the open source software community revolves around the naming of the GNU Linux operating system. A large number of distributions have been created using the GNU GPL-licensed Linux kernel, written by Linus Torvalds in 1991, and GNU software created by Richard Stallman and the Free Software Foundation. Because of this, a debate arose whether such an operating system should be called simply Linux or GNU Linux.

In the mid-80s, Richard Stallman began developing free software so that everyone could use it, modify it, and distribute it at their discretion for free. This led to the creation of the Free Software Foundation, which became the main body for the development and distribution of free software. The developers of the Free Software Foundation created all the software needed for the operating system to run properly, now known as GNU software.

For the on-screen graphical interface, the decision was made to use the X Window System. But there was one problem that slowed down development - the Hurd kernel being developed for this operating system was too unstable. Then the core of Linus Torvalds appeared and took its part in this puzzle. Since then, developers have started using the Linux kernel along with GNU software to create their Linux distributions.

Over the years, the name Linux has been adopted by the masses to refer to such operating systems. The name was passed from mouth to mouth and people did not think that Linux and GNU were different things. This is where the controversy began.

Arguments for GNU Linux

I'm not asking you to call the system Stallmanix.

Richard Stallman

People who want the operating system to be called GNU Linux argue that GNU was a full operating system during development, while the Linux kernel was just a kernel. It has a vital important for GNU to exist only because their own kernel did not meet the required requirements.

“The program in a Unix-like system that allocates the machine's resources and operates on the hardware is called the kernel.” GNU is usually used together with the Linux kernel and this combination is called Linux. GNU Linux is used by millions, but many mistakenly call it Linux.

GNU Project website

Richard Stallman created an FAQ page in part to address this issue. He writes that while they didn't develop the entire operating system, they did develop most of it, and their motivation and vision for free software may have led to the kernel we have today. So GNU should get at least an equal degree of mention in the name.

Stallman notes that in the 1980s, the Free Software Foundation single-handedly raised the ideology of free software development. This term is more like "Free Speech" than "Free Beer". Perhaps this was the motivating element when Linus Torvalds created the kernel. He was partly influenced by a speech Richard Stallman gave in 1990 in Finland. Stallman says it's possible that without this influence Linus Torvalds would have written a Unix-like kernel, but it certainly wouldn't have been free.

Stallman initially proposed that the new operating system should be called LiGNUx. This name contains both GNU and Linux but sounds strange. That's why he later came up with GNU Linux. Some people say Richard Stallman does this for his ego. But Stallman himself denies this. He doesn't ask to name the system Stallmanix.

Another argument for this name is that many people use the GNU system with the Linux kernel and do not know that it is GNU. They think that the system consists only of the Linux kernel.

Arguments for Linux

It doesn't matter what people call Linux as long as they use this operating system. Personally, I'll still call it Linux.

Linus Torvalds

People who prefer to call the operating system simply Linux also took part in the discussion. Their opinions revolve around Richard Stallman being upset that Linus got credit for something he wanted to do.

Another reason for using the name Linux is that there are other software besides GNU, such as display server, Apahce, Nginx, GUI, etc). The Linux operating system uses a lot of software and is GNU more important than other components?

A wheel or engine or seat cannot separate from a functional vehicle and move separately.

Jim Getty (founder of X Window)

Proponents of the Linux name say that an operating system based on the Linux kernel should be called Linux. And similar thinking is reflected in Linus Torvalds' answer.

Well, I think this is justified, but only when you create a GNU Linux distribution. Same as SUSE Linux or Debian Linux, This is wonderful. Because if you create your own distribution, you can call it whatever you want, even "GNU Linux".

There are people who will want to call the system GNU Linux and that's fine. It's no worse than the name Linux Pro, Red Hat Linux or Slackware Linux.

Linus did not initiate discussions about the distribution's naming. But he doesn't like Stallman's idea of ​​calling the system LiGNUx.

I think Linux/GNU or GNU/Linux sounds more professional but I'm not going to think about it.

What has changed now?

There is still no official statement about how to correctly name an operating system that is based on the Linux kernel and GNU project utilities. However, many leading developers began to use the name GNU Linux. For example, Foundation-funded Debian began to be called Debian GNU Linux in 1994. It was followed by several more distributions: BLAG, Dynebolic, Parabola.

But large companies, for example Red Hat Inc, Feodra Project, prefer to call their operating Linux systems. It is still unclear how this will all end. The dispute is dividing two of the world's biggest software developers. What two people can do cannot be done by one.

What do you think is the correct name for this operating system Linux or GNU Linux? Write in the comments!

Some discussions about how to correctly name the Linux operating system are in the film about its creation:

There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine"s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.

Many users do not understand the difference between the kernel, which is Linux, and the whole system, which they also call “Linux”. The ambiguous use of the name doesn't help people understand. These users often think that Linus Torvalds developed the whole operating system in 1991, with a bit of help.

Programmers generally know that Linux is a kernel. But since they have generally heard the whole system called “Linux” as well, they often envisage a history that would justify naming the whole system after the kernel. For example, many believe that once Linus Torvalds finished writing Linux, the kernel, its users looked around for other free software to go with it, and found that (for no particular reason) most everything necessary to make a Unix-like system was already available.

What they found was no accident—it was the not-quite-complete GNU system. The available free software added up to a complete system because the GNU Project had been working since 1984 to make one. In the GNU Manifesto we set forth the goal of developing a free Unix-like system, called GNU. The Initial Announcement of the GNU Project also outlines some of the original plans for the GNU system. By the time Linux was started, GNU was almost finished.

Most free software projects have the goal of developing a particular program for a particular job. For example, Linus Torvalds set out to write a Unix-like kernel (Linux); Donald Knuth set out to write a text formatter (TeX); Bob Scheifler set out to develop a window system (the X Window System). It"s natural to measure the contribution of this kind of project by specific programs that came from the project.

If we tried to measure the GNU Project's contribution in this way, what would we conclude? One CD-ROM vendor found that in their “Linux distribution”, GNU software was the largest single contingent, around 28% of the total source code , and this included some of the essential major components without which there could be no system. Linux itself was about 3%. (The proportions in 2008 are similar: in the “main” repository of gNewSense, Linux is 1.5% and GNU packages are 15%.) So if you were going to pick a name for the system based on who wrote the programs in the system, the most appropriate single choice would be “GNU”.

But that is not the deepest way to consider the question. The GNU Project was not, is not, a project to develop specific software packages. It was not a project to develop a C compiler, although we did that. It was not a project to develop a text editor, although we developed one. The GNU Project set out to develop a complete free Unix-like system: GNU.

Many people have made major contributions to the free software in the system, and they all deserve credit for their software. But the reason it is an integrated system—and not just a collection of useful programs—is because the GNU Project set out to make it one. We made a list of the programs needed to make a complete free system, and we systematically found, wrote, or found people to write everything on the list. We wrote essential but unexciting components because you can"t have a system without them. Some of our system components, the programming tools, became popular on their own among programmers, but we wrote many components that are not tools. We even developed a chess game, GNU Chess, because a complete system needs games too.

By the early 90s we had put together the whole system aside from the kernel. We had also started a kernel, the GNU Hurd, which runs on top of Mach. Developing this kernel has been a lot harder than we expected; the GNU Hurd started working reliably in 2001, but it is a long way from being ready for people to use in general.

Fortunately, we didn't have to wait for the Hurd, because of Linux. Once Torvalds freed Linux in 1992, it fit into the last major gap in the GNU system. People could then combine Linux with the GNU system to make a complete free system — a version of the GNU system which also contained Linux. The GNU/Linux system, in other words.

Making them work well together was not a trivial job. Some GNU components needed a substantial change to work with Linux. Integrating a complete system as a distribution that would work “out of the box” was a big job, too. It required addressing the issue of how to install and boot the system—a problem we had not tackled, because we hadn’t yet reached that point. Thus, the people who developed the various system distributions did a lot of essential work. But it was work that, in the nature of things, was surely going to be done by someone.

The GNU Project supports GNU/Linux systems as well as the GNU system. The FSF funded the rewriting of the Linux-related extensions to the GNU C library, so that now they are well integrated, and the newest GNU/Linux systems use the current library release with no changes. The FSF also funded an early stage of the development of Debian GNU/Linux.

Today there are many different variants of the GNU/Linux system (often called “distros”). Most of them include nonfree programs—their developers follow the associated with Linux rather than the “free software” philosophy of GNU. But there are also completely free GNU/Linux distros. The FSF supports computer facilities for a few of them.

Making a free GNU/Linux distribution is not just a matter of eliminating various nonfree programs. Nowadays, the usual version of Linux contains nonfree programs too. These programs are intended to be loaded into I/O devices when the system starts, and they are included, as long series of numbers, in the "source code" of Linux. Thus, maintaining free GNU/Linux distributions now entails maintaining a free version of Linux too.

Whether you use GNU/Linux or not, please don"t confuse the public by using the name “Linux” ambiguously. Linux is the kernel, one of the essential major components of the system. The system as a whole is basically the GNU system , with Linux added. When you"re talking about this combination, please call it “GNU/Linux”.

If you want to make a link on “GNU/Linux” for further reference, this page and are good choices. If you mention Linux, the kernel, and want to add a link for further reference, http://foldoc.org/linux is a good URL to use.

Postscripts

Aside from GNU, one other project has independently produced a free Unix-like operating system. This system is known as BSD, and it was developed at UC Berkeley. It was nonfree in the 80s, but became free in the early 90s. A free operating system that exists today

  • On the other hand, in the years since this article was written, the GNU C Library has been ported to several versions of the BSD kernel, which made it straightforward to combine the GNU system with that kernel. Just as with GNU/Linux, these are indeed variants of GNU, and are therefore called, for instance, GNU/kFreeBSD and GNU/kNetBSD depending on the kernel of the system. Ordinary users on typical desktops can hardly distinguish between GNU/Linux and GNU/*BSD.