All Topics  
Linux kernel

 

   Email Print
   Bookmark   Link






 

Linux kernel



 
 
The Linux kernel is an operating system kernel used by a family of Unix-like
Unix-like

A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s. The term Linux distribution
Linux distribution

A Linux distribution is a member of the family of Unix-like software distributions built on top of the Linux kernel. Such distributions consist of a large collection of software applications such as word processors, spreadsheets, media players and database applications....
 is used to refer to the various operating systems that run on top of the Linux Kernel.

The Linux kernel is released under the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
 version 2 (GPLv2) and developed by contributors worldwide; Linux is one of the most prominent examples of Free
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 / Open Source software.

The Linux kernel was initially conceived and created by Finnish software engineer Linus Torvalds
Linus Torvalds

Linus Benedict Torvalds is a Finland software engineering best known for having initiated the development of the Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator....
 in 1991.






Discussion
Ask a question about 'Linux kernel'
Start a new discussion about 'Linux kernel'
Answer questions from other users
Full Discussion Forum



Encyclopedia


The Linux kernel is an operating system kernel used by a family of Unix-like
Unix-like

A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s. The term Linux distribution
Linux distribution

A Linux distribution is a member of the family of Unix-like software distributions built on top of the Linux kernel. Such distributions consist of a large collection of software applications such as word processors, spreadsheets, media players and database applications....
 is used to refer to the various operating systems that run on top of the Linux Kernel.

The Linux kernel is released under the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
 version 2 (GPLv2) and developed by contributors worldwide; Linux is one of the most prominent examples of Free
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 / Open Source software.

The Linux kernel was initially conceived and created by Finnish software engineer Linus Torvalds
Linus Torvalds

Linus Benedict Torvalds is a Finland software engineering best known for having initiated the development of the Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator....
 in 1991. Early on, the MINIX
Minix

MINIX is a Unix-like computer operating system based on a microkernel Software architecture. Andrew S. Tanenbaum wrote the operating system to be used for educational purposes; MINIX also inspired the creation of the Linux kernel....
 community contributed code and ideas to the Linux kernel. At the time, the GNU Project
GNU Project

The GNU Project is a free software, mass collaboration project, announced on September 27 1983 by Richard Stallman. It initiated the GNU operating system, software development for which began in January 1984....
 had created many of the components required for a free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 operating system, but its own kernel, GNU Hurd
GNU Hurd

GNU Hurd is a free software computer kernel , released under the GNU General Public License. It consists of a set of Server that work on top of a microkernel; together they form the kernel of GNU....
, was incomplete and unavailable. The BSD
Berkeley Software Distribution

Berkeley Software Distribution is the Unix operating system derivative developed and distributed by the Computer Systems Research Group of the University of California, Berkeley, from 1977 to 1995....
 operating system had not yet freed itself from legal encumbrances. This meant that despite the limited functionality of the early versions, Linux rapidly accumulated developers and users who adopted code from those projects for use with the new operating system. Today the Linux kernel has received contributions from thousands of programmers.

History


In April 1991, Linus Torvalds, then 21 years old, started working on some simple ideas for an operating system. He started with a task switcher in Intel 80386 assembly language
X86 assembly language

x86 assembly language is the family of backwards-compatible assembly languages for the x86 class of processors, which includes Intel's Pentium series and AMD's Athlon series....
 and a terminal driver
Pseudo terminal

In Unix, a pseudo terminal is a pseudo-device pair that provides a text terminal interface without associated Virtual console , computer terminal or serial port hardware....
. Then, on 26 August 1991, Torvalds posted to comp.os.minix:

After that, many people contributed code to the project. By September 1991, Linux version 0.01 was released. It had 10,239 lines of code. In October 1991, Linux version 0.02 was released.

In December 1991, Linux 0.11 was released. This version was the first to be self-hosted
Self-hosting

The term self-hosting was coined to refer to the use of a computer program as part of the toolchain or operating system that produces new versions of that same program?for example, a compiler that can compile its own source code....
 - Linux 0.11 could be compiled by a computer running Linux 0.11. When he released version 0.12 in February 1992, Torvalds adopted the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
 (GPL) over his previous self-drafted license, which did not permit commercial redistribution.

A newsgroup alt.os.linux was started, and on 19 January 1992, the first post to alt.os.linux was made. On 31 March 1992, alt.os.linux became comp.os.linux.

The X Window System
X Window System

The X Window System is a computing software system and network protocol that provides a graphical user interface for networked computers. It implements the X Window System protocols and architecture and provides windowing system on raster graphics Visual display units and manages Keyboard and pointing device control functions....
 was soon ported to Linux. In March 1992, Linux version 0.95 was the first to be capable of running X. This large version number jump (from 0.1x to 0.9x) was due to a feeling that a version 1.0 with no major missing pieces was imminent. However, this proved to be somewhat overoptimistic, and from 1993 to early 1994, 15 development versions of version 0.99 appeared.

On 14 March 1994, Linux 1.0.0 was released, with 176,250 lines of code. In March 1995, Linux 1.2.0 was released (310,950 lines of code).

Version 2 of Linux, released on 9 June 1996, was followed by additional major versions under the version 2 header:
  • 25 January 1999 - Linux 2.2.0 was released (1,800,847 lines of code).
  • 18 December 1999 - IBM mainframe
    IBM mainframe

    IBM mainframes, though perceived as synonymous with mainframe computers in general due to their marketshare, are now technically and specifically IBM's line of business computers that can all trace their design evolution to the IBM System/360....
     patches for 2.2.13 were published, allowing Linux to be used on enterprise-class machines.
  • 4 January 2001 - Linux 2.4.0 was released (3,377,902 lines of code).
  • 17 December 2003 - Linux 2.6.0 was released (5,929,913 lines of code).
  • 24 December 2008 - Linux 2.6.28 was released (10,195,402 lines of code).


