Linux

Description

Linux (ˈlɪnʊks) is a family of free and open-source software Unix-like operating systems based on the Linux kernel, which was first released on 17 September 1991 by Linus Torvalds. Some members of the family are typically packaged as a distribution (a.k.a. distro), which includes the kernel alongside supporting system software and libraries developed by third parties - such as GNU, Red Hat, and X.Org - to create a complete operating system; however, not all Linux-based operating systems are considered distros, with Android being an example. Linux was originally designed as a clone of Unix and is distributed under the copyleft GPL license.

There are many thousands of Linux distributions, many based directly or indirectly on other distributions; popular Linux distros include Debian, Fedora Linux, Linux Mint, Arch Linux, and Ubuntu, while commercial distributions include Red Hat Enterprise Linux, SUSE Linux Enterprise, and ChromeOS. Linux distributions are frequently used in server platforms. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses and recommends the name "GNU/Linux", to emphasize the use and importance of GNU software in many distributions. There is controversy surrounding this. Other than the Linux kernel, key components that make up a distribution may include a display server (windowing system), a package manager, a bootloader, and a Unix shell.

Linux is one of the most prominent examples of free and open-source software collaboration. The Linux kernel is considered by many to be the largest free and open source project. While originally developed for x86-based personal computers, it has since been ported to more platforms than any other operating system. When combined with Android, which uses a Linux-based kernel and is designed for smartphones, they have the largest installed base of all general-purpose operating systems.

Components

Kernel

Wiki

The Linux kernel is a free and open-source.  Unix-like kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the kernel for the GNU operating system, which was created to be a free replacement for Unix. Since the late 1990s, it has been included in many operating system distributions, many of which are called Linux. One such Linux kernel operating system is Android, which is used in many mobile and embedded devices.

Most of the kernel code is written in C as supported by the GNU Compiler Collection (GCC), which has extensions beyond standard C. The code also contains assembly code for architecture-specific logic such as optimizing memory use and task execution.  The kernel has a modular design such that modules can be integrated as software components - including dynamically loaded. The kernel is monolithic in an architectural sense since the entire OS kernel runs in kernel space.

Linux is provided under the GNU General Public License version 2, although it contains files under other compatible licenses.

Bootloader

Wiki

A bootloader, for example GNU GRUB, LILO, SYSLINUX or systemd-boot. This is a program that loads the Linux kernel into the computer's main memory, by being executed by the computer when it is turned on and after the firmware initialization is performed.

Init

Wiki

An init program, such as the traditional sysvinit and the newer systemd, OpenRC and Upstart. This is the first process launched by the Linux kernel, and is at the root of the process tree. It starts processes such as system services and login prompts (whether graphical or in terminal mode).

Libraries

Wiki
C Standard Library

Software libraries, which contain code that can be used by running processes. On Linux systems using ELF-format executable files, the dynamic linker that manages the use of dynamic libraries is known as ld-linux.so. If the system is set up for the user to compile software themselves, header files will also be included to describe the programming interface of installed libraries. Besides the most commonly used software library on Linux systems, the GNU C Library (glibc), there are numerous other libraries, such as SDL and Mesa.

Commands

Basic Unix commands, with GNU coreutils being the standard implementation. Alternatives exist for embedded systems, such as the copyleft BusyBox, and the BSD-licensed Toybox.

Widget toolkits

Wiki

Widget toolkits are the libraries used to build graphical user interfaces (GUIs) for software applications. Numerous widget toolkits are available, including GTK and Clutter developed by the GNOME Project, Qt developed by the Qt Project and led by The Qt Company, and Enlightenment Foundation Libraries (EFL) developed primarily by the Enlightenment team.

Package manager

Wiki

A package management system, such as dpkg and RPM. Alternatively packages can be compiled from binary or source tarballs.

User interface

User interface programs such as command shells or windowing environments.

Windowing system

Wiki

Desktop Linux distributions include a windowing system such as X11 or Wayland and a desktop environment such as KDE Plasma, GNOME, or Xfce. Distributions intended for servers may not have a graphical user interface at all or include a solution stack such as LAMP.

In computing, a windowing system (or window system) is a software suite that manages separately different parts of display screens. It is a type of graphical user interface (GUI) which implements the WIMP (windows, icons, menus, pointer) paradigm for a user interface.

Each currently running application is assigned a usually resizable and usually rectangular surface of the display to present its GUI to the user; these windows may overlap each other, as opposed to a tiling interface where they are not allowed to overlap. Usually a window decoration is drawn around each window. The programming of both the window decoration and of available widgets inside of the window, which are graphical elements for direct user interaction, such as sliders, buttons, etc., is eased and simplified through the use of widget toolkits.

Shell

Wiki

An operating system shell is a computer program that provides relatively broad and direct access to the system on which it runs. The term shell refers to how it is a relatively thin layer around an operating system. Most shells are command-line interface (CLI) programs. Some graphical user interfaces (GUI) also include shells.