Embeddable Linux Kernel Subset

Last updated
ELKS
ELKS logo.svg
OS family Unix-like
Initial release0.0.76 (20 May 1999;25 years ago (1999-05-20))
Latest release 0.7.0 / 3 August 2023;10 months ago (2023-08-03)
Repository
Available in English
Kernel type Monolithic
License GPL v2 [1]
Official website github.com/ghaerr/elks

The Embeddable Linux Kernel Subset (ELKS), formerly known as Linux-8086, is a Linux-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. [2] [3]

Contents

Features and compatibility

ELKS is free software and available under the GNU General Public License (GPL). It can work with early 16-bit (e.g. 8086, 8088) and many 32-bit x86 computers like IBM PC compatible systems, and later x86 models in real mode. Another useful area is single board microcomputers, intended as educational tools for "homebrew" projects (hardware hacking), as well as embedded controller systems (e.g. Automation). [4]

Early versions of ELKS also ran on Psion 3a and 3aR SIBO (SIxteen Bit Organiser) PDAs with NEC V30 CPUs, [4] [5] providing another possible field of operation (gadget hardware), if ported to such a platform. This effort was called ELKSibo. [6] Due to lack of interest, SIBO support was removed from version 0.4.0.

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

History

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 [9] 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. [10]

On January 6, 2001, Cox declared ELKS "basically dead". [11] 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. [12] 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. [13] 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. [12]

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. [14]

Current status and usage

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. [15] 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. [16] On November 14, 2013, project development moved to GitHub. [17] Rudimentary Ethernet and FAT support were added in 2017. [18]

More than 35 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 (GNU Compiler Collection-Intel Architecture 16), and development activity increased as Gregory Haerr took the helm as lead developer. During 2019 and 2020 ELKS moved from a 'bootable, unstable' status to a stable Linux-like system for small machines with Ethernet, TCP/IP, FAT16/32, multiuser serial and many more functions. [19] As ELKS 0.4.0 was released in November 2020, the number of commits had passed 3,000.

Building on the foundation created by 0.4.0, development activity continued during 2021, still with Gregory Haerr as lead developer, supported by 5 active contributors. The team delivered 220 commits from October 2021 to 0.5.0 release on February 8, 2022. [20] Four months later, on Jun 7th 2022, 0.6.0 was released, setting a new level or release frequency and indicating a very high level of activity. [21]

Version 0.4.0

Version 0.4.0 represented a major milestone for ELKS, lifting the system from experimental to useful for non-developers, and included the following major enhancements:

Version 0.5.0

Version 0.5.0 was another significant milestone for ELKS with a number of important improvements, additions and support for 2 new platforms - the Japanese PC-98 and 8018X. Enhancements included: [23]

As of version 0.5.0 ELKS is a complete small-Linux system and a versatile tool for testing, diagnosing and running vintage PCs with limited resources. The improved portability demonstrated by the addition of new platforms, paves way for increased development activity towards the next version.

Version 0.6.0

Released on June 7, 2022, 0.6.0 defined a new level for ELKS, as indicated by the much shorter than usual release cycle. The speed at which the system evolves and improves, combined with its recently acquired reliability and usability created a demand for 'updated packaged releases' from new users.

0.6.0 included lots of enhancements and optimizations on both system and application level. New additions included: [21]

200 commits were delivered by the team between the 0.5.0 and 0.6.0 release, more than half by Gregory Haerr.

Version 0.7.0

It was released on August 3, 2023. [25]

See also

Related Research Articles

DECnet is a suite of network protocols created by Digital Equipment Corporation. Originally released in 1975 in order to connect two PDP-11 minicomputers, it evolved into one of the first peer-to-peer network architectures, thus transforming DEC into a networking powerhouse in the 1980s. Initially built with three layers, it later (1982) evolved into a seven-layer OSI-compliant networking protocol.

μClinux Linux distribution

μClinux is a variation of the Linux kernel, previously maintained as a fork, that targets microcontrollers without a memory management unit (MMU). It was integrated into the mainline kernel as of 2.5.46; the project continues to develop patches and tools for microcontrollers. The homepage lists Linux kernel releases for 2.0, 2.4 and 2.6.

