Linux kernel

Linux kernel
Tux the penguin, mascot of Linux[1]
Linux 3.0.0 boot.png
Linux kernel 3.0.0 booting
DeveloperLinus Torvalds and thousands of collaborators
Written inC and assembly[2]
OS familyUnix-like
Initial release0.02 (5 October 1991 (1991-10-05))
Latest release5.8.11[3] (23 September 2020 (2020-09-23)) [±]
Latest preview5.9-rc6[4] (20 September 2020 (2020-09-20)) [±]
Repository Edit this at Wikidata
Available inEnglish
Kernel typeMonolithic
LicenseGNU GPLv2 (only) with some code under compatible GPL variants or under permissive licenses like BSD, MIT[5]

The Linux kernel, developed by contributors worldwide, is a free and open-source,[6][7] monolithic, modular (i.e., it supports the insertion and removal at runtime of loadable kernel objects[8]), Unix-like operating system kernel, and it is highly configurable by the users who've been granted the necessary privileges.

System administrators can tailor Linux for their specific targets and usage scenarios before compilation (using one of the make *config commands)[9][10] and can also fine-tune kernel parameters at runtime (using the sysctl(8) interface to /proc/sys/).[11][12][13]

It is deployed on a wide variety of computing systems, such as embedded devices, mobile devices (including its use in the Android operating system), personal computers, servers, mainframes, and supercomputers.[14]

The Linux kernel was conceived and created in 1991 by Linus Torvalds[15] for his personal computer and with no cross-platform intentions, but has since ported to a wide range of computer architectures. Notwithstanding this, the Linux kernel is highly optimized with the use of architecture specific instructions (ISA),[16] therefore portability isn't as easy as it is with other kernels (e.g., with NetBSD, that as of 2019 supports 59 hardware platforms).

Linux was soon adopted as the kernel for the GNU Operating System,[17] which was created as an open source and free software, and based on UNIX as a by-product of the fallout of the Unix wars.[18] Since then, it has spawned a plethora of operating system distributions, commonly also called Linux,[19] although, formally, the term "Linux" refers only to the kernel.[7]

Day-to-day development discussions take place on the Linux kernel mailing list (LKML). Linux as a whole[20] is released under the GNU General Public License version 2 (GPLv2), but it also contains several files under other compatible licenses[5] and an ad hoc exemption for the user space API header files (UAPI).

The Linux ABI (i.e., the Application Binary Interface which also includes Application Program Interface or API at the code source level)[21] between the kernel and the user space has four degrees of stability (stable, testing, obsolete, removed);[22] however, the system calls are expected to never change in order to not break the userspace programs that rely on them.[23]

Loadable kernel modules (LKMs), by design, cannot rely on a stable ABI.[24] Therefore they must always be recompiled whenever a new kernel executable is installed in a system, otherwise they won't be loaded. In-tree drivers that are configured to become an integral part of the kernel executable (vmlinux) are statically linked by the building process.

There's also no guarantee of stability of source level in-kernel API and, because of this, device drivers code, as well as the code of any other kernel subsystem, must be kept updated with kernel evolution. Fortunately, a simple rule requires that any developer who makes an API change should fix any code that breaks as the result of that change.[25]

  1. ^ "Linux Logos and Mascots". Linux Online. 2008. Archived from the original on 15 August 2010. Retrieved 11 August 2009.
  2. ^ The Linux Kernel Open Source Project on Open Hub: Languages Page
  3. ^ Kroah-Hartman, Greg (23 September 2020). "Linux 5.8.11". LKML (Mailing list). Retrieved 23 September 2020.
  4. ^ Torvalds, Linus (20 September 2020). "Linux 5.9-rc6". LKML (Mailing list). Retrieved 21 September 2020.
  5. ^ a b "Linux kernel licensing rules — The Linux Kernel documentation". Retrieved 6 January 2020.
  6. ^ Tanenbaum, Andrew; Bos, Herbert (2015). Modern Operating Systems. United States of America: Pearson. p. 722. ISBN 9781292061429. OCLC 892574803.
  7. ^ a b Love, Robert (2010). Linux kernel development. Addison-Wesley. p. 4. ISBN 978-0-672-32946-3. OCLC 268788260.
  8. ^ Love, Robert (2010). Linux kernel development. Addison-Wesley. p. 338. ISBN 978-0-672-32946-3. OCLC 268788260.
  9. ^ "KernelBuild - Linux Kernel Newbies". Retrieved 13 September 2020.
  10. ^ "Kconfig make config — The Linux Kernel documentation". Retrieved 13 September 2020.
  11. ^ "The Sysctl Interface". Retrieved 13 September 2020.
  12. ^ "sysctl(8) - Linux manual page". Retrieved 13 September 2020.
  13. ^ "procfs(5) - Linux manual page". Retrieved 13 September 2020.
  14. ^ Cite error: The named reference top500stats was invoked but never defined (see the help page).
  15. ^ Richardson, Marjorie (1 November 1999). "Interview: Linus Torvalds". Linux Journal. Retrieved 20 August 2009.
  16. ^ Love, Robert (2010). Linux Kernel Development. USA: Addison Wesley. pp. 379–380. ISBN 9780672329463.
  17. ^ Williams, Sam (March 2002). "Chapter 9: The GNU General Public License". Free as in Freedom: Richard Stallman's Crusade for Free Software. O'Reilly. ISBN 0-596-00287-4. Retrieved 12 November 2010.
  18. ^ Unix System Laboratories v. Berkeley Software, 832 F. Supp. 790 (D.N.J. 1993).
  19. ^ "README".
  20. ^ "Linux source code: COPYING (v5.4.8) - Bootlin". Retrieved 6 January 2020.
  21. ^ "Binary Compatibility". Retrieved 18 April 2020.
  22. ^ "README\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree". Retrieved 18 April 2020.
  23. ^ "syscalls\stable\ABI\Documentation - kernel/git/torvalds/linux.git - Linux kernel source tree". Retrieved 18 April 2020.
  24. ^ "stable-api-nonsense - Linux kernel source tree". Retrieved 18 April 2020.
  25. ^ "1.Intro.rst - Documentation/process/1.Intro.rst - Linux source code (v5.8) - Bootlin". Retrieved 8 August 2020.

Powered by 654 easy search