Legal aspects


Licensing terms


Initially, Torvalds released Linux under a license which forbade any commercial exploitation. This was soon changed to the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
 (GPL), as of version 0.12. This license allows distribution and sale of possibly modified and unmodified versions of Linux but requires that all those copies be released under the same license and be accompanied by the complete corresponding source code.

Torvalds has described licensing Linux under the GPL as the "best thing I ever did."

GPL version 3

Currently, Linux is licensed only under version 2 of the GPL, with (unlike much GPL software) no option to use a later version, and there is some controversy over how easily it could be changed to use later GPL versions such as the new version 3 (and whether this is desirable). Torvalds himself specifically indicated upon the release of version 2.4.0 that his own code is only under version 2. However, the terms of the GPL state that if no version is specified, then any version may be used, and Alan Cox
Alan Cox

Alan Cox is a United Kingdom computer programmer heavily involved in the development of the Linux kernel since its early days 1991. He lives in Swansea, Wales with his wife, Telsa Gwynne....
 pointed out that very few other Linux contributors have specified a particular version of the GPL. One blogger concluded that around 40% of Linux code is specifically "GPL2 or above", and another approximately 10% is "GPL" (with no version specified), making for about half of the kernel, put together. In September of 2006, a survey of 29 key kernel programmers indicated 28 preferred GPLv2 to the then-current GPLv3 draft. Torvalds commented, "I think a number of outsiders...believed that I personally was just the odd man out, because I've been so publicly not a huge fan of the GPLv3."

Loadable Kernel Modules and firmware

It is debated whether Loadable Kernel Module
Loadable Kernel Module

In computing, a loadable kernel module is an object file that contains code to extend the running kernel , or so-called base kernel, of an operating system....
s (LKMs) should be considered derivative work
Derivative work

In copyright law, a derivative work is an expressive creation that includes major, copyright-protected elements of an original, previously created first work....
s under copyright law, and thereby fall under the terms of the GPL. Torvalds has stated his belief that LKMs using only a limited, "public" subset of the kernel interfaces can sometimes be non-derived works, thus allowing some binary-only drivers and other LKMs that are not licensed under the GPL. Not all Linux contributors agree with this interpretation, however, and even Torvalds agrees that many LKMs are clearly derived works, and indeed he writes that "kernel modules ARE derivative 'by default'". On the other hand Torvalds has also said that "one gray area in particular is something like a driver that was originally written for another operating system (ie. clearly not a derived work of Linux in origin). [...] THAT is a gray area, and _that_ is the area where I personally believe that some modules may be considered to not be derived works simply because they weren't designed for Linux and don't depend on any special Linux behaviour." Proprietary
Proprietary software

Proprietary software is a term coined by advocates of the free software movement to describe computer software which is the legal property of one party....
 graphics drivers, in particular, are heavily discussed. Ultimately, it is likely that such questions can only be resolved by a court.

One point of licensing controversy is Linux's use of firmware
Firmware

Firmware is a term sometimes used to denote the fixed, usually rather small, programs that internally control various electronic devices. Typical examples range from end user products such as remote controls or calculators, via computer parts and devices like harddisks, keyboard s, TFT screens or memory cards, all the way to scientific instr...
 "binary blob
Binary blob

In Free software community, binary blob is a pejorative term for an Objective Code Linker into the Kernel of a free software or open-source software operating system without publicly available source code....
s" to support some hardware devices. Richard Stallman
Richard Stallman

Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman...
 claims that these blobs make Linux partially non-free software, and that distributing Linux may even be violating the GPL (which requires "complete corresponding source code" to be available).

Trademark


Linux is a registered trademark
TradeMark

TradeMark is a tall, primarily residential, skyscraper in Charlotte, North Carolina. It was completed in 2007 and has 28 floors. There are 200 hundred residential units....
 of Linus Torvalds
Linus Torvalds

Linus Benedict Torvalds is a Finland software engineering best known for having initiated the development of the Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator....
 in the United States and some other countries. This is the result of an incident in which William Della Croce, Jr., who was not involved in the Linux project, trademarked the name and subsequently demanded royalties
Royalties

Royalties are usage-based payments made by one party to another for ongoing use of an asset, sometimes an intellectual property right.Royalties can be determined as a percentage of gross or net sales derived from use of the asset or a fixed price per unit sold....
 for its use. Several Linux backers retained legal counsel and filed suit against Della Croce, who agreed in 1998 to assign the trademark to Torvalds.

SCO litigation


In March 2003, the SCO Group
SCO Group

The SCO Group, Inc. is a software company formerly called Caldera Systems and Caldera International. After acquiring the Santa Cruz Operation Server Software and Services divisions, as well as UnixWare and OpenServer technologies, the company changed its focus to Unix....
 (SCO) filed a lawsuit
SCO v. IBM

SCO v. IBM is a civil lawsuit in the United States United States District Court for the District of Utah. The SCO Group asserted that there are legal uncertainties regarding the use of the Linux operating system due to alleged violations of IBM's Unix licenses in the development of Linux code at IBM....
 against IBM
IBM