<span class="mw-page-title-main">XNU</span> Computer operating system kernel

XNU is the computer operating system (OS) kernel developed at Apple Inc. since December 1996 for use in the Mac OS X operating system and released as free and open-source software as part of the Darwin OS, which, in addition to being the basis for macOS, is also the basis for Apple TV Software, iOS, iPadOS, watchOS, visionOS, and tvOS.

<span class="mw-page-title-main">MontaVista</span> Software company

MontaVista Software is a company that develops embedded Linux system software, development tools, and related software. Its products are made for other corporations developing embedded systems such as automotive electronics, communications equipment, mobile phones, and other electronic devices and infrastructure.

Nucleus RTOS is a real-time operating system (RTOS) produced by the Embedded Software Division of Mentor Graphics, a Siemens Business, supporting 32- and 64-bit embedded system platforms. The operating system (OS) is designed for real-time embedded systems for medical, industrial, consumer, aerospace, and Internet of things (IoT) uses. Nucleus was released first in 1993. The latest version is 3.x, and includes features such as power management, process model, 64-bit support, safety certification, and support for heterogeneous computing multi-core system on a chip (SOCs) processors.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

QEMU is a free and open-source emulator. It emulates a computer's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one architecture to run on another.

<span class="mw-page-title-main">Git</span> Distributed version control software system

Git is a distributed version control system that tracks versions of files. It is often used to control source code by programmers collaboratively developing software.

<span class="mw-page-title-main">Mercurial</span> Distributed revision-control tool for software developers

Mercurial is a distributed revision control tool for software developers. It is supported on Microsoft Windows, Linux, and other Unix-like systems, such as FreeBSD and macOS.

The ETRAX CRIS is a RISC ISA and series of CPUs designed and manufactured by Axis Communications for use in embedded systems since 1993. The name is an acronym of the chip's features: Ethernet, Token Ring, AXis - Code Reduced Instruction Set. Token Ring support has been taken out from the latest chips as it has become obsolete.

<span class="mw-page-title-main">Das U-Boot</span> Open-source, primary boot the devices operating system kernel

Das U-Boot is an open-source boot loader used in embedded devices to perform various low-level hardware initialization tasks and boot the device's operating system kernel. It is available for a number of computer architectures, including M68000, ARM, Blackfin, MicroBlaze, IBM S360, My66, MOS 6502, ARM64, MIPS, Nios, SuperH, PPC, RISC-V and x86.

<span class="mw-page-title-main">Linux kernel</span> Free Unix-like operating system kernel

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 soon after was adopted as the kernel for the GNU operating system (OS) which was created to be a free replacement for Unix.

netsniff-ng Linux networking toolkit

netsniff-ng is a free Linux network analyzer and networking toolkit originally written by Daniel Borkmann. Its gain of performance is reached by zero-copy mechanisms for network packets, so that the Linux kernel does not need to copy packets from kernel space to user space via system calls such as recvmsg . libpcap, starting with release 1.0.0, also supports the zero-copy mechanism on Linux for capturing (RX_RING), so programs using libpcap also use that mechanism on Linux.

Checkpoint/Restore In Userspace (CRIU), is a software tool for the Linux operating system. Using this tool, it is possible to freeze a running application and checkpoint it to persistent storage as a collection of files. One can then use the files to restore and run the application from the point it was frozen at. The distinctive feature of the CRIU project is that it is mainly implemented in user space, rather than in the kernel.

<span class="mw-page-title-main">RIOT (operating system)</span> Real-time operating system

RIOT is a small operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of things (IoT) devices. It is open-source software, released under the GNU Lesser General Public License (LGPL).

<span class="mw-page-title-main">Windows Subsystem for Linux</span> Compatibility layer for running Linux binary executables natively on Windows

Windows Subsystem for Linux (WSL) is a feature of Microsoft Windows that allows developers to run a Linux environment without the need for a separate virtual machine or dual booting. There are two versions of WSL: WSL 1 and WSL 2. WSL is not available to all Windows 10 users by default. It can be installed either by joining the Windows Insider program or manually via Microsoft Store or Winget.

<span class="mw-page-title-main">Cyphal</span>

