The Embeddable Linux Kernel Subset (ELKS), formerly known as Linux-8086, is a
Linux-like operating system
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learnin ...
. It is a subset of the
Linux kernel
The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ope ...
, intended for ''
16-bit
16-bit microcomputers are microcomputers that use 16-bit microprocessors.
A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two mos ...
'' computers with limited processor and memory resources such as machines powered by
Intel 8086
The 8086 (also called iAPX 86) is a 16-bit microprocessor chip designed by Intel between early 1976 and June 8, 1978, when it was released. The Intel 8088, released July 1, 1979, is a slightly modified chip with an external 8-bit data bus (allowi ...
and compatible
microprocessor
A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circu ...
s not supported by ''
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32-bit units. Compared to smaller bit widths, 32-bit computers can perform large calculation ...
''
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
.
Features and compatibility
ELKS is
free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
and available under the
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
(GPL). It can work with early ''
16-bit
16-bit microcomputers are microcomputers that use 16-bit microprocessors.
A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two mos ...
'' and many ''
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32-bit units. Compared to smaller bit widths, 32-bit computers can perform large calculation ...
'' x86 (8088, 8086) computers like
IBM PC compatible
IBM PC compatible computers are similar to the original IBM PC, XT, and AT, all from computer giant IBM, that are able to use the same software and expansion cards. Such computers were referred to as PC clones, IBM clones or IBM PC clones. ...
systems, and later x86 models in
real mode
Real mode, also called real address mode, is an operating mode of all x86-compatible CPUs. The mode gets its name from the fact that addresses in real mode always correspond to real locations in memory. Real mode is characterized by a 20-bit seg ...
. 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
Automation describes a wide range of technologies that reduce human intervention in processes, namely by predetermining decision criteria, subprocess relationships, and related actions, as well as embodying those predeterminations in machines ...
).
[Introduction to ELKS](_blank)
/ref>
Early versions of ELKS also ran on ''Psion 3a'' and ''3aR'' ''SIBO'' (SIxteen Bit Organiser) PDA
PDA may refer to:
Science and technology
* Patron-driven acquisition, a mechanism for libraries to purchase books
*Personal digital assistant, a mobile device
* Photodiode array, a type of detector
* Polydiacetylenes, a family of conducting poly ...
s with NEC V30 CPUs,[Introduction to ELKS](_blank)
/ref> providing another possible field of operation (gadget
A gadget is a mechanical device or any ingenious article. Gadgets are sometimes referred to as '' gizmos''.
History
The etymology of the word is disputed. The word first appears as reference to an 18th-century tool in glassmaking that was develo ...
hardware), if ported to such a platform. This effort was called ''ELKSibo''. Due to lack of interest, SIBO support was removed from version 0.4.0.
Native ELKS programs may run emulated
In computing, an emulator is Computer hardware, hardware or software that enables one computer system (called the ''host'') to behave like another computer system (called the ''guest''). An emulator typically enables the host system to run so ...
with ''Elksemu'', allowing 8086 code to be used under Linux-i386. An effort to provide ELKS with an Eiffel
Eiffel may refer to:
Places
* Eiffel Peak, a summit in Alberta, Canada
* Champ de Mars – Tour Eiffel station, Paris, France; a transit station
Structures
* Eiffel Tower, in Paris, France, designed by Gustave Eiffel
* Eiffel Bridge, Ungheni, M ...
compliant library
A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
also exists.
History
Development of ''Linux-8086'' started in 1995 by Linux kernel developers Alan Cox and Chad Page as a fork
In cutlery or kitchenware, a fork (from la, furca 'pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tines with which one can spear foods ei ...
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, ) 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 GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
(th
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
A port is a maritime facility comprising one or more wharves or loading areas, where ships load and discharge cargo and passengers. Although usually situated on a sea coast or estuary, ports can also be found far inland, such as Ham ...
, it became the first official version running on other computer hardware
Computer hardware includes the physical parts of a computer, such as the computer case, case, central processing unit (CPU), Random-access memory, random access memory (RAM), Computer monitor, monitor, Computer mouse, mouse, Computer keyboard, ...
than the original 8086 base. On March 3 that year, the project was registered on SourceForge
SourceForge is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirrorin ...
, the new website being
elks.sourceforge.net
'.
On January 6, 2001, Cox declared ELKS "basically dead". 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
A software release life cycle is the sum of the stages of development and maturity for a piece of computer software ranging from its initial development to its eventual release, and including updated versions of the released version to help impro ...
''. 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. 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.
A development into ''FlightLinux'', a real-time
Real-time or real time describes various operations in computing or other processes that must guarantee response times within a specified time (deadline), usually a relatively short time. A real-time process is generally one that happens in defined ...
operating system for spacecraft
A spacecraft is a vehicle or machine designed to fly in outer space. A type of artificial satellite, spacecraft are used for a variety of purposes, including communications, Earth observation, meteorology, navigation, space colonization, p ...
, was planned, but the project it was intended for (UoSAT-12
UoSAT-12 is a British satellite in Low Earth Orbit. It is the twelfth satellite in the University of Surrey series and was designed and built by Surrey Satellite Technology Ltd. (SSTL). It was launched into orbit in April 1999 on board a Dnepr r ...
) eventually settled on the ''qCF'' operating system from Quadron Corporation instead.
Current status and usage
Since January 2012 ELKS is again under development. The CVS repository was migrated to Git
Git () is a distributed version control system: tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data inte ...
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. 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
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subr ...
). BusyBox
BusyBox is a software suite that provides several Unix utilities in a single executable file. It runs in a variety of POSIX environments such as Linux, Android, and FreeBSD, although many of the tools it provides are designed to work with in ...
-like binaries attempt to save space with symbolic links, eliminating redundant chunks of code, and are combining separate programs into one bigger binary. On November 14, 2013, project development moved to GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous ...
. Rudimentary Ethernet and FAT support were added in 2017.
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, 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. 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 8th 2022. 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.
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:
* Documentation Wiki
* Major kernel enhancements – size, stability, robustness, speed, system calls and debugging features.
* Reliable TCP/IP
The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the set of communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suit ...
stack implemented as a user mode process, supporting TCP, ICMP, ARP.
* User level networking support for telnet
Telnet is an application protocol used on the Internet or local area network to provide a bidirectional interactive text-oriented communication facility using a virtual terminal connection. User data is interspersed in-band with Telnet control i ...
/telnetd and file transfer.
* Serial IP and Ethernet
Ethernet () is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 198 ...
(NE1K/ NE2K/WD8003) support.
* Many new and updated user level commands, including ash and sash shells.
* Many cross development tool-chain enhancements supporting more memory models, easing porting of more applications.
* Robust FAT16
File Allocation Table (FAT) is a file system developed for personal computers. Originally developed in 1977 for use on floppy disks, it was adapted for use on Hard disk drive, hard disks and other devices. It is often supported for compatibi ...
/32 and Minix1 file system support, including booting from /root on FAT file systems.
* Improved console and serial support: Serial console, high speed multiple serial I/O.
* MBR support, boot options via /bootopts.
* Updated menu-system for configuration and building on Linux and MacOS, allowing non-developers to build custom images for floppies ranging from 360KB to 2.88MB.
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
The , commonly shortened to PC-98 or , is a lineup of Japanese 16-bit and 32-bit personal computers manufactured by NEC from 1982 to 2000. The platform established NEC's dominance in the Japanese personal computer market, and, by 1999, more ...
and 8018X. Enhancements included:
* Kernel and network debugging tools, toolchain improvements, cleanups to ease porting to new platforms
* Network stack stability and performance improvements
* Native ftp/ftpd programs, expanding network application level protocol support to telnet
Telnet is an application protocol used on the Internet or local area network to provide a bidirectional interactive text-oriented communication facility using a virtual terminal connection. User data is interspersed in-band with Telnet control i ...
, ftp
The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data ...
, http
The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
and raw tcp (netcat
netcat (often abbreviated to nc) is a computer networking utility for reading from and writing to network connections using TCP or UDP. The command is designed to be a dependable back-end that can be used directly or easily driven by other p ...
)
* Improved runtime configuration via /bootopts configuration file,
* XMS-support for 386
__NOTOC__
Year 386 ( CCCLXXXVI) was a common year starting on Thursday (link will display the full calendar) of the Julian calendar. At the time, it was known as the Year of the Consulship of Honorius and Euodius (or, less frequently, year 113 ...
and 286 systems, enabling high memory buffers
* New SSD
A solid-state drive (SSD) is a solid-state storage device that uses integrated circuit assemblies to store data persistently, typically using flash memory, and functioning as secondary storage in the hierarchy of computer storage. It is ...
driver
* Support for compressed executables
* Support for very low memory environments (256k)
* Library and system call enhancements
* Kernel support for variable sector sizes (for PC-98 platform)
* New startup configuration files for networking and mass storage
* Improved networking support when running in QEMU
QEMU is a free and open-source emulator (Quick EMUlator). It emulates the machine'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 ...
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 7th 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:
* BASIC
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
interpreter with demo programs
* Manual pages
* Expanded support for the new platforms - PC98
The , commonly shortened to PC-98 or , is a lineup of Japanese 16-bit and 32-bit personal computers manufactured by NEC from 1982 to 2000. The platform established NEC's dominance in the Japanese personal computer market, and, by 1999, more th ...
and 8081x, notably SCSI and IDE drive support for the PC98
* Kernel, library and networking fixes/enhancements
* New commands, such as tar, man and compress
200 commits were delivered by the team between the 0.5.0 and 0.6.0 release, more than half by Gregory Haerr.
See also
* IBM Personal Computer
The IBM Personal Computer (model 5150, commonly known as the IBM PC) is the first microcomputer released in the IBM PC model line and the basis for the IBM PC compatible de facto standard. Released on August 12, 1981, it was created by a team ...
* TinyLinux
* ucLinux
FUZIX
a Linux-like for ''8-bit
In computer architecture, 8-bit Integer (computer science), integers or other Data (computing), data units are those that are 8 bits wide (1 octet (computing), octet). Also, 8-bit central processing unit (CPU) and arithmetic logic unit (ALU) arc ...
'' architectures
References
External links
*
*
*
* {{github, jbruchon/dev86/tree/master/elksemu, Elksemu, part of development tools
Linux kernel
Monolithic kernels
Embedded Linux
Lightweight Unix-like systems