International Business Machines Corporation, abbreviated IBM and nicknamed "Big Blue" , is a multinational corporation computer technology and consulting corporation headquartered in Armonk, New York, New York, United States....
 claiming that IBM had violated copyrights that SCO claimed to hold over the Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
 source code, by contributing portions of that code to Linux. Additionally, SCO sent letters to a number of companies warning that their use of Linux without a license from SCO may be a violation of copyright law, and claimed in the press that they would be suing individual Linux users. IBM then promised to defend its Linux customers on their behalf. This controversy has generated lawsuits by SCO against Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
, DaimlerChrysler
DaimlerChrysler

Daimler Aktiengesellschaft is a Germany car corporation and automaker as well as the largest truck manufacturer in the world. In addition to automobiles, Daimler manufactures trucks and provides financial services through its Daimler Financial Services arm....
 (partially dismissed in July, 2004), and AutoZone
AutoZone

AutoZone is a Fortune 500 corporation based in Memphis, Tennessee which is engaged primarily in the business of the retail sale of automotive parts and accessories....
, and retaliatory lawsuits by Red Hat
Red Hat

In computing, Red Hat, Inc. is a company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1995, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....
 and others against SCO.

In early 2007 SCO filed the specific details of the purported copyright infringement. Despite previous claims that SCO was the rightful owner of 1 million lines of code, they specified only 326 lines of code, most of which were uncopyrightable. In August 2007, the court in the Novell case
SCO v. Novell

SCO v. Novell is a lawsuit brought by the SCO Group against Novell. After the SCO Group initiated their Linux campaign, they made several statements that they were the owners of Unix, probably meaning that they were the owners of the copyrights of the original AT&T source code and derivatives....
 ruled that SCO did not actually own the Unix copyrights to begin with.

Technical features

Linux supports true preemptive multitasking
Computer multitasking

In computing, multitasking is a method by which multiple tasks, also known as Computer process, share common processing resources such as a Central processing unit....
 (both in user mode and kernel mode), virtual memory
Virtual memory

Virtual memory is a computer system technique which gives an application program the impression that it has contiguous working memory , while in fact it may be physically fragmented and may even overflow on to disk storage....
, shared libraries
Library (computer science)

In computer science, a library is a collection of subroutines or Class used to develop software. Libraries contain code and data that provide services to independent programs....
, demand loading
Demand paging

In computer operating systems, demand paging is an application of virtual memory. In a system that uses demand paging, the operating system copies a disk paging into physical memory only if an attempt is made to access it ....
, shared copy-on-write
Copy-on-write

Copy-on-write is an Optimization strategy used in computer programming. The fundamental idea is that if multiple callers ask for resources which are initially indistinguishable, you can give them pointers to the same resource....
 executables, memory management
Memory management

Memory management is the act of managing computer memory. In its simpler forms, this involves providing ways to allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed....
, the Internet protocol suite
Internet protocol suite

The Internet Protocol Suite is the set of communications protocols used for the Internet and other similar networks. It is named from two of the most important protocols in it: the Transmission Control Protocol and the Internet Protocol , which were the first two networking protocols defined in this standard....
, and threading
Thread (computer science)

In computer science, a thread of execution is a Fork of a computer program into two or more Concurrency running task s. The implementation of threads and process es differs from one operating system to another, but in most cases, a thread is contained inside a process....
.

Architecture


] Linux is a monolithic kernel
Monolithic kernel

A monolithic kernel is a Kernel architecture where the entire operating system is run in kernel space as supervisor mode. In difference with other architectures , the monolithic kernel defines alone a high-level virtual interface over computer hardware, with a set of primitives or system calls to implement all operating system services such...
. Device driver
Device driver

In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....
s and kernel extensions run in kernel space (ring 0
Ring (computer security)

In computer science, hierarchical protection domains, often called protection rings, are a mechanism to protect data and functionality from faults and malicious behaviour ....
 in many CPU architectures), with full access to the hardware, although some exceptions run in user space
User space

A conventional operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel , kernel extensions, and some device drivers....
. The graphics system
X Window System

The X Window System is a computing software system and network protocol that provides a graphical user interface for networked computers. It implements the X Window System protocols and architecture and provides windowing system on raster graphics Visual display units and manages Keyboard and pointing device control functions....
 most people use with Linux doesn't run in the kernel, in contrast to that found in Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
.

Kernel mode preemption
Preemption (computing)

Preemption in computing is the act of temporarily interrupting a task being carried out by a computer, without requiring its cooperation, and with the intention of resuming the task at a later time....
 allows device drivers to be preempted under certain conditions. This feature was added to handle hardware interrupt
Interrupt

In computing, an interrupt is an asynchronous communication signal from hardware indicating the need for attention or a synchronous event in software indicating the need for a change in execution....
s correctly and improve support for symmetric multiprocessing
Symmetric multiprocessing

In computing, symmetric multiprocessing or SMP involves a multiprocessor computer-architecture where two or more identical processors can connect to a single shared main memory....
 (SMP). Preemption also improves latency
Latency (engineering)

Latency is a time delay between the moment something is initiated, and the moment one of its effects begins or becomes detectable. The word derives from the fact that during the period of latency the effects of an action are latent, meaning "potential" or "not yet observed"....
, increasing responsiveness and making Linux more suitable for real-time applications.
Build Options

The Linux kernel has configurable Linux build options that enable specific features to be added or removed from the kernel during initial compilation. Customized default parameters may also be configured during the initial compilation, such as with make menuconfig.

Kernel panic

In Linux, a "panic" is an unrecoverable system error detected by the kernel as opposed to similar errors detected by user space
User space