Cyphal is a lightweight protocol designed for reliable intra-vehicle communications using various communications transports, originally destined for CAN bus, but targeting various network types in subsequent revisions. OpenCyphal is an open-source project that aims to provide MIT-licensed implementations of the Cyphal protocol. The project was known as UAVCAN prior to rebranding in March 2022.

WireGuard is a communication protocol and free and open-source software that implements encrypted virtual private networks (VPNs), and was designed with the goals of ease of use, high speed performance, and low attack surface. It aims to be smaller and better performing than IPsec and OpenVPN, two common tunneling protocols. The WireGuard protocol passes traffic over UDP.

<span class="mw-page-title-main">Windows Terminal</span> Terminal emulator for Windows 10 and later

Windows Terminal is a multi-tabbed terminal emulator developed by Microsoft for Windows 10 and later as a replacement for Windows Console. It can run any command-line app in a separate tab. It is preconfigured to run Command Prompt, PowerShell, WSL and Azure Cloud Shell Connector, and can also connect to SSH by manually configuring a profile. Windows Terminal comes with its own rendering back-end; starting with version 1.11 on Windows 11, command-line apps can run using this newer back-end instead of the old Windows Console.

<span class="mw-page-title-main">OpenHarmony</span> Family of open-source operating systems based on OpenHarmony

OpenAtom OpenHarmony, or abbreviated as OpenHarmony (OHOS), is a family of open-source distributed operating systems based on HarmonyOS derived from LiteOS, donated the L0-L2 branch source code by Huawei to the OpenAtom Foundation. Similar to HarmonyOS, the open-source distributed operating system is designed with a layered architecture, which consists of four layers from the bottom to the top, i.e., the kernel layer, system service layer, framework layer, and application layer. It is also an extensive collection of free software, which can be used as an operating system or can be used in parts with other operating systems via Kernel Abstraction Layer subsystems.

References

  1. "LICENSE file on github". GitHub .
  2. Building embedded Linux systems. Karim Yaghmour (2nd ed.). Sebastopol [Calif.]: O'Reilly Media. 2008. p. 7. ISBN   978-0-596-52968-0. OCLC   273049576.{{cite book}}: CS1 maint: others (link)
  3. Danesh, Arman (2006). MasteringTM Linux. Michael Jang (2nd ed.). Hoboken: John Wiley & Sons. p. 904. ISBN   978-0-7821-5277-7. OCLC   437171498.
  4. 1 2 Introduction to ELKS
  5. "Information on SIBO". Archived from the original on October 21, 2001. Retrieved 2014-03-02.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  6. "Information on ELKSibo". Archived from the original on March 27, 2005. Retrieved 2014-03-02.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  7. Elksemu man page
  8. Implementation of ELKS Eiffel library
  9. "Archived copy". Archived from the original on September 24, 2001. Retrieved November 16, 2006.{{cite web}}: CS1 maint: archived copy as title (link))
  10. elks.sourceforge.net
  11. January 6, 2001, "status update by Alan Cox". Archived from the original on September 20, 2001. Retrieved 2006-11-16.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  12. 1 2 "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.
  13. Announce of the EDE 0.0.5 release
  14. Linux-8086: Flight Linux
  15. "ELKS release 0.1.4". Archived from the original on 2012-02-21. Retrieved 2012-02-19.
  16. BusyELKS introduction
  17. Info on ELKS' GitHub move
  18. "ELKS is now Ethernet capable — Linux for 8086". www.spinics.net. Retrieved 2018-06-25.
  19. "ELKS v0.4.0 Pre-release version history and credits · Issue #873 · ghaerr/elks". GitHub. Retrieved 2021-04-09.
  20. "Release ELKS v0.5.0 · ghaerr/elks". GitHub. Retrieved 2022-02-09.
  21. 1 2 "Release ELKS v0.6.0 · ghaerr/elks". GitHub. Retrieved 2022-06-17.
  22. "ELKS wiki". GitHub. Retrieved 2021-04-09.
  23. "Release ELKS v0.5.0 · ghaerr/elks". GitHub. Retrieved 2022-02-09.
  24. "[kernel] Implement compressed executables in ELKS by ghaerr · Pull Request #912 · ghaerr/elks". GitHub. Retrieved 2021-04-10.
  25. ELKS v0.7.0