Detailed explanation of the relationship between Linux and GNU systems

Detailed explanation of the relationship between Linux and GNU systems

What is the Linux system that we run every day?

The version of GNU in widespread use today is often called "Linux", and many of its users are unaware that it is essentially the GNU system developed by the GNU Project.

Introduction to the Linux kernel and GNU system

There is indeed a Linux, and these people are using it, but it is only part of the system they use. Linux is the kernel: the program in your system that allocates the machine's resources to the other programs you run. The kernel is an essential component of an operating system, but is useless by itself; it can only run within the context of a complete operating system. Linux is often used in conjunction with the GNU operating system: the whole system is basically GNU plus Linux, or GNU/Linux. All so-called "Linux" distributions are actually distributions of GNU/Linux.

Many users don't understand the difference between the kernel (Linux) and the entire system (which they also call "Linux"). The vague use of names does not help people understand. These users tend to think that Linus Torvalds developed the entire operating system in 1991, with a little help.

Detailed explanation of the relationship between the Linux kernel and the GNU system

Programmers generally know that Linux is a kernel. However, since they have commonly heard the entire system also referred to as "Linux", they often imagine a history that justifies naming the entire system after the kernel. For example, many people assume that once Linus Torvalds finished writing the Linux kernel, its users would look around for other free software and discover (for no particular reason) that most of what they needed to make a Unix-like system was already available.

What they found was no accident - it was an incomplete GNU system. Available free software adds up to a complete system, as the GNU Project has been working to produce one since 1984. In the GNU Manifesto, we set the goal of developing a free Unix-like system called GNU. The initial announcement of the GNU Project also outlined some of the original plans for the GNU system. By the time Linux was launched, GNU was almost complete.

The goal of most free software projects is to develop a specific program for a specific job. For example, Linus Torvalds set out to write a Unix-like kernel (Linux); Donald Knuth set out to write a text formatter (TeX); and Bob Scheifler set out to develop a windowing system (the X Window System). It is natural to measure the contribution of such a project by the specific procedures that come from it.

If we tried to measure the contributions of the GNU Project in this way, what would we conclude? One CD-ROM vendor found that in their "Linux distribution" GNU software was the largest single component, accounting for about 28% of the total source code, including several major components that were essential without which no system could exist. Linux itself accounts for about 3%. (The proportions were similar in 2008: 1.5% Linux and 15% GNU packages in gNewSense's "main" repository.) So if you were to choose a name for your system based on who writes the programs in it, the most appropriate single choice would be "GNU."

But this isn’t the deepest way to think about it. The GNU Project is not, and was not, a project to develop specific software packages. This is not a project to develop a C compiler, although we do that. Although we developed a text editor, it is not a project to develop a text editor. The GNU Project set out to develop a complete free Unix-like system: GNU.

Many people have made important contributions to free software on the system, and their software deserves praise. But the reason it is an integrated system—not just a collection of useful programs—is that the GNU Project set out to make it a system. We made a list of programs that we needed to make a complete free system, and we systematically found, wrote, or had someone write everything on the list. We wrote about the essential but boring [1] components because you can't have a system without them. Some of our system components, namely programming tools, became popular among programmers themselves, but we wrote many components that were not tools [2]. We even developed a chess game, GNU Chess, because a complete system also needed a game.

By the early 1990s, we had put the entire system together except for the kernel. We also booted a kernel, the GNU Hurd, which runs on top of Mach. Developing this kernel has been much more difficult than we expected; the GNU Hurd started working reliably in 2001, but it was still a long way from being generally usable.

Fortunately, thanks to Linux, we don't have to wait for the Hurd. Torvalds unleashed Linux in 1992, which filled the last major gap in the GNU system. People can then combine Linux with the GNU system to form a complete free system - a version of the GNU system that also includes Linux. In other words, a GNU/Linux system.

Getting them to work well together is no easy task. Some GNU components [3] require significant changes to work with Linux. Integrating a complete system into a "out-of-the-box" distribution is also a difficult task. It requires solving the problem of how to install and boot the system - we haven't solved this problem yet because we haven't reached that point yet. Therefore, people who develop various system distributions do a lot of essential work. But, in the nature of things, it is a job that will certainly be done by someone.

The GNU Project supports the GNU/Linux system, as well as the GNU system. The FSF funded a rewrite of the GNU C library with Linux-related extensions, so that now they are fully integrated into the latest GNU/Linux systems using current versions of the library without changes. The FSF also funded the early development stages of Debian GNU/Linux.

There are many different GNU/Linux system variants (often called "distributions") available today. Most of them contain nonfree programs—their developers follow the "open source" philosophy associated with Linux, rather than the "free software" philosophy of GNU. But there are also completely free GNU/Linux distributions. The FSF supports computer facilities at some of these sites.

Making a free GNU/Linux distribution is not just a matter of eliminating various nonfree programs. Nowadays, regular Linux distributions also include non-free programs. These programs are designed to be loaded into I/O devices when the system boots, and they are included in the Linux "source code" as a long string of numbers. Therefore, maintaining a free GNU/Linux distribution now requires maintaining a free version of Linux as well.

Whether you use GNU/Linux or not, please do not confuse the public by using the name "Linux". Linux is the kernel, one of the main components that is essential to the system. The entire system is basically a GNU system with Linux added. When you talk about this combination, call it "GNU/Linux".

Summarize

This concludes this article on the detailed explanation of the relationship between Linux and GNU systems. For more relevant Linux and GNU system content, please search for previous articles on 123WORDPRESS.COM or continue to browse the related articles below. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • How to use multi-core CPU to speed up your Linux commands (GNU Parallel)

<<:  Use CSS to achieve 3D convex and concave effects on images (convex out of the frame or concave in the frame)

>>:  A brief discussion on mobile terminal adaptation

Recommend

How to enable Swoole Loader extension on Linux system virtual host

Special note: Only the Swoole extension is instal...

A brief talk about React Router's history

If you want to understand React Router, you shoul...

Centos7.5 configuration java environment installation tomcat explanation

Tomcat is a web server software based on Java lan...

Detailed explanation of mixins in Vue.js

Mixins provide distributed reusable functionality...

Vue implements graphic verification code login

This article example shares the specific code of ...

Brief analysis of mysql scheduled backup tasks

Introduction In a production environment, in orde...

Win10 installation Linux system tutorial diagram

To install a virtual machine on a Windows system,...

Import CSS files using judgment conditions

Solution 1: Use conditional import in HTML docume...

JS realizes video barrage effect

Use ES6 modular development and observer mode to ...

How to draw the timeline with vue+canvas

This article example shares the specific code of ...

Problem record of using vue+echarts chart

Preface echarts is my most commonly used charting...