Embeddable Linux Kernel Subset: Difference between revisions
Better grammar |
CompuHacker (talk | contribs) |
||
(26 intermediate revisions by 18 users not shown) | |||
Line 1: | Line 1: | ||
{{For|the Emergency lane keeping system (ELKS)|Lane departure warning system}} |
{{For|the Emergency lane keeping system (ELKS)|Lane departure warning system}} |
||
{{primary sources|date=March 2024}} |
|||
{{Infobox OS |
{{Infobox OS |
||
| name = ELKS |
| name = ELKS |
||
| logo = ELKS logo.svg |
|||
| logo = http://elks.sourceforge.net/Images/ELKSlogo.gif |
|||
| family = [[Unix-like]] |
| family = [[Unix-like]] |
||
| released = 0.0.76 ({{Start date and age|1999|05|20|df=yes}}) |
| released = 0.0.76 ({{Start date and age|1999|05|20|df=yes}}) |
||
| latest release version = 0. |
| latest release version = 0.8.0 |
||
| latest release date = {{Start date and age| |
| latest release date = {{Start date and age|2024|09|24|df=yes}} |
||
| language = [[English language|English]] |
| language = [[English language|English]] |
||
| kernel type = [[Monolithic kernel|Monolithic]] |
| kernel type = [[Monolithic kernel|Monolithic]] |
||
| license = [[GPL v2]]<ref>{{cite web |url=https://github.com/ |
| license = [[GPL v2]]<ref>{{cite web |url=https://github.com/ghaerr/elks/blob/master/LICENSE |title=LICENSE file on github|website=[[GitHub]] }}</ref> |
||
}} |
}} |
||
⚫ | The '''Embeddable Linux Kernel Subset''' ('''ELKS'''), formerly known as '''Linux-8086''', is a [[Linux-like]] operating system [[kernel (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 [[microprocessor]]s not supported by [[32-bit]] [[Linux]].<ref>{{Cite book|url=https://www.worldcat.org/oclc/273049576|title=Building embedded Linux systems|date=2008|publisher=O'Reilly Media|others=Karim Yaghmour|isbn=978-0-596-52968-0|edition=2nd|location=Sebastopol [Calif.]|pages=7|oclc=273049576}}</ref><ref>{{Cite book|last=Danesh|first=Arman|url=https://www.worldcat.org/oclc/437171498|title=MasteringTM Linux.|date=2006|publisher=John Wiley & Sons|others=Michael Jang|isbn=978-0-7821-5277-7|edition=2nd|location=Hoboken|pages=904|oclc=437171498}}</ref> |
||
⚫ | The '''Embeddable Linux Kernel Subset (ELKS |
||
<!-- DONE: add infos about elksemu, more details about current status?, check all links. Still TODO: running ELKS in dosemu (and maybe qemu and/or bochs), add infos from the FAQ and the "ELKS development tools" below, links to other usages? --> |
<!-- DONE: add infos about elksemu, more details about current status?, check all links. Still TODO: running ELKS in dosemu (and maybe qemu and/or bochs), add infos from the FAQ and the "ELKS development tools" below, links to other usages? --> |
||
==Features and compatibility== |
==Features and compatibility== |
||
ELKS is [[free software]] and available under the [[GNU General Public License]] (GPL). It can work with early |
ELKS is [[free software]] and available under the [[GNU General Public License]] (GPL). It can work with early [[16-bit]] (e.g. 8086, [[Intel 8088|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 computer|single board microcomputers]], intended as educational tools for "[[wikt:homebrew|homebrew]]" projects (hardware [[Hacker (hobbyist)|hacking]]), as well as embedded controller systems (e.g. [[Automation]]).<ref name="Intro">[http://elks.sourceforge.net/introduction.html Introduction to ELKS]</ref> |
||
Early versions of ELKS also ran on [[Psion Series 3#Psion Series 3a| |
Early versions of ELKS also ran on [[Psion Series 3#Psion Series 3a|Psion 3a]] and 3aR [[EPOC (operating system)#EPOC16|SIBO]] (SIxteen Bit Organiser) [[Personal Digital Assistant|PDA]]s with NEC [[NEC V20#Variants and successors|V30]] CPUs,<ref name="Intro"/><ref>{{cite web |url=http://www.elks.ecs.soton.ac.uk/sibo.php3 |title=Information on SIBO |accessdate=2014-03-02 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20011021222654/http://www.elks.ecs.soton.ac.uk/sibo.php3 |archivedate=October 21, 2001 }}</ref> providing another possible field of operation ([[gadget]] hardware), if ported to such a platform. This effort was called ELKSibo.<ref>{{cite web |url=http://www.mungewell.ndirect.co.uk/linux/ |title=Information on ELKSibo |accessdate=2014-03-02 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20050327202617/http://www.mungewell.ndirect.co.uk/linux/ |archivedate=March 27, 2005 }}</ref> Due to lack of interest, SIBO support was removed from version 0.4.0. |
||
Native ELKS programs may run [[Emulator|emulated]] with |
Native ELKS programs may run [[Emulator|emulated]] with Elksemu, allowing 8086 code to be used under Linux-i386.<ref>[http://linux.die.net/man/1/elksemu Elksemu man page]</ref> An effort to provide ELKS with an [[Eiffel (programming language)|Eiffel]] compliant [[Library (computing)|library]] also exists.<ref>[http://sourceforge.net/projects/freeelks/ Implementation of ELKS Eiffel library]</ref> |
||
==History== |
==History== |
||
Development of |
Development of Linux-8086 started in 1995 by Linux kernel developers [[Alan Cox (computer programmer)|Alan Cox]] and Chad Page as a [[fork (software development)|fork]] of the standard Linux. By early 1996 the project was renamed ELKS (Embeddable Linux Kernel Subset), and in 1997 the first website<ref>{{Cite web |url=http://www.elks.ecs.soton.ac.uk/ |title=Archived copy |access-date=November 16, 2006 |archive-date=September 24, 2001 |archive-url=https://web.archive.org/web/20010924210617/http://www.elks.ecs.soton.ac.uk/ |url-status=dead }})</ref> 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 [http://www.microwindows.org/ Nano-X Window System]). On July 21, ELKS booted on a [[Psion PLC|Psion]] PDA with SIBO architecture. ELKS 0.0.82 came out on January 10, 2000. By including the SIBO [[Porting|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]].<ref>[http://elks.sourceforge.net elks.sourceforge.net]</ref> |
||
On January 6, 2001, Cox declared ELKS "basically dead".<ref>January 6, 2001, {{cite web |url=http://sourceforge.net/forum/forum.php?forum_id=56220 |title=status update by Alan Cox |accessdate=2006-11-16 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20010920200533/http://sourceforge.net/forum/forum.php?forum_id=56220 |archivedate=September 20, 2001 }}</ref> 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 |
On January 6, 2001, Cox declared ELKS "basically dead".<ref>January 6, 2001, {{cite web |url=http://sourceforge.net/forum/forum.php?forum_id=56220 |title=status update by Alan Cox |accessdate=2006-11-16 |url-status=bot: unknown |archiveurl=https://web.archive.org/web/20010920200533/http://sourceforge.net/forum/forum.php?forum_id=56220 |archivedate=September 20, 2001 }}</ref> 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 [[Development stage#Beta|beta version]].<ref name="Rel_Info_old">{{Cite web |url=http://sourceforge.net/p/elks/news/ |title=Older release information, e.g. on ELKS 0.1.0, the first Beta |access-date=2014-03-02 |archive-url=https://web.archive.org/web/20140316152219/http://sourceforge.net/p/elks/news/ |archive-date=2014-03-16 |url-status=dead }}</ref> 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.<ref>[https://lwn.net/Articles/18400/ Announce of the EDE 0.0.5 release]</ref> 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.<ref name="Rel_Info_old" /> |
||
A development into |
A development into FlightLinux, a [[Real-time computing|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.<ref>[http://www.spinics.net/lists/linux-8086/msg00264.html Linux-8086: Flight Linux]</ref> |
||
==Current status and usage== |
==Current status and usage== |
||
Since January 2012 ELKS is again under development. The CVS repository was migrated to [[Git (software)|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 |
Since January 2012 ELKS is again under development. The CVS [[software repository|repository]] was migrated to [[Git (software)|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 image]]s, fixing compilation bugs of the previous version and removing unused codes.<ref>{{Cite web |url=http://www.spinics.net/lists/linux-8086/msg00404.html |title=ELKS release 0.1.4 |access-date=2012-02-19 |archive-url=https://web.archive.org/web/20120221140352/http://www.spinics.net/lists/linux-8086/msg00404.html |archive-date=2012-02-21 |url-status=dead }}</ref> 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 [[Library (computing)#Shared libraries|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.<ref>[https://github.com/ghaerr/elks/tree/master/elkscmd/busyelks BusyELKS introduction]</ref> On November 14, 2013, project development moved to [[GitHub]].<ref>[http://www.spinics.net/lists/linux-8086/msg00500.html Info on ELKS' GitHub move]</ref> Rudimentary Ethernet and FAT support were added in 2017.<ref>{{Cite web|url=https://www.spinics.net/lists/linux-8086/msg00748.html|title=ELKS is now Ethernet capable — Linux for 8086|website=www.spinics.net|access-date=2018-06-25}}</ref> |
||
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.<ref>{{Cite web|title=ELKS v0.4.0 Pre-release version history and credits · Issue #873 · |
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 [[Borland C++|BCC]] compiler to the more recent GCC-IA16 ([[GNU Compiler Collection]]-[[List_of_Intel_CPU_microarchitectures#16-bit|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.<ref>{{Cite web|title=ELKS v0.4.0 Pre-release version history and credits · Issue #873 · ghaerr/elks|url=https://github.com/ghaerr/elks/issues/873|access-date=2021-04-09|website=GitHub|language=en}}</ref> 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 |
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.<ref>{{Cite web|title=Release ELKS v0.5.0 · ghaerr/elks|url=https://github.com/ghaerr/elks/releases/tag/v0.5.0|access-date=2022-02-09|website=GitHub|language=en}}</ref> 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.<ref name=":0">{{Cite web |title=Release ELKS v0.6.0 · ghaerr/elks |url=https://github.com/ghaerr/elks/releases/tag/v0.6.0 |access-date=2022-06-17 |website=GitHub |language=en}}</ref> |
||
== Version 0.4.0 == |
== 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.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<ref>{{Cite web|title=ELKS wiki|url=https://github.com/ |
* Documentation Wiki<ref>{{Cite web|title=ELKS wiki|url=https://github.com/ghaerr/elks/wiki|access-date=2021-04-09|website=GitHub|language=en}}</ref> |
||
* Major kernel enhancements – size, stability, robustness, speed, system calls and debugging features. |
* Major kernel enhancements – size, stability, robustness, speed, system calls and debugging features. |
||
* Reliable [[Internet protocol suite|TCP/IP]] stack implemented as a user mode process, supporting TCP, [[Internet Control Message Protocol|ICMP]], ARP. |
* Reliable [[Internet protocol suite|TCP/IP]] stack implemented as a user mode process, supporting TCP, [[Internet Control Message Protocol|ICMP]], [[Address Resolution Protocol|ARP]]. |
||
* User level networking support for [[telnet]]/telnetd and file transfer. |
* User level networking support for [[telnet]]/telnetd and file transfer. |
||
* [[Serial Line Internet Protocol|Serial IP]] and [[Ethernet]] (NE1K/[[Ne2k|NE2K]]/WD8003) support. |
* [[Serial Line Internet Protocol|Serial IP]] and [[Ethernet]] (NE1K/[[Ne2k|NE2K]]/WD8003) support. |
||
* Many new and updated user level commands, including ash and sash shells. |
* Many new and updated user level commands, including [[Almquist shell|ash]] and [[Stand-alone shell|sash]] [[Unix shell|shells]]. |
||
* Many cross development tool-chain enhancements supporting more memory models, easing porting of more applications. |
* Many cross development tool-chain enhancements supporting more memory models, easing porting of more applications. |
||
* Robust [[FAT16]]/32 and [[MINIX file system|Minix1]] file system support, including booting from /root on FAT file systems. |
* Robust [[FAT16]]/32 and [[MINIX file system|Minix1]] file system support, including booting from /root on FAT file systems. |
||
Line 52: | Line 52: | ||
== Version 0.5.0 == |
== 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 |
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-9800 series|PC-98]] and [[Intel 80186|8018X]]. Enhancements included:<ref>{{Cite web|title=Release ELKS v0.5.0 · ghaerr/elks|url=https://github.com/ghaerr/elks/releases/tag/v0.5.0|access-date=2022-02-09|website=GitHub|language=en}}</ref> |
||
* Kernel and network debugging tools, toolchain improvements, cleanups to ease porting to new platforms |
* Kernel and network debugging tools, [[toolchain]] improvements, cleanups to ease porting to new platforms |
||
* Network stack stability and performance improvements |
* Network stack stability and performance improvements |
||
* Native ftp/ftpd programs, expanding network application level protocol support to [[telnet]], [[File Transfer Protocol|ftp]], [[Hypertext Transfer Protocol|http]] and raw tcp ([[netcat]]) |
* Native ftp/ftpd programs, expanding network application level protocol support to [[telnet]], [[File Transfer Protocol|ftp]], [[Hypertext Transfer Protocol|http]] and raw tcp ([[netcat]]) |
||
Line 60: | Line 60: | ||
* [[XMS (memory management)|XMS]]-support for [[80386|386]] and [[80286|286]] systems, enabling high memory buffers |
* [[XMS (memory management)|XMS]]-support for [[80386|386]] and [[80286|286]] systems, enabling high memory buffers |
||
* New [[Solid-state drive|SSD]] driver |
* New [[Solid-state drive|SSD]] driver |
||
* Support for compressed executables<ref>{{Cite web|title=[kernel] Implement compressed executables in ELKS by ghaerr · Pull Request #912 · |
* Support for compressed executables<ref>{{Cite web|title=[kernel] Implement compressed executables in ELKS by ghaerr · Pull Request #912 · ghaerr/elks|url=https://github.com/ghaerr/elks/pull/912|access-date=2021-04-10|website=GitHub|language=en}}</ref> |
||
* Support for very low memory environments (256k) |
* Support for very low memory environments (256k) |
||
* Library and system call enhancements |
* Library and [[system call]] enhancements |
||
* Kernel support for variable sector sizes (for PC-98 platform) |
* Kernel support for variable [[disk sector|sector]] sizes (for [[PC-98]] platform) |
||
* New startup configuration files for networking and mass storage |
* New startup configuration files for networking and mass storage |
||
* Improved networking support when running in [[QEMU]] |
* Improved networking support when running in [[QEMU]] |
||
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. |
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:<ref name=":0" /> |
|||
* [[BASIC]] interpreter with demo programs |
|||
* Manual pages |
|||
* Expanded support for the new platforms - [[PC-9800 series|PC98]] and 8081x, notably SCSI and IDE drive support for the PC98 |
|||
* Kernel, library and networking fixes/enhancements |
|||
* New commands, such as [[tar (computing)|tar]], [[man page|man]] and [[compress (software)|compress]] |
|||
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.<ref>[https://github.com/ghaerr/elks/releases/tag/v0.7.0 ELKS v0.7.0 ]</ref> |
|||
==See also== |
==See also== |
||
{{Portal|Free and open-source software}} |
{{Portal|Free and open-source software}} |
||
* [[IBM Personal Computer]] |
|||
* [[TinyLinux]] |
* [[TinyLinux]] |
||
* [[ |
* [[μClinux]] |
||
* [https:// |
* [https://www.fuzix.org Fuzix OS], a Linux-like for ''[[8-bit]]'' architectures |
||
==References== |
==References== |
||
Line 81: | Line 95: | ||
==External links== |
==External links== |
||
* |
* [https://elks.sf.net old ELKS page] |
||
⚫ | |||
* {{sourceforge|elks}} |
* {{sourceforge|elks}} |
||
* {{github| |
* {{github|tkchia/gcc-ia16|Official ELKS development tools page}} |
||
⚫ | |||
[[Category:Linux kernel]] |
[[Category:Linux kernel]] |
Latest revision as of 21:53, 5 November 2024
OS family | Unix-like |
---|---|
Initial release | 0.0.76 (20 May 1999 | )
Latest release | 0.8.0 / 24 September 2024 |
Repository | |
Available in | English |
Kernel type | Monolithic |
License | GPL v2[1] |
Official website | github |
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]
Features and compatibility
[edit]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
[edit]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
[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.[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
[edit]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[22]
- Major kernel enhancements – size, stability, robustness, speed, system calls and debugging features.
- Reliable TCP/IP stack implemented as a user mode process, supporting TCP, ICMP, ARP.
- User level networking support for telnet/telnetd and file transfer.
- Serial IP and Ethernet (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/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
[edit]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]
- 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, ftp, http and raw tcp (netcat)
- Improved runtime configuration via /bootopts configuration file,
- XMS-support for 386 and 286 systems, enabling high memory buffers
- New SSD driver
- Support for compressed executables[24]
- 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
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
[edit]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]
- BASIC interpreter with demo programs
- Manual pages
- Expanded support for the new platforms - PC98 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.
Version 0.7.0
[edit]It was released on August 3, 2023.[25]
See also
[edit]References
[edit]- ^ "LICENSE file on github". GitHub.
- ^ 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) - ^ Danesh, Arman (2006). MasteringTM Linux. Michael Jang (2nd ed.). Hoboken: John Wiley & Sons. p. 904. ISBN 978-0-7821-5277-7. OCLC 437171498.
- ^ a b Introduction to ELKS
- ^ "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) - ^ "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) - ^ Elksemu man page
- ^ Implementation of ELKS Eiffel library
- ^ "Archived copy". Archived from the original on September 24, 2001. Retrieved November 16, 2006.
{{cite web}}
: CS1 maint: archived copy as title (link)) - ^ elks.sourceforge.net
- ^ 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) - ^ 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.
- ^ Announce of the EDE 0.0.5 release
- ^ Linux-8086: Flight Linux
- ^ "ELKS release 0.1.4". Archived from the original on 2012-02-21. Retrieved 2012-02-19.
- ^ BusyELKS introduction
- ^ Info on ELKS' GitHub move
- ^ "ELKS is now Ethernet capable — Linux for 8086". www.spinics.net. Retrieved 2018-06-25.
- ^ "ELKS v0.4.0 Pre-release version history and credits · Issue #873 · ghaerr/elks". GitHub. Retrieved 2021-04-09.
- ^ "Release ELKS v0.5.0 · ghaerr/elks". GitHub. Retrieved 2022-02-09.
- ^ a b "Release ELKS v0.6.0 · ghaerr/elks". GitHub. Retrieved 2022-06-17.
- ^ "ELKS wiki". GitHub. Retrieved 2021-04-09.
- ^ "Release ELKS v0.5.0 · ghaerr/elks". GitHub. Retrieved 2022-02-09.
- ^ "[kernel] Implement compressed executables in ELKS by ghaerr · Pull Request #912 · ghaerr/elks". GitHub. Retrieved 2021-04-10.
- ^ ELKS v0.7.0