A conventional operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel , kernel extensions, and some device drivers....
 code. It is possible for kernel code to indicate such a condition by calling the panic function located in the header file sys/system.h. However, most panics are the result of unhandled processor exceptions
Exception handling

Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions - special conditions that change the normal flow of execution....
 in kernel code, such as references to invalid memory addresses. These are typically indicative of a bug somewhere in the call chain leading to the panic. They can also indicate a failure of hardware, such as a failed RAM cell or errors in arithmetic functions in the processor caused by a processor bug
Pentium FDIV bug

The Pentium FDIV bug was a computer bug in Intel's original Pentium floating point unit. Certain floating point division operations performed with these processors would produce incorrect results....
, overheating/damaged processor, or a soft error
Soft error

In electronics and computing, an error is a signal or datum which is wrong. Errors may be caused by a defect, usually understood either to be a mistake in design or construction, or a broken component....
.

Tanenbaum-Torvalds debate

The fact that Linux is a monolithic kernel
Monolithic kernel

A monolithic kernel is a Kernel architecture where the entire operating system is run in kernel space as supervisor mode. In difference with other architectures , the monolithic kernel defines alone a high-level virtual interface over computer hardware, with a set of primitives or system calls to implement all operating system services such...
 rather than a microkernel
Microkernel

In computer science, a microkernel is a computer kernel which provides the mechanisms needed to implement an operating system, such as low-level address space management, thread management, and inter-process communication....
 was the topic of the Tanenbaum–Torvalds debate between Andrew S. Tanenbaum
Andrew S. Tanenbaum

Andrew Stuart "Andy" Tanenbaum is a professor of computer science at the Vrije Universiteit, Amsterdam in the Netherlands. He is best known as the author of MINIX, a free Unix-like operating system for teaching purposes, and for his computer science textbooks, regarded as standard texts in the field....
 and Linus Torvalds
Linus Torvalds

Linus Benedict Torvalds is a Finland software engineering best known for having initiated the development of the Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator....
. The debate started in 1992 about Linux and kernel architecture in general on the Usenet
Usenet

Usenet, a portmanteau of "user" and "network", is a worldwide distributed Internet discussion system. It evolved from the general purpose UUCP architecture of the same name....
 discussion group comp.os.minix. Tanenbaum argued that microkernels are superior to monolithic kernels and that therefore Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
 is obsolete. Unlike traditional monolithic kernels, device drivers are easily configured as Loadable Kernel Module
Loadable Kernel Module

In computing, a loadable kernel module is an object file that contains code to extend the running kernel , or so-called base kernel, of an operating system....
s, and loaded or unloaded while running the system. This subject was revisited on 9 May 2006, and on 12 May 2006 Tanenbaum wrote a position statement.

Programming languages


Linux is written in the version of the C programming language
C (programming language)

C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
 supported by GCC
GNU Compiler Collection

The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain....
 (which has introduced a number of extensions and changes to standard C), together with a number of short sections of code written in the assembly language
Assembly language

An assembly language is a low-level language for programming computers. It implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture....
 (in GCC's "AT&T-style" syntax) of the target architecture. Because of the extensions to C it supports, GCC was for a long time the only compiler capable of correctly building Linux. In 2004, Intel claimed to have modified the kernel so that its C compiler also was capable of compiling it. There was another such reported success in 2009 with a modified 2.6.22.

Many other languages are used in some way, primarily in connection with the kernel build
Software build

In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact that can be run on a computer, or the result of doing so....
 process (the methods whereby the bootable image is created from the sources). These include Perl
Perl

In computer programming, Perl is a high-level programming language, List of programming languages by category, Interpreter , dynamic programming language....
, Python
Python (programming language)

Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python's core syntax and semantics are Minimalism , while the standard library is large and comprehensive....
, and various shell script
Shell script

A shell script is a Scripting language written for the Shell , or command line interpreter, of an operating system. It is often considered a simple domain-specific programming language....
ing languages. Some drivers may also be written in C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, Fortran
Fortran

Fortran is a general-purpose programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing....
, or other languages, but this is strongly discouraged. Linux's build system only officially supports GCC as a kernel and driver compiler.

Portability


While not originally designed to be portable
Porting

In computer science, porting is the process of adapting software so that an executable Computer program can be created for a computing environment that is different from the one for which it was originally designed ....
, Linux is now one of the most widely ported operating system kernels, running on a diverse range of systems from the iPAQ
IPAQ

iPAQ presently refers to a Pocket PC and personal digital assistant first unveiled by Compaq in April 2000; the name was borrowed from Compaq's earlier iPAQ s....
 (a handheld computer) to the IBM System z9
System z9

IBM System z9 is a line of IBM Mainframe computer. It was announced on July 25, 2005 and the first models were available on September 16, 2005....
 (a massive mainframe
Mainframe computer

Mainframes are computers used mainly by large organizations for critical applications, typically bulk data processing such as census, industry and consumer statistics, Enterprise Resource Planning, and financial transaction processing....
 server that can run hundreds or even thousands of concurrent Linux instances). Linux runs as the main operating system on IBM's Blue Gene
Blue Gene

Blue Gene is a computer architecture project designed to produce several supercomputers, designed to reach operating speeds in the FLOPS range, and currently reaching sustained speeds of nearly 500 FLOPS....
 supercomputer
Supercomputer

A supercomputer is a computer that is at the frontline of current processing capacity, particularly speed of calculation. Supercomputers introduced in the 1960s were designed primarily by Seymour Cray at Control Data Corporation , and led the market into the 1970s until Cray left to form his own company, Cray Research....
s. , Linux is the OS on more than 87% of systems on the Top 500
TOP500

The TOP500 project ranks and details the 500 most powerful known computer systems in the world. The project was started in 1993 and publishes an updated list of the supercomputers twice a year....
 supercomputers list. Also, Linux has been ported to various handheld devices such as TuxPhone
TuxPhone

The TuxPhone is a mobile phone which runs on free software and open-source software software, and is currently in the prototype stage. The goal of the project is to develop a phone that anyone with basic soldering equipment can construct, with support from the free software community and open source community software community for download...
 and Apple's iPod.

Cooperative Linux
]]

