Skip to content

ELKS v0.9.2

Latest

Choose a tag to compare

@ghaerr ghaerr released this 06 Sep 03:32

We are proud to announce ELKS v0.9.2 released on Sep 5, 2026.
Thank you to all that have contributed and are using ELKS, and enjoy!

ELKS v0.9.2 Downloads

Prebuilt disk images for floppy and hard disks are downloadable below from Github Assets for this release.
These images can be used to boot from PC/XT/AT or PC-98 hardware, or emulators, such as QEMU, DOSBox-X, Bochs, pcEM, MartyPC or copy.sh/v86. ROM images for various platforms are also included and can be emulated using EMU86.
The PC images are built with network support by default, supporting NE2K, WD and 3Com NICs.
See the Wiki HowTo for more information.

ELKS v0.9.2 Enhancements

Thank you to all who contributed to ELKS enhancements, bug identification, testing and fixes.
The system continues to be very stable, with no known crashes and long uptimes.

Major Enhancements

Major additions include addition of long-requested networking commands, such as ping, curl and ifconfig, along with
implementation of the DHCP protocol for automatic networking setup of ELKS (thanks @djohanse!).
A number of network hang and speed issues were also fixed.

Audio support was greatly enhanced with the contribution of PC speaker-based audio sequencing (thanks @Vutshi) and support for SoundBlaster cards (thanks @parabyte).

Initial support for an experimental protected-mode kernel was implemented that loads segment registers with 80286/80386-based selectors allowing hardware-protected memory regions, which also enables the ability to use all of XMS memory for program execution and program data (thanks @duzenko).
The protected mode kernel can run most non-graphical ELKS applications now.

A network driver AMD PCnet/Lance was contributed, which works in real and protected mode (thanks @duzenko).

New Commands

Updated Commands

  • [cmds] Allow max 16k buffer in dd, stops SBRK kernel error by @ghaerr in #2709
  • [cmds] Some fixups and cleanup for dmesg by @ghaerr in #2770
  • [kernel,cmds] Show physical memory address in meminfo for PM XMS allocations by @ghaerr in #2763
  • [cmds] Add RANDOMIZE to basic by @tyama501 in #2806
  • write - bugfix, recepient username is printed instead of sender username by @venomix666 in #2782
  • head, tail, uniq: use long counts to avoid 16-bit overflow by @duzenko in #2755

Building, Boot and Runtime Configuration

  • [build] Build ELKS using parallel make automatically (using up to max CPU cores) by @ghaerr in #2701
  • [build] Add grep onto 720k+ floppies, adjust other apps in images by @ghaerr in #2708
  • [scripts] Modify qemu.sh to use port 2121 instead of 8021. by @ghaerr in #2707
  • [config] Allow for easier configuration running in 256k RAM by @ghaerr in #2710
  • [App] Add dmesg and screen to fd1232c by @tyama501 in #2773
  • elf2elks: Windows share compatibility by @duzenko in #2765
  • ash/mkinit: use rename() instead of link()+unlink() to install init.c by @duzenko in #2766
  • Elks parallel compress by @djohanse in #2732

