GNU

On this page 7

GNU is a free software operating system project, launched in 1983, whose tools and libraries form the user space of most Linux distributions. The name is a recursive acronym for GNU’s Not Unix: the system was designed to be compatible with Unix while being built entirely from free software that users may run, study, modify and redistribute.

In Linux fundamentals, GNU matters because a typical Linux system is a combination of the Linux kernel and GNU components: the GNU C Library, the GNU Compiler Collection, the Bash shell and the core command-line utilities. This is why the complete system is sometimes called GNU/Linux, while the Linux kernel itself is only one part of it.

Origins and goals of the GNU Project

Richard Stallman announced the GNU Project in September 1983 and began development in January 1984. The goal was a complete Unix-compatible operating system free of proprietary restrictions. In 1985, the Free Software Foundation was founded to support the project and to hold copyrights that allow the licenses to be enforced.

By the early 1990s, GNU had produced most parts of an operating system, including compilers, editors, a shell and libraries, but its own kernel, GNU Hurd, was not ready for general use. When Linus Torvalds released the Linux kernel in 1991 and later placed it under the GNU General Public License, the two pieces fitted together into a usable free system.

YearMilestoneSignificance
1983GNU Project announcedGoal of a free Unix-like system
1985Free Software Foundation foundedOrganizational and legal support
1987First GCC releaseFree compiler for the whole system
1989GPL version 1 publishedCopyleft license for GNU software
1991GPL version 2 published; Linux kernel releasedKernel later adopted GPLv2
2007GPL version 3 publishedAddressed patents and locked-down devices
Key milestones of GNU

GNU components in a Linux system

On a standard Linux distribution, GNU software runs almost every command a user types. The kernel manages hardware, memory and processes, while GNU programs provide the interface through which people and scripts use it.

PackageRoleExample commands or files
GNU C Library (glibc)Standard C library and system call wrappersUsed by nearly every program
GNU Core UtilitiesBasic file, text and shell toolsls, cp, mv, cat, sort, chmod
BashDefault interactive shell on many distributionsCommand line and shell scripts
GNU Compiler Collection (GCC)Compilers for C, C++ and other languagesgcc, g++
GNU Binutils and MakeLinking, assembling and build automationld, as, make
GRUBBoot loader that starts the kernelBoot menu and kernel parameters
GNU tar, grep, sed, gawkArchiving and text processingBackups and data filtering
Important GNU packages and their roles

GNU utilities often add extensions beyond POSIX, such as long options like --human-readable. These extensions improve usability but can make scripts non-portable to systems that use BSD or minimal tool sets.

The GNU General Public License and copyleft

The legal foundation of GNU is copyleft: software may be freely used, modified and distributed, but derived works that are distributed must remain under the same free terms, with source code available. The GPL implements this principle and became the most influential free software license.

LicenseCopyleft strengthTypical use
GPL version 2Strong, applies to distributed derived worksLinux kernel and many older projects
GPL version 3Strong, adds patent and anti-lockdown termsMost current GNU programs
LGPLWeak, allows linking from proprietary codeLibraries such as glibc
AGPLStrong, also covers use over a networkServer software offered as a service
GNU licenses compared

Because glibc uses the LGPL, proprietary applications can run on Linux and link to the system library without becoming subject to GPL obligations. This licensing choice was essential for commercial software on Linux.

GNU, Linux and the naming question

The Free Software Foundation asks that complete systems be called GNU/Linux to credit the GNU contribution. Most users, vendors and distributions simply say Linux, and the shorter name dominates in practice. Some distributions, notably Debian, use the GNU/Linux form in official materials.

The question is not purely symbolic. Not every Linux system is a GNU system: Alpine Linux uses the musl C library and BusyBox, and Android uses the Linux kernel with its own Bionic library and almost no GNU user space. Conversely, GNU tools also run on other kernels, such as GNU Hurd and, through compatibility layers, BSD and Windows.

For administrators, the practical lesson is to check which C library and which utilities a system uses, not only which kernel it runs. Running ldd --version or inspecting the package list quickly shows whether a host or container image provides glibc and GNU tools, which affects binary compatibility and script behavior.

Common misconceptions about GNU

Several misunderstandings persist about GNU and its relationship to Linux. Clarifying them helps when comparing distributions or diagnosing portability problems:

  • Free means free of charge: in GNU terminology, free refers to freedom, and selling free software is allowed.
  • Linux is the whole operating system: strictly, Linux is the kernel, and most surrounding tools are GNU.
  • GNU and open source are identical: the licenses often overlap, but the free software movement stresses ethical user freedom.
  • All Linux shells behave the same: Bash features are not guaranteed in a POSIX shell such as dash.
  • GPL forbids commercial use: commercial use is permitted; the obligations concern distribution of source code.

In plain words

GNU is a large collection of free programs that make a computer usable. It includes the commands for copying files and the shell where commands are typed. It also includes the tools that build software and the library almost every program needs.

If Linux is the engine of a car, GNU supplies much of the steering wheel, pedals and dashboard. Most systems people call Linux are really Linux plus GNU. Both parts are free for anyone to use, study and improve.

A real-world example

A developer writes a deployment script on an Ubuntu laptop using sed -i and grep -P, both of which work as expected because Ubuntu ships the GNU versions of these tools. The same script then runs inside a small Alpine-based container image in the build pipeline and fails immediately.

The cause is that Alpine provides BusyBox implementations instead of GNU utilities, and some GNU-specific options are missing or behave differently. The team either installs the GNU coreutils, grep and sed packages in the image or rewrites the script to use only POSIX-compatible options. The incident shows in practice how much of everyday Linux behavior actually comes from GNU.