Embeddable Linux Kernel Subset

From Wikipedia, the free encyclopedia
  (Redirected from ELKS)
Jump to navigation Jump to search
OS familyUnix-like
Initial release0.0.76 (20 May 1999; 21 years ago (1999-05-20))
Latest release0.3.0 / 14 March 2019; 23 months ago (2019-03-14)
Repository Edit this at Wikidata
Available inEnglish
Kernel typeMonolithic
LicenseGPL v2[1]
Official websitegithub.com/jbruchon/elks

The Embeddable Linux Kernel Subset (ELKS), formerly known as Linux-8086, is a Unix-like operating system kernel. It is a subset of the Linux kernel, intended for 16-bit computers with limited processor and memory resources such as machines powered by Intel 8086 and compatible microprocessors not supported by 32-bit Linux.

Features and compatibility[edit]

ELKS is free software and available under the GNU General Public License (GPL). It can work with early 16-bit x86 (8086, 80186 and 80286) computers like IBM PC compatible systems, and in virtual 8086 mode, a feature of the 32-bit Intel 80386 and later CPUs found in newer machines. Another useful area are single board microcomputers, intended as educational tools for "homebrew" projects (hardware hacking), as well as embedded controller systems (e.g. Automation).[2]

ELKS also runs on Psion 3a and 3aR SIBO (SIxteen Bit Organiser) PDAs with NEC V30 CPUs,[2][3] providing another possible field of operation (gadget hardware), if ported to such a platform. This effort was called ELKSibo.[4]

Native ELKS programs may run emulated with Elksemu, allowing 8086 code to be used under Linux-i386.[5] An effort to provide ELKS with an Eiffel compliant library also exists.[6]


Development of Linux-8086 started in 1995 by Linux kernel developers Alan Cox and Chad Page as a fork of the standard Linux. By early 1996 the project was renamed ELKS (Embeddable Linux Kernel Subset), and in 1997 the first website www.elks.ecs.soton.ac.uk/ (offline, Archived September 24, 2001, at the Wayback Machine) was created. ELKS version 0.0.63 followed on August 8 that same year. On June 22, 1999, ELKS release 0.0.77 was available, the first version able to run a graphical user interface (the Nano-X Window System). On July 21, ELKS booted on a Psion PDA with SIBO architecture. ELKS 0.0.82 came out on January 10, 2000. By including the SIBO port, it became the first official version running on other computer hardware than the original 8086 base. On March 3 that year, the project was registered on SourceForge, the new website being elks.sourceforge.net.

On January 6, 2001, Cox declared ELKS "basically dead".[7] Nonetheless, release 0.0.84 came along on June 17, 2001, Charilaos (Harry) Kalogirou added TCP/IP networking support seven days later, and in the same year ELKS reached 0.0.90 on November 17. On April 20, 2002, Kalogirou added memory management with disk swapping capability, followed nine days later by ELKS release 0.1.0, considered the first beta version.[8] By end of the year, on December 18, the EDE (Elks Distribution Edition, a distribution based on the ELKS kernel), itself version 0.0.5, is released.[9] January 6, 2003, brought ELKS 0.1.2, an update to 0.1.3 followed on May 3, 2006, the first official release after a long hiatus in development.[8]

A development into FlightLinux, a real-time operating system for spacecraft, was planned, but the project it was intended for (UoSAT-12) eventually settled on the qCF operating system from Quadron Corporation instead.[10]

Current status and usage[edit]

Since January 2012 ELKS is again under development. The CVS repository was migrated to Git in February 2012, and numerous patches from the Linux-8086 mailing list were committed to the new repository. Version 0.1.4 came out on February 19, 2012, released by Jody Bruchon in memory of Riley Williams, a former co-developer. It included updated floppy disk images, fixing compilation bugs of the previous version and removing unused codes.[11] On May 10, 2012, BusyELKS was added to the repository by Jody Bruchon in an attempt to replace stand-alone binaries and to take advantage of shared code (ELKS does not support shared libraries). BusyBox-like binaries attempt to save space with symbolic links, eliminating redundant chunks of code, and are combining separate programs into one bigger binary.[12] On November 14, 2013, project development moved to GitHub.[13] Rudimentary Ethernet and FAT support were added in 2017.[14]

More than 30 developers have contributed to this project since the fork in 1995. As of March 2015, development of the ELKS project was again active, reaching a milestone 1,000 source code commits on March 8, 2015. As of June 2018, many bug fixes and improvements were performed with 583 more commits, leading to the 0.2.1 release. In March 2019, the project completed its transition from the obsolete BCC compiler to the more recent GCC-IA16. As of 2020 the unreleased code in the ELKS GIT repository provides Linux support for IBM XT and compatibles, mounts both FAT16 and FAT32, boots from FAT32 and has network support for some cards. There are also several VGA demo applications.

See also[edit]


  1. ^ "COPYING file on github".
  2. ^ a b Introduction to ELKS
  3. ^ "Information on SIBO". Archived from the original on October 21, 2001. Retrieved 2014-03-02.CS1 maint: bot: original URL status unknown (link)
  4. ^ "Information on ELKSibo". Archived from the original on March 27, 2005. Retrieved 2014-03-02.CS1 maint: bot: original URL status unknown (link)
  5. ^ Elksemu man page
  6. ^ Implementation of ELKS Eiffel library
  7. ^ January 6, 2001, "status update by Alan Cox". Archived from the original on September 20, 2001. Retrieved 2006-11-16.CS1 maint: bot: original URL status unknown (link)
  8. ^ a b "Older release information, e.g. on ELKS 0.1.0, the first Beta". Archived from the original on 2014-03-16. Retrieved 2014-03-02.
  9. ^ Announce of the EDE 0.0.5 release
  10. ^ Linux-8086: Flight Linux
  11. ^ "ELKS release 0.1.4". Archived from the original on 2012-02-21. Retrieved 2012-02-19.
  12. ^ BusyELKS introduction
  13. ^ Info on ELKS' GitHub move
  14. ^ "ELKS is now Ethernet capable — Linux for 8086". www.spinics.net. Retrieved 2018-06-25.

External links[edit]