Embeddable Linux Kernel Subset
   HOME

TheInfoList



OR:

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 software, free and open source Unix-like kernel (operating system), kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the k ...
, 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 ...
computers with limited processor and memory resources such as machines powered by
Intel 8086 The 8086 (also called iAPX 86) is a 16-bit computing, 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-b ...
and compatible
microprocessor A microprocessor is a computer processor (computing), processor for which the data processing logic and control is included on a single integrated circuit (IC), or a small number of ICs. The microprocessor contains the arithmetic, logic, a ...
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 a maximum of 32- bit units. Compared to smaller bit widths, 32-bit computers can perform la ...
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
.


Features and compatibility

ELKS is
free software Free software, libre software, libreware sometimes known as freedom-respecting software is computer software distributed open-source license, under terms that allow users to run the software for any purpose as well as to study, change, distribut ...
and available under the
GNU General Public License The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
(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 ...
(e.g. 8086,
8088 The Intel 8088 ("''eighty-eighty-eight''", also called iAPX 88) microprocessor is a variant of the Intel 8086. Introduced on June 1, 1979, the 8088 has an eight-bit external data bus instead of the 16-bit bus of the 8086. The 16-bit registers ...
) 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 a maximum of 32- bit units. Compared to smaller bit widths, 32-bit computers can perform la ...
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel, based on the 8086 microprocessor and its 8-bit-external-bus variant, the 8088. Th ...
computers like
IBM PC compatible An IBM PC compatible is any personal computer that is hardware- and software-compatible with the IBM Personal Computer (IBM PC) and its subsequent models. Like the original IBM PC, an IBM PC–compatible computer uses an x86-based central p ...
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 s ...
. 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 Automation describes a wide range of technologies that reduce human intervention in processes, mainly by predetermining decision criteria, subprocess relationships, and related actions, as well as embodying those predeterminations in machine ...
).Introduction to ELKS
/ref> Early versions of ELKS also ran on Psion 3a and 3aR SIBO (SIxteen Bit Organiser) PDAs with NEC V30 CPUs, providing another possible field of operation (
gadget A gadget is a machine, mechanical device or any ingenious article. Gadgets are sometimes referred to as ''wikt:gizmo, gizmos''. History The etymology of the word is disputed. The word first appears as reference to an 18th-century tool in Glass ...
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 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 software or use perip ...
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 Tower, in Paris, France, designed by Gustave Eiffel *:* Champ de Mars – Tour Eiffel station, Metro station serving the Eiffel Tower * Eiffel Bridge, Ungheni, Moldova, designed by Gustave Eiffel * Eiffel Bri ...
compliant
library A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
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 '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 either to h ...
of the standard Linux. By early 1996 the project was renamed ELKS (Embeddable Linux Kernel Subset), and in 1997 the first website 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 A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
(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 Hamburg, Manch ...
, it became the first official version running on other
computer hardware Computer hardware includes the physical parts of a computer, such as the central processing unit (CPU), random-access memory (RAM), motherboard, computer data storage, graphics card, sound card, and computer case. It includes external devices ...
than the original 8086 base. On March 3 that year, the project was registered on
SourceForge SourceForge is a web service founded by Geoffrey B. Jeffery, Tim Perdue, and Drew Streib in November 1999. SourceForge provides a centralized software discovery platform, including an online platform for managing and hosting open-source soft ...
. 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 Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of Resource management (computing), resource management applied to computer memory. The essential requirement of memory manag ...
with
disk swapping Disk swapping refers to the practice of inserting and removing, or swapping, floppy disks in a floppy disk drive-based computer system. In the early days of personal computers, before hard drives became commonplace, most fully outfitted compute ...
capability, followed nine days later by ELKS release 0.1.0, considered the first
beta version The software release life cycle is the process of developing, testing, and distributing a software product (e.g., an operating system). It typically consists of several stages, such as pre-alpha, alpha, beta, and release candidate, before the fi ...
. 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, realtime, or real time may refer to: Computing * Real-time computing, hardware and software systems subject to a specified time constraint * Real-time clock, a computer clock that keeps track of the current time * Real-time Control Syst ...
operating system for
spacecraft A spacecraft is a vehicle that is designed spaceflight, to fly and operate in outer space. Spacecraft are used for a variety of purposes, including Telecommunications, communications, Earth observation satellite, Earth observation, Weather s ...
, 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 Repository may refer to: Archives and online databases * Content repository, a database with an associated set of data management tools, allowing application-independent access to the content * Disciplinary repository (or subject repository), an ...
was migrated to
Git Git () is a distributed version control system that tracks versions of files. It is often used to control source code by programmers who are developing software collaboratively. Design goals of Git include speed, data integrity, and suppor ...
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 image A disk image is a snapshot of a storage device's content typically stored in a file on another storage device. Traditionally, a disk image was relatively large because it was a bit-by-bit copy of every storage location of a device (i.e. every ...
s, 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 A binary file is a computer file that is not a text file. The term "binary file" is often used as a term meaning "non-text file". Many binary file formats contain parts that can be interpreted as text; for example, some computer document files ...
and to take advantage of shared code (ELKS does not support
shared libraries In computing, a library is a collection of resources that can be leveraged during software development to implement a computer program. Commonly, a library consists of executable code such as compiled functions and classes, or a library can ...
).
BusyBox BusyBox is a software suite that provides several List of Unix commands, Unix utilities in a single executable file. It runs in a variety of POSIX environments such as Linux, Android (operating system), Android, and FreeBSD, although many of the ...
-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 () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
. 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 In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer. Since a computer, at base, only ...
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 The GNU Compiler Collection (GCC) is a collection of compilers from the GNU Project that support various programming languages, Computer architecture, hardware architectures, and operating systems. The Free Software Foundation (FSF) distributes ...
- 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. 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. 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 communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are ...
stack implemented as a user mode process, supporting TCP,
ICMP The Internet Control Message Protocol (ICMP) is a supporting protocol in the Internet protocol suite. It is used by network devices, including routers, to send error messages and operational information indicating success or failure when com ...
, ARP. * User level networking support for
telnet Telnet (sometimes stylized TELNET) is a client-server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet. It is a protocol for bidirectional 8-bit communications. Its main ...
/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 A sash is a large and usually colorful ribbon or band of material worn around the human body, either draping from one shoulder to the opposing hip and back up, or else encircling the waist. The sash around the waist may be worn in daily attire, ...
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 and was the default file system for the MS-DOS and Windows 9x operating systems. Originally developed in 1977 for use on floppy disks, it was adapted for use on Ha ...
/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 simply , is a lineup of Japanese 16-bit and 32-bit Personal computer, personal computers manufactured by NEC from 1982 to 2003. While based on Intel processors, it uses an in-house architecture making it inc ...
and 80186/80188. Enhancements included: * Kernel and network debugging tools,
toolchain A toolchain is a set of software development tools used to build and otherwise develop software. Often, the tools are executed sequentially and form a pipeline such that the output of one tool is the input for the next. Sometimes the term is us ...
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 (sometimes stylized TELNET) is a client-server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet. It is a protocol for bidirectional 8-bit communications. Its main ...
,
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 dat ...
,
http HTTP (Hypertext Transfer Protocol) 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, wher ...
and raw tcp (
netcat netcat (often abbreviated to nc) is a computer networking utility for reading from and writing to network connections using Transmission Control Protocol, TCP or User Datagram Protocol, UDP. The command (computing), command is designed to be a ...
) * Improved runtime configuration via /bootopts configuration file, * XMS-support for
386 __NOTOC__ Year 386 (Roman numerals, CCCLXXXVI) was a common year starting on Thursday of the Julian calendar. At the time, it was known as the Year of the Consulship of Honorius and Euodius (or, less frequently, year 1139 ''Ab urbe condita''). ...
and 286 systems, enabling high memory buffers * New
SSD A solid-state drive (SSD) is a type of solid-state storage device that uses Integrated circuit, integrated circuits to store data persistence (computer science), persistently. It is sometimes called semiconductor storage device, solid-stat ...
driver * Support for compressed executables * Support for very low memory environments (256k) * Library and
system call In computing, a system call (syscall) is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services (for example, accessing a hard disk drive ...
enhancements * Kernel support for variable
sector Sector may refer to: Places * Sector, West Virginia, U.S. Geometry * Circular sector, the portion of a disc enclosed by two radii and a circular arc * Hyperbolic sector, a region enclosed by two radii and a hyperbolic arc * Spherical sector, a po ...
sizes (for
PC-98 The , commonly shortened to PC-98 or simply , is a lineup of Japanese 16-bit and 32-bit Personal computer, personal computers manufactured by NEC from 1982 to 2003. While based on Intel processors, it uses an in-house architecture making it inc ...
platform) * New startup configuration files for networking and mass storage * Improved networking support when running in
QEMU The Quick Emulator (QEMU) is a free and open-source emulator that uses dynamic binary translation to emulate a computer's processor; that is, it translates the emulated binary codes to an equivalent binary format which is executed by the mach ...
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 the 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: *
BASIC Basic or BASIC may refer to: Science and technology * BASIC, a computer programming language * Basic (chemistry), having the properties of a base * Basic access authentication, in HTTP Entertainment * Basic (film), ''Basic'' (film), a 2003 film ...
interpreter with demo programs * Manual pages * Expanded support for the new platforms - PC98 and 80186/80188, notably SCSI and IDE drive support for the PC98 * Kernel, library and networking fixes/enhancements * New commands, such as
tar Tar is a dark brown or black viscous liquid of hydrocarbons and free carbon, obtained from a wide variety of organic materials through destructive distillation. Tar can be produced from coal, wood, petroleum, or peat. "a dark brown or black b ...
,
man A man is an adult male human. Before adulthood, a male child or adolescent is referred to as a boy. Like most other male mammals, a man's genome usually inherits an X chromosome from the mother and a Y chromosome from the f ...
and
compress compress is a Unix shell compression program based on the LZW compression algorithm. Compared to gzip's fastest setting, compress is slightly slower at compression, slightly faster at decompression, and has a significantly lower compression ...
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.ELKS v0.7.0
/ref>


See also

* TinyLinux *
μClinux μ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 patc ...

Fuzix OS
a Linux-like for ''
8-bit In computer architecture, 8-bit integers or other data units are those that are 8 bits wide (1 octet). Also, 8-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data bu ...
'' architectures


References


External links


old ELKS page
* * * {{github, ghaerr/elks/tree/master/elksemu, Elksemu, part of development tools Linux kernel Monolithic kernels Embedded Linux Lightweight Unix-like systems