Kernel Enhancements

  • [kernel] Add experimental PC speaker sequencer by @Vutshi in #2674
  • [kernel] Cleanup kernel PC speaker audio driver by @ghaerr in #2675
  • [kernel] Fix file writes discarded on FAT filesystems witout /DEV directory by @ghaerr in #2677
  • [kernel] Only use CMOS register 0x10 in DF driver for floppy count by @ghaerr in #2679
  • [kernel] Rearchitect fake FAT /dev inode numbers to fix 360k FAT boot failure by @ghaerr in #2681
  • [kernel] Allow unimplemented FDC version command for MartyPC in direct FD driver by @ghaerr in #2682
  • [kernel] Allow DOS v3.31+ BPB to set floppy CHS in BIOS driver by @ghaerr in #2684
  • [kernel] Fix config.h typo with CONFIG_BLK_DEV_FD option for DF driver track cache by @ghaerr in #2685
  • [kernel] Various small source file cleanups by @ghaerr in #2711
  • [kernel] Warn when cylinder count too large for BIOS HD driver, increase kstack by @ghaerr in #2714
  • [kernel] Guard fast serial IRQ handler against spurious QEMU interrupts by @duzenko in #2719
  • [kernel] First step towards protected mode kernel for 286/386+ CPUs by @ghaerr in #2721
  • [kernel] Implement 286 protected-mode kernel (CONFIG_286_PMODE) by @duzenko in #2722
  • [kernel] Cleanup protected mode kernel code by @ghaerr in #2723
  • [kernel] Get PM fartext kernel working by @ghaerr in #2727
  • [kernel] Move PM IDT to real mode IVT location at 0:0 by @ghaerr in #2728
  • [kernel] Implement EXT buffers and XMS in PM kernel by @ghaerr in #2729
  • [kernel] Update GDT and IDT structure members for 80386+ compatibility in PM kernel by @ghaerr in #2730
  • [kernel] Various PM kernel cleanups by @ghaerr in #2731
  • [kernel] Fix BIOSDATA descriptor limit (bytes, not paragraphs) — PM t… by @duzenko in #2735
  • [kernel] Fix medium model signal handler range check by @ghaerr in #2758
  • [kernel] Remove segment arithmetic in direct console for PM kernel by @ghaerr in #2760
  • [kernel] Execute user programs in XMS memory using PM kernel by @ghaerr in #2761
  • [kernel] More fixes to PM kernel by @ghaerr in #2771
  • [kernel] Port XMS ramdisk driver to PM kernel by @ghaerr in #2774
  • [kernel] Move GDT out of kernel data segment to main memory by @ghaerr in #2777
  • [kernel] Build all possible drivers whether linked into kernel or not by @ghaerr in #2796
  • [kernel] Refactor direct console to support Amstrad PEGA/IGA and IBM PC by @ghaerr in #2797
  • [kernel] Use himem.sys method to enable A20 for greater 8042 compatibility by @ghaerr in #2798
  • [kernel] Implement /bootopts ne0=off for all NIC drivers, other cleanup by @ghaerr in #2794
  • [kernel] Fix triple-fault condition in PM fault reporter by @ghaerr in #2742
  • [kernel] Implement vfork kernel syscall by @ghaerr in #2754
  • [directfd] Fix data corruption on odd sector-per-track disc I/O by @ghaerr in #2689
  • [console] Enable ANSI emulation on the Amstrad IGA console by @parabyte in #2783
  • [console] Allow up to 8 RAM-backed text consoles and optionally save/restore on graphics program exit by @ghaerr in #2716
  • Add XT MFM, SMC Ultra and Amstrad PEGA drivers (verified on real PC1640) by @parabyte in #2776
  • MFM driver: controller fault recovery, optional IRQ 5 completion, 8237 Extended Write option by @parabyte in #2787
  • Sound Blaster /dev/dsp driver, OPTi MAD16 bring-up, and audio userland by @parabyte in #2788
  • audio: move the adpcm expander to its own file shared by play and audiorcv by @parabyte in #2804
  • MFM driver: take port, irq and flags from mfm= in /bootopts by @parabyte in #2791
  • MFM driver: park heads on shutdown by @parabyte in #2792

Networking

  • Elks dhcp implementation by @djohanse in #2739
  • [net] Fix localhost operation when used with ifconfig, add ICMP port unreachable by @djohanse in #2715
  • [net] Refactor /etc/net.cfg, use DHCP if LOCALIP= not set in /bootopts or env by @ghaerr in #2740
  • [net] Add AMD PCnet/LANCE Ethernet driver by @duzenko in #2756
  • [net] Fix ktcp silently dropping TX packets when NIC busy by @ghaerr in #2757
  • [net] Cleanup various network scripts, remove hardcoded devices from ktcp by @ghaerr in #2779
  • [net] Display Network down instead of Unknown host before net start by @ghaerr in #2784
  • [net] Add EPASV support to ftp and ftpd by @djohanse in #2800
  • [net] Fix network hang, leak and race issues in kernel and ktcp by @ghaerr in #2809
  • [net,cmds] Light cleanup of unused network/cmds code, add UDP display to netstat by @ghaerr in #2810
  • [net] Increase ktcp transfer speed replacing byte loops w/memcpy by @ghaerr in #2811
  • [net] Change meaning of SO_RCVBUF to set connect/accept buffer size by @ghaerr in #2814
  • [net] Allow ktcp to send RST to reject connections w/o allocating memory by @ghaerr in #2817
  • Dhcp readme cleanup by @djohanse in #2743
  • Do not artificially restrict ftp active mode if -n ip address specified by @djohanse in #2793
  • fix traceroute and ifconfig bugs by @djohanse in #2703
  • Remove qemu hack from ftp/ftpd by @djohanse in #2778

C Library

  • [kernel,libc] Cleanup fmemalloc, add warning for allocations > 64K in PM by @ghaerr in #2762
  • [owlibc] Add precision timer library to ELKS OpenWatcom C library by @ghaerr in #2768
  • [libc] memcpy: copy words, not bytes by @parabyte in #2802
  • Add tinyprintf linker flag to new network utilities to reduce code size by @djohanse in #2808

Documentation

  • ELKS light and dark logo in README by @Vutshi in #2688
  • [docs] Update bootopts, hosts, sys man pages, minor /bin/net cleanup by @ghaerr in #2780

New Contributors

Full Changelog: v0.9.1...v0.9.2