Cooperative Linux
Cooperative Linux

File:Ubuntu on Windows - running Synaptic and nautilus.pngCooperative Linux, abbreviated as coLinux, is software which allows Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine....
, abbreviated as coLinux, is software which allows Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine.

Cooperative Linux utilizes the concept of a Cooperative Virtual Machine (CVM). In contrast to traditional VMs, the CVM shares resources that already exist in the host OS. In traditional (host) VMs, resources are virtualized for every (guest) OS. The CVM gives both OSs complete control of the host machine while the traditional VM sets every guest OS in an unprivileged state to access the real machine.

Virtual machine architectures
See Comparison of platform virtual machines for more details on product support for Linux.


See Hypervisor
Hypervisor

A hypervisor, also called virtual machine monitor , is a computer hardware platform virtualization software that allows multiple operating systems to run on a host computer concurrently....
 for more details on terminology used with virtual machines.


The Linux kernel has extensive support for and runs on many virtual machine architectures both as the
host operating system and as a client operating system. The virtual machines usually emulate Intel x86 family of processors, though in a few cases PowerPC
PowerPC

PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
 or AMD processors are also emulated.

Estimated cost to redevelop


The cost to redevelop the Linux kernel version 2.6.0 in a traditional proprietary development setting has been estimated to be $612 million USD (€467 million euro) in 2004 prices using the COCOMO
COCOMO

The COnstructive COst MOdel is an algorithmic Estimation in software engineering developed by Barry Boehm. The model uses a basic Regression analysis formula, with parameters that are derived from historical project data and current project characteristics....
 man-month estimation model. In 2006, a study funded by the European Union put the redevelopment cost of kernel version 2.6.8 higher, at €882 million euro ($1.14 billion USD).

Versions


Further developing his own code and integrating changes made by other programmers, Linus Torvalds keeps releasing new versions of the Linux kernel. These are called "vanilla" kernels, meaning they have not been further modified by anyone. Many Linux operating system vendors modify the kernels of their product, mainly in order to add support for drivers or features which have not officially been released as stable, while some distributions rely on vanilla kernels.

Version numbering

The Linux kernel has had three different numbering schemes.

Early versions:
  • The first version of the kernel was 0.01. This was followed by 0.02, 0.03, 0.10, 0.11, 0.12 (the first GPL version), 0.95, 0.96, 0.97, 0.98, 0.99 and then 1.0. From 0.95 on there were many patch releases between versions.


The old scheme (after 1.0 and prior to version 2.6):

  • The A number denotes the kernel version. It is rarely changed, and only when major changes in the code and the concept of the kernel occur. It has been changed twice in the history of the kernel: In 1994 (version 1.0) and in 1996 (version 2.0).


  • The B number denotes the major revision of the kernel
    • The kernel used the traditional even-odd system version numbering system.
  • The C number indicates the minor revision of the kernel. This number was changed when security patches, bug fixes, new features or drivers were implemented in the kernel.


After the release of 2.6.0 (Dec 2003) it was realized that a much shorter release cycle would be beneficial. Since then:

  • A and B are largely irrelevant


  • C is the version of the kernel


  • D counts from and bug and security fixes (only) to the C version (all development occurs on release candidates—'rc')


A D number first occurred when a grave error, which required immediate fixing, was encountered in 2.6.8's NFS code. However, there were not enough other changes to legitimize the release of a new minor revision (which would have been 2.6.9). So, 2.6.8.1 was released, with the only change being the fix of that error. With 2.6.11, this was adopted as the new official versioning policy. Some bug-fixes and security patches are back-ported to released kernels and managed by the fourth,
D number. Development only occurs under the C number.

Also, sometimes after the version there will be some more letters such as 'rc1' or 'mm2'. The 'rc' refers to release candidate and indicates a non-official pre-release. Other letters are usually (but not always) the initials of a person. This indicates a development branch
Fork (software development)

In software engineering, a project fork happens when developers take a copy of source code from one Computer software and start independent development on it, creating a distinct piece of software....
 of the kernel by that person. e.g. ck stands for Con Kolivas
Con Kolivas

Con Kolivas is an Australian anaesthesiologist who is known on the Internet for his computer programming work on the Linux kernel in his spare time....
, ac stands for Alan Cox
Alan Cox

Alan Cox is a United Kingdom computer programmer heavily involved in the development of the Linux kernel since its early days 1991. He lives in Swansea, Wales with his wife, Telsa Gwynne....
, whereas mm stood for Andrew Morton
Andrew Morton (computer programmer)

Andrew Keith Paul Morton is an Australian Software engineering, best known as one of the lead developers of the Linux kernel. He currently maintains a patchset known as the mm tree, which contains not yet sufficiently tested patches that might later be accepted into the official Linux tree maintained by Linus Torvalds....
. Sometimes, the letters are related to the primary development area of the branch the kernel is built from, for example, wl indicates a wireless networking test build. Also, distributors may have differnt numbering systems for their own versions (appended to the official numbering, at least to
C) and for back-ports to their "Enterprise" (ie, old versions) of Linux.

Development model


The development model for Linux 2.6 was a significant change from the development model for Linux 2.5. Previously there was a stable branch (2.4) where only relatively minor and safe changes were merged, and an unstable branch (2.5), where bigger changes and cleanups were allowed. This meant that users would always have a well-tested 2.4 version with the latest security and bug fixes to use, though they would have to wait for the features which went into the 2.5 branch. The downside of this was that the "stable" kernel ended up so far behind that it no longer supported recent hardware and lacked needed features. In the late 2.5.x series kernel some maintainers elected to try and back port their changes to the stable series kernel which resulted in bugs being introduced into the 2.4.x series kernel. The 2.5 branch was then eventually declared stable and renamed to 2.6. But instead of opening an unstable 2.7 branch, the kernel developers elected to continue putting major changes into the 2.6 "stable" branch. This had the desirable effect of breaking changes into smaller and easier to test batches, making new features quickly available, and getting more testing of the latest code.

However, the new 2.6 development model also meant that there was no stable branch for people just wanting security and bug fixes, and not needing the latest features. Fixes were only put into the latest version, so if a user wanted a version with all known bugs fixed they would also get all the latest features, which had not been well tested, and risked breaking things which had previously worked. A partial fix for this was the previously mentioned fourth version number digit (y in 2.6.x.y), which are series of point releases created by the
stable team (Greg Kroah-Hartman
Greg Kroah-Hartman

Greg Kroah-Hartman is a Linux kernel hacker. He is the current Linux kernel maintainer for the Universal Serial Bus, driver core, debugfs , kref, kobject, and the sysfs kernel subsystems....
, Chris Wright
Chris Wright

Chris Wright may refer to:* Chris Wright , plays for Essex County Cricket Club* Chris Wright , plays for Boston United F.C.* Chris Wright * Chris Wright , founder of Soundscape Digital Technology...
, maybe others). The stable team only released updates for the most recent kernel however, so this did not solve the problem of the missing stable kernel series. Linux distribution
Linux distribution

A Linux distribution is a member of the family of Unix-like software distributions built on top of the Linux kernel. Such distributions consist of a large collection of software applications such as word processors, spreadsheets, media players and database applications....
 vendors, such as Red Hat
Red Hat

In computing, Red Hat, Inc. is a company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1995, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....
 and Debian
Debian

Debian GNU/Linux is one of the most popular and influential computer operating systems composed of free software and open source software....
, maintain the kernels which ship with their releases, so a solution for some people is to just follow a vendor kernel.

As a response to the lack of a stable kernel tree where people could coordinate the collection of bug fixes, in December 2005 Adrian Bunk announced that he would keep releasing 2.6.16.y kernels when the stable team moved on to 2.6.17. He also plans to include driver updates, making the maintenance of the 2.6.16 series very similar to the old rules for maintenance of a stable series such as 2.4.

As of 24 December 2008, the latest stable kernel version is 2.6.28.

In February 2008, the developers also responded to the lack of what one might call an
unstable kernel tree - the linux-next tree was created to serve as a place where patches aimed to be merged during the next development cycle are gathered.

Maintenance

While Linus Torvalds supervises code changes and releases to the latest kernel versions, he has delegated the maintenance of older versions to other programmers. Major releases as old as 2.0 (officially obsoleted with the kernel 2.2.0 release in January 1999) are maintained as needed, although at a very slow pace.

Kernel series Current version Maintainer
2.0 2.0.40 David Weinehall
2.2 2.2.27-rc2 Marc-Christian Petersen (former maintainer Alan Cox
Alan Cox

Alan Cox is a United Kingdom computer programmer heavily involved in the development of the Linux kernel since its early days 1991. He lives in Swansea, Wales with his wife, Telsa Gwynne....
)
2.4 2.4.37 Willy Tarreau (former maintainer Marcelo Tosatti
Marcelo Tosatti

Marcelo Wormsbecker Tosatti is a Linux kernel developer.He became the maintainer of the stable 2.4 kernel series in November 2001 when he was 18 years old, replacing Alan Cox....
)
2.6.16 2.6.16.62 Adrian Bunk
2.6.x (current only) Linus Torvalds
Linus Torvalds

Linus Benedict Torvalds is a Finland software engineering best known for having initiated the development of the Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator....
2.6.x-linux-next latest development version  
2.6.x-mm
Mm tree

Among Linux kernel developers, the -mm tree refers to a version of the kernel source code maintained by Andrew Morton .The -mm kernel tree now fills the role of Linux kernel development builds, formerly identified by odd minor version numbers ....
 
(changes rapidly) Andrew Morton
Andrew Morton (computer programmer)

Andrew Keith Paul Morton is an Australian Software engineering, best known as one of the lead developers of the Linux kernel. He currently maintains a patchset known as the mm tree, which contains not yet sufficiently tested patches that might later be accepted into the official Linux tree maintained by Linus Torvalds....


Other Linux kernel programmers include Robert Love
Robert Love

Robert Matthew Love is an American author, speaker, and open source programmer.Love is best known for his contributions to the Linux kernel, with notable work including the preemptive kernel, Scheduling , kernel event layer, virtual memory subsystem, and inotify....
 and Ingo Molnár
Ingo Molnar

Ingo Moln?r, currently employed by Red Hat, is a Hungary Linux Linux kernel Hacker . He is best-known for his contributions to the operating system in terms of security and performance....
.

Revision control


The Linux kernel source code used to be maintained without the help of an automated source code management system, mostly because of Linus Torvalds' dislike of centralized SCM systems.

In 2002, Linux kernel development switched to BitKeeper
BitKeeper

BitKeeper is a software tool for distributed revision control of computer source code. A sophisticated distributed system, BitKeeper competes largely against other professional systems such as Rational ClearCase and Perforce....
, a SCM system which satisfied Linus Torvalds' technical requirements. BitKeeper was made available to Linus and several others free of charge, but was not free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
, which was a source of controversy. The system did provide some interoperability with free SCM systems such as CVS
Concurrent Versions System

In the field of software development, the Concurrent Versions System , also known as the Concurrent Versioning System, is a free software revision control system....
 and Subversion.

In April 2005, however, efforts to reverse-engineer the BitKeeper system by Andrew Tridgell
Andrew Tridgell

Andrew "Tridge" Tridgell is an Australian computer programmer best known as the author of and contributor to the Samba software file server, and co-inventor of the rsync algorithm....
 led BitMover, the company which maintained BitKeeper, to stop supporting the Linux development community. In response, Linus Torvalds and others wrote a new source code control system for the purpose, called Git
Git (software)

Git is a free software distributed revision control, or software source code management project with an emphasis on being fast. Git was initially created by Linus Torvalds for Linux kernel development....
. The new system was written within weeks, and in two months the first official kernel release was made using git. Git soon developed into a separate project in its own right and gained wider adoption in the free software community
Free software community

The free software community is an informal term referring to the users and developers of free software as well as supporters of the free software movement....
.

Stable version history


There were two major stable versions of the 1.
x Linux kernel: 1.0 and 1.2. Version 1.0 of the Linux kernel was released on 14 March 1994 This release of the Linux kernel only supported single-processor
Uniprocessor

A uniprocessor system is a computer system with a single central processing unit. As more and more computers employ multiprocessing architectures, such as Symmetric multiprocessing and Massively parallel processing, the term is used to refer to systems that still have only one central processing unit....
 i386
IA-32

IA-32 , often generically called x86 or x86-32, is the instruction set architecture of Intel's most commercially successful microprocessors....
-based computer systems. Portability became a concern, and so version 1.2 (released 7 March 1995) gained support for computer systems based on the DEC Alpha
DEC Alpha

Alpha, originally known as Alpha AXP, was a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations....
, Sparc
SPARC

SPARC is a Reduced Instruction Set Computer microprocessor instruction set Computer architecture originally designed in 1985 by Sun Microsystems....
, and MIPS
MIPS

MIPS may refer to:* Mansehra International Public School and College, in Mansehra, Pakistan* Material input per unit of service, an economic efficiency indicator...
 architectures. This was the last stable release in the 1.
x series of the Linux kernel.

Version 2.
x of the Linux kernel has seen a great number of changes, notably in the 2.6 series and how it is now developed, maintained, and released. Versions 2.0, 2.2, and 2.4 were done using the old system of development wherein each one of the kernels were a stable release tree that was based on previous development. Version 2.0 was released 9 June 1996. There were 41 releases in the series. The major feature of 2.0 was SMP
Symmetric multiprocessing

In computing, symmetric multiprocessing or SMP involves a multiprocessor computer-architecture where two or more identical processors can connect to a single shared main memory....
 support (that is, support for multiple processors in a single system) and support for more types of processors. Version 2.2 (released 26 January 1999) removed the global spinlock
Spinlock

In software engineering, a spinlock is a lock where the thread simply waits in a loop repeatedly checking until the lock becomes available. As the thread remains active but isn't performing a useful task, the use of such a lock is a kind of busy waiting....
 and provided improved SMP support, and added support for the m68k and PowerPC
PowerPC

PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
 architectures as well as new filesystems (including read-only support for Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
’s NTFS
NTFS

NTFS is the standard file system of Windows NT, including its later versions Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008, Windows Vista, and Windows 7....
 filesystem).

Development for 2.4.
x changed a bit in that more features were made available throughout the duration of the series. Version 2.4.0, released on 4 January 2001, contained support for ISA
ISA

Isa may refer to*Isa Miranda, Italian actress*Isha Upanishad, A Hindu religious text*Isa , a 2004 album by Enslaved.*Isa , a local variation of a Jota ....
 Plug and Play, USB, and PC Card
PC card

In computing, PC Card is the form factor of a peripheral interface designed for laptop computers. The PC Card standard were defined and developed by a group of industry-leading companies called the Personal Computer Memory Card International Association ....
s. It also included support for the PA-RISC processor from Hewlett-Packard
Hewlett-Packard

The Hewlett-Packard Company , commonly referred to as HP, is a technology corporation headquartered in Palo Alto, California, United States....
. Throughout the 2.4.
x series new features were added including: support for Bluetooth
Bluetooth

Bluetooth is a wireless protocol for exchanging data over short distances from fixed and mobile devices, creating personal area networks . It was originally conceived as a wireless alternative to RS232 data cables....
, Logical Volume Manager (LVM)
Logical Volume Manager (Linux)

LVM is a logical volume management for the Linux kernel: it manages disk drives and similar mass-storage devices, in particular large ones. The term "volume" refers to a disk drive or part thereof....
 version 1, RAID
RAID

RAID is an acronym first defined by David A. Patterson , Garth A. Gibson and Randy Katz at the University of California, Berkeley in 1987 to describe a Redundant Array of Inexpensive Disks, a technology that allowed computer users to achieve mainframe-class storage reliability from low-cost and less reliable PC-class disk-drive componen...
 support, InterMezzo and ext3
Ext3

The ext3 or third extended filesystem is a journaling file system that is commonly used by the Linux operating system. It is the default file system for many popular Linux distributions....
 filesystems.

With the coming of 2.6.
x of the Linux kernel, the versioning has changed such that there can now be four numbers to the kernel version, giving releases the format of 2.6.x.y (where .y is optional). Features are now added between x releases, and y releases usually consist of bugfixes. Version 2.6.0 was released on 18 December 2003. The 2.6 series of kernels is still the active series of stable kernels as of 1 January 2009. Among the changes that have been made in the 2.6 series are: integration of µClinux into the mainline kernel sources, PAE
Physical Address Extension

In computing, Physical Address Extension is a feature of x86 and x86-64 processors that enable the use of more than 4 gigabytes of physical memory to be used in 32-bit systems, given appropriate operating system support....
 support, support for several new lines of CPUs, integration of ALSA
ALSA

ALSA or alsa can refer to:* Advanced Linux Sound Architecture, a Linux kernel component* ALSA , an international bus company based in Spain...
 into the mainline kernel sources, support for up to 232 users (up from 216), support for up to 229 process IDs (up from 215), substantially increased the number of device types and the number of devices of each type, improved 64-bit support, support for filesystems of up to 16 terabytes, in-kernel preemption
Preemption (computing)

Preemption in computing is the act of temporarily interrupting a task being carried out by a computer, without requiring its cooperation, and with the intention of resuming the task at a later time....
, support for the Native POSIX Thread Library, User-mode Linux
User-mode Linux

User-mode Linux enables multiple virtual Linux systems to run as an application within a normal Linux system . As each guest is just a normal application running as a process in user space, this approach provides the user with a way of running multiple virtual Linux machines on a single piece of hardware, offering excellent security and saf...
 integration into the mainline kernel sources, SELinux integration into the mainline kernel sources, Infiniband
InfiniBand

InfiniBand is a switched fabric communications link primarily used in high-performance computing. Its features include quality of service and failover, and it is designed to be scalability....
 support, and considerably more. Also notable are the addition of several filesystems throughout the 2.6.
x releases: FUSE
Filesystem in Userspace

Filesystem in Userspace is a loadable kernel module for Unix-like computer operating systems, that allows non-privileged users to create their own file systems without editing the Kernel code....
, JFS
JFS

JFS is an abbreviation for:* JFS , a particular journaling file system created by IBM* Journaling file system , a type of file systems* Journal of Food Science, the official scientific journal of the Institute of Food Technologists....
, XFS
XFS

XFS is a high-performance journaling file system created by Silicon Graphics, originally for their IRIX operating system and later ported to Linux kernel....
, ext4
Ext4

The ext4 or fourth extended filesystem is a journaling file system developed as the successor to ext3. It was born as a series of backwards-compatible extensions to add to ext3 64-bit storage limits and other performance improvements....
 and more. Details on the history of the 2.6 kernel series can be found in the ChangeLog files on of .

Kernel resources


Kernel items

Kernel items are functions, variables, header files, and macros.

Kernel headers

Kernel headers are C header files
Header file

In computer programming, particularly in the C and C++ programming languages, a header file or include file is a computer file, usually in the form of source code, that a compiler automatically includes when processing another source file....
 which provide some definitions of the low-level kernel ABI
Application binary interface

In computer software, an application binary interface describes the low-level interface between an application program and the operating system or an other application....
, to be shared between the kernel and userspace programs. Most userspace programs should not include kernel headers; they are only intended to be used directly by system libraries and low-level tools and daemons.

The "make headers_install" command, when executed in the kernel's source tree, exports the kernel's header files in a form suitable for use by userspace programs.

When exported, most kernel headers reside in the /usr/include/asm and /usr/include/linux directories.

See also

  • menuconfig
    Menuconfig

    menuconfig is a menu-driven configuration utility for the Linux kernel, which allows the user to select Module and kernel options/parameters....
    , an ncurses
    Ncurses

    ncurses is a programming library providing an application programming interface, allowing the programmer to write text user interfaces in a terminal-independent manner....
    -based target for the Linux kernel Makefile
  • Git (software)
    Git (software)

    Git is a free software distributed revision control, or software source code management project with an emphasis on being fast. Git was initially created by Linus Torvalds for Linux kernel development....
  • Ksplice
    Ksplice

    Ksplice is an extension of the Linux kernel. It allows system administrators to apply security patches to the kernel without having to reboot. Ksplice has been implemented for Linux on the x86-32 and x86-64 architectures....
     - Linux Kernel Update invented by Massachusetts Institute of Technology
    Massachusetts Institute of Technology

    The Massachusetts Institute of Technology is a private university research university located in Cambridge, Massachusetts, Massachusetts, United States....
  • List of Linux kernel names
    List of Linux kernel names

    Most of the Linux 2.6 Linux kernel include a name in the Makefile of their source trees....
  • Modprobe
    Modprobe

    modprobe is a Linux program written by Rusty Russell used to add/remove a module to/from the Linux kernel .The current version of modprobe is distributed as part of the software package "module-init-tools", for Linux kernel version 2.5.x and later....
  • System.map
    System.map

    In Linux, the System.map file is a symbol table used by the Kernel .A symbol table is a look-up between symbol names and their addresses in memory....
  • User space
    User space

    A conventional operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel , kernel extensions, and some device drivers....


External links