Releases · ghaerr/elks (original) (raw)
ELKS v0.9.1
We are proud to announce ELKS v0.9.1 released on May 5, 2026.
Thank you to all that have contributed and are using ELKS, and enjoy!
ELKS v0.9.1 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.1 Enhancements
The initial reason for this minor release is to correct the problem of having generated the wrong Nano-X server binary (/bin/nano-x) on the v0.9.0 IBM PC images. This prevented any Nano-X applications from running and is now corrected.
This release also contains corrections for a variety of potential kernel problems identified by some AI tools, but only those that allowed for straightforward fixes. In addition, the Digger game, ported to ELKS by @Vutshi, is now included on 1440k floppy and HD images.
What's Changed
- [net] Fix potential buffer overflow in ktcp slip processing by @ghaerr in #2638
- [kernel] Fix not reparenting children to init task on exit bug by @ghaerr in #2639
- [kernel] Add BH interrupt check after syscall by @ghaerr in #2640
- [kernel] Fix error to enable set_a20 and reset_a20 when USE_HIMEM_AT is configured by @swausd in #2645
- [net] Use MIME type
application/octet-streamfor unknown file types in httpd by @SuperMaxusa in #2648 - [ekermit] Add gitignore by @SuperMaxusa in #2647
- [build] Fix buildimages.sh to build IBM PC nano-X for IBM PC images by @ghaerr in #2652
- [kernel] Fix sys_wait4 not returning -ECHILD immediately in certain cases by @ghaerr in #2653
- [kernel] Fix stale mm[] segment pointers on exec and fork by @ghaerr in #2654
- [kernel] Clear inherited pending signals in fork() by @ghaerr in #2656
- [kernel] Fix sys_gettimeofday microsecond normalization by @ghaerr in #2657
- [kernel] Improve sys_signal signal number validation - reject 0 by @ghaerr in #2658
- [kernel] Don't dereference sp->tty in serial_bh for nonexistent serial ports by @ghaerr in #2659
- [kernel] Fix select() overcounting a file descriptor multiple times by @ghaerr in #2660
- [kernel] Fix AF_UNIX kernel overwrite from sun_path[sockaddr_len] by @ghaerr in #2661
- [kernel] Cancel alarm timer on process exit by @ghaerr in #2665
- [kernel] Fix off-by-one error in RAM disk segment offset by @ghaerr in #2666
- [kernel] Fix off-by-one error on max syscall # accepted by kernel by @ghaerr in #2667
- [cmds] Further tricky fixes for change in wait4/waitpid operation from #2653 by @ghaerr in #2668
- [kernel] Fix race condition between mulitple mark_bh() and bottom half execution by @ghaerr in #2669
- [kernel] Various minor kernel bug fixes found by AI by @ghaerr in #2670
- [cmds] Add ELKS Digger game to buildext.sh by @ghaerr in #2672
- [build] Create pty's mode 0666 to allow non-root use of nxstart/nxterm by @ghaerr in #2673
New Contributors
- @SuperMaxusa made their first contribution in #2648
Full Changelog: v0.9.0...v0.9.1
ELKS v0.9.0
We are proud to announce ELKS v0.9.0 released on March 20, 2026.
Thank you to all that have contributed and are using ELKS, and enjoy!
ELKS v0.9.0 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.0 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 support for:
-- Microwindows Project integration: usable graphical desktop environment(s), with multi-process client/server connections to Nano-X, terminal emulator, games, etc.
-- C86 Native C compiler toolchain on ELKS: a complete 8086 toolchain running on ELKS (or host), with the full ELKS C library ported.
-- DeSmet C (DCC): a self-compiling compiler based on the 1989 DeSmet C compiler and toolchain, running on ELKS.
-- Large variety of external ELKS applications included on HD images. These are compiled during an ELKS distribution build from their git repo in order to stay current, and automatically made available on ELKS 32MB and 64MB HD images.
-- Games: Doom by @FrenkelS, Paint by @Vutshi, Elksmoria by @tyama501, along with ttypong, tetris, invaders, advent, nxtetris, nxmine, nxworld, matrix and sl.
-- New Ports: NEC V25 by @swausd, Solo/86 by @fhendrikx, WonderSwan by @asiekierka.
-- Direct ATA driver by @fhendrikx. XT-IDE hardware support. PS/2 mouse support for copy.sh/v86 by @toncho11.
-- New support for Bochs, PCem, copy.sh/v86, MartyPC, EMU86 and Swan emulators (and continuing DOSBox-X and QEMU).
New Commands
- c86/as86/ld86: Native 8086 C compiler toolchain from @rafael2k and @ghaerr
- c88/as88/link88: DeSmet C compiler toolchain from @ghaerr
- doom: from @FrenkelS
- ekermit: kermit port from @tyama501
- elks-viewer from @rafael2k
- elkirc: IRC client from @sepen
- elksmoria: Moria port from @tyama501
- gzip: zip utilities from @rafael2k
- kilomacs: emacs kilo editor from @rafael2k
- lua: LUA interpreter port from @rafael2k
- memopad: D-Flat based TUI editor from @ghaerr
- ngircd: IRC server from @parabyte
- paint: graphical paint program from @Vutshi
Nano-X Graphical Windowing Environment
-- NXDSKTOP - A new graphical desktop environment with launcher, menus and image viewer by @toncho11
-- [Nano-X] Fix various problems with multiple client/server Nano-X by @ghaerr in #2215
-- [Nano-X] Rewrite Nano-X Makefiles for easy understanding by @ghaerr in #2221
-- [Nano-X] Speed up VGA 4-plane 16-color display output by @ghaerr in #2217
-- [nanox] Initial changes to build Server/Client mode for ELKS by @tyama501 in #2213
Updated Commands
-- [ash] Add fg command for simple job control to ash by @ghaerr in #2572
-- [basic] fix 16 color mode setting for pc-98 by @tyama501 in #2388
-- [cmds] Add 'disasm -' option to read from stdin by @ghaerr in #2118
-- [cmds] Add ^C to discard streaming input in telnet by @ghaerr in #2536
-- [cmds] Add ANSI DSR processing for dynamic window size to mined/edit by @ghaerr in #2585
-- [cmds] Add Bobcat web browser as external application by @rafael2k in #2595
-- [cmds] Add drawvhline and cleanup paint code, get C86 version working again by @ghaerr in #2278
-- [cmds] Add ekermit to distribution images by @ghaerr in #2557
-- [cmds] Add elks-viewer image viewers as external application by @rafael2k in #2588
-- [cmds] Add Kilomacs (Rafael's own version of emacs :P ) editor by @rafael2k in #2597
-- [cmds] Add Lua interpreter as external application by @rafael2k in #2594
-- [cmds] Add paint program for IA16, OWC and C86 by @ghaerr in #2259
-- [cmds] Add paintbucket fill to C86 paint by @ghaerr in #2262
-- [cmds] Add palette cache to paint bmp image drawing for speed by @ghaerr in #2281
-- [cmds] Add PPID to ps -l by @ghaerr in #2449
-- [cmds] Add simple calculator by @HelleBenjamin in #2393
-- [cmds] Add XMS total, used and free memory to meminfo display by @ghaerr in #2332
-- [cmds] Allow cp -v to work without -R by @ghaerr in #2401
-- [cmds] Always sync buffers to disk before fsync exit by @ghaerr in #2613
-- [cmds] Build fsck-dos.os2 and paint.os2 when WATCOM environment installed by @ghaerr in #2425
-- [cmds] Change 'file' to identify as86 object file instead of bcc by @ghaerr in #2114
-- [cmds] Cleanup basic stub routines by @ghaerr in #2439
-- [cmds] Display "Can't run OpenWatcom OS/2 program" when CONFIG_EXEC_OS2 not set by @ghaerr in #2164
-- [cmds] Display mouse port being opened on mouse command by @ghaerr in #2226
-- [cmds] Display offending source line on tokenization error in BASIC by @ghaerr in #2202
-- [cmds] Enhance fg command in ash shell by @ghaerr in #2574
-- [cmds] Enhance fsck-dos to work with large 32M hard drives by @ghaerr in #2399
-- [cmds] Enhance ibmpc BASIC to use EGA or VGA graphics mode by @ghaerr in #2440
-- [cmds] Enhance mv to allow renaming directories containing symlinks by @ghaerr in #2257
-- [cmds] Extend Basic MODE command for CGA, EGA and VGA by @ghaerr in #2443
-- [cmds] Fix compiler warnings based on added -Wextra flag by @ghaerr in #2111
-- [cmds] Fix makeboot -f option to use passed boot sector size by @ghaerr in #2390
-- [cmds] Fix makeboot to use proper minor number mask to get raw device using sys -M by @ghaerr in #2387
-- [cmds] Fix more not handling wrapping lines correctly on terminals sh… by @asiekierka in #2482
-- [cmds] Fix mouse release bug in paint event code by @ghaerr in #2261
-- [cmds] Fix proper operation for telnetd when no more processes by @ghaerr in #2537
-- [cmds] Fix to allow negative pid argument to kill to kill process group by @ghaerr in #2527
-- [cmds] Fix vga_drawhline in Paint by @ghaerr in #2280
-- [cmds] Get busyelks compiling again by @ghaerr in #2432
-- [cmds] Get hostdisasm working again by @ghaerr in #2115
-- [cmds] Increase ANSI DSR delay for possibly network delays by @ghaerr in #2576
-- [cmds] Increase frame rate on ttytetris by @ghaerr in #2233
-- [cmds] Introduce ability to compile and install ELKS applications outside of repo by @ghaerr in #2586
-- [cmds] Minor fixes to Paint by @ghaerr in #2423
-- [cmds] Remove ftpget, ftpput, httpget symlinks, replace w/urlget -F, -P, -H by @ghaerr in #2258
-- [cmds] Rename ttytetris -> tetris, nano-x -> nano-X for DOS FAT 8.3 compatibility by @ghaerr in #2392
-- [cmds] Set CRNL input translation in sercat by default by @ghaerr in #2525
-- [cmds] Slim down 'env' command and add back to distribution by @ghaerr in #2418
-- [cmds] Speed up Paint code drawing on slow 8088 systems by @ghaerr in #2277
-- [cmds] Update 'sys' and 'mknod' to work for updating ELKS by @ghaerr in #2186
-- [cmds] Update ecalc by @HelleBenjamin in #2394
-- [cmds] Update ecalc by @HelleBenjamin in #2397
-- [cmds] Update file cmd to recognize JPG, BMP and PPM image files by @ghaerr in #2589
-- [cmds] Update mkfat table to use cluster size 2 for 32MB hard drive by @ghaerr in #2395
-- [cmds] Keep existing terminal baud rate when running miniterm from serial port from @Mellvik TLVC
-- [ekermit] Add make hostek for host gcc by @tyama501 in #2561
-- [ekermit] Adding more checks for ttyfd and org_term since usage closes without devopen by @tyama501 in #2558
-- [eke...
v0.8.1
We are proud to announce ELKS v0.8.1 released on October 15, 2024.
Thank you to all that have contributed and are using ELKS, and enjoy!
ELKS v0.8.1 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 or dosbox-x.
The images are built with network support by default, supporting NE2K, WD and 3Com NICs.
See the Wiki HowTo for more information.
ELKS v0.8.1 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.
ELKS v0.8.1 is primarily released as a bug fix release for v0.8.0.
What's Changed
- [build] Fix cross build after version change by @ghaerr in #2038
- [cmds] Fix passwd losing /etc/passwd entries by @ghaerr in #2044
- [cmds] Fix mknod when used with minor == 0 by @ghaerr in #2045
- [cmds] Remove yacc requirement for building bc by @ghaerr in #2046
- [nx] Add CONFIG_ARCH_PC98 to ntetris.h to use same HEIGHT as VGA by @tyama501 in #2048
- Added WSL as supported build platform. by @toncho11 in #2047
- [kernel] Fix BIOS track read retry errors under QEMU by @ghaerr in #2063
- [cmds] Optionally show system startup time in getty by @ghaerr in #2064
- [cmds] Fix sys and makeboot to copy /bootopts and updated required files by @ghaerr in #2066
- [cmds] Fix mkfs to clear reserved sector corresponding to old MINIX superblock by @ghaerr in #2067
- [cmds] Have fdisk check for MBR-capable block device for safety by @ghaerr in #2069
- [build] Add various options (all default OFF) to optimize boot startup times by @ghaerr in #2071
- [cmds] Add env vars to /etc/sashrc, use HOSTNAME env var in getty not /etc/hostname by @ghaerr in #2072
- [tools] Add mtools-4.0.23 to ELKS tools build by @ghaerr in #2074
- [docs,build] Update build.sh to stop on error, update docs on mtools, flex, bison by @ghaerr in #2075
- [directfd] Add IODELAY floppy delay emulation to DF driver by @ghaerr in #2076
- [directfd] Minor code cleanup by @ghaerr in #2077
- [boot] Turn off mfs optimization by @ghaerr in #2078
Full Changelog: v0.8.0...v0.8.1
Thank you and enjoy!
v0.8.0
We are proud to announce ELKS v0.8.0 released on September 24, 2024.
Thank you to all that have contributed and are using ELKS, and enjoy!
ELKS v0.8.0 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 or dosbox-x.
The images are built with network support by default, supporting NE2K, WD and 3Com NICs.
See the Wiki HowTo for more information.
ELKS v0.8.0 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 support for:
- Application development using the Open Watcom C compiler and OS/2 executable format, allowing for
large multisegment programs to run, using all available memory if necessary. Doom was recently ported. - Add NE2K, WD and 3COM networking support to default build.
- Compressed executables by default allowing for many more applications per floppy image.
- Asynchronous I/O was added to the kernel along with @Mellvik's Direct Floppy disk driver, which
allows for other applications to run while waiting for floppy disk I/O. - All kernel resources dynamically adjustable at boot, allowing for the kernel heap, tasks,
inode and file allocations to be adjusted as required for min or max memory usage. - Increased symbolic debugging capabilities with enhancements to the symbolic disassembler,
system call and function tracing capabilities within running applications. - Rewrite of L1/L2 buffer cache operation allowing for faster operation using fewer buffers.
- Precision timing routines and removal of most all long division in the kernel and C library for
fastest operation and better elapsed time measurements.
New Commands
- [cmds] Port ttyclock to ELKS by @ghaerr in #1855
- [cmds] Port ttypong to ELKS by @ghaerr in #1864
- [cmds] Port ttytetris to ELKS by @ghaerr in #1858
- [cmds] Port md5 from Minix/NetBSD to ELKS as md5sum by @ccoffing in #1656
- [kernel,cmds] Add sysctl system call and option get/set command by @ghaerr in #1897
- [beep] Add -f and -l option by @tyama501 in #1812
- [beep] make it round by @floriangit in #1813
Updated Commands
- [cmds] Add "mouse r" for raw mouse output debugging by @ghaerr in #1888
- [cmds] Add -s, -r, and -p options to shutdown, remove reboot, poweroff by @ghaerr in #2000
- [cmds] Add accurate train timing to sl by @ghaerr in #1723
- [cmds] Add decomp - ELKS executable decompressor by @ghaerr in #1866
- [cmds] Add fsck-dos FAT filesystem checker to build by @ghaerr in #1820
- [cmds] Changes to basic.c for OpenWatcom C compilation by @ghaerr in #1903
- [cmds] Cleanup fsck-dos messages and reduce memory requirement by @ghaerr in #1823
- [cmds] Display usage on invalid mount -t parameter by @ghaerr in #1700
- [cmds] Enable more to recognize line wrapping by @ghaerr in #1714
- [cmds] Enhance ps to better recognize task struct size mismatches by @ghaerr in #1695
- [cmds] Finish fsck-dos port to ELKS, add to distribution by @ghaerr in #1821
- [cmds] Fix ELKS_VERSION= on application builds by @ghaerr in #1739
- [cmds] Fix man page reader for filenames > 14 (MINIX max) by @ghaerr in #1682
- [cmds] Fix more to display correct number of lines w/man by @ghaerr in #2030
- [cmds] Fix off-by-one bug in getty @t command by @vkoskiv in #2021
- [cmds] Fix open file on spawn of programs from /etc/inittab by @ghaerr in #1885
- [cmds] Fix rmdir -p by @ghaerr in #1643
- [cmds] Get ttyclock working with keyboard commands by @ghaerr in #1857
- [cmds] Improve fsck output formatting for -lvv and -lvvv options by @ghaerr in #1668
- [cmds] Meminfo and ps updates, small fixes by @ghaerr in #1849
- [cmds] Reduce size of ps to 6k by @ghaerr in #1691
- [cmds] Reduce size of ramdisk app, fix error messages by @ghaerr in #1669
- [cmds] Remove fsck-dos FAT32 support allowing it to work on floppies by @ghaerr in #1822
- [cmds] Reorganize clock.c source code, add AST hardware RTC support by @ghaerr in #1891
- [cmds] Replace ifdef ia16 with ifdef _M_I86 by @ghaerr in #2029
- [cmds] Replace use of non-standard malloc.h header with stdlib.h by @ghaerr in #1804
- [cmds] Rewrite kill to reduce size by @ghaerr in #1876
- [cmds] Show usage on bad options to mount command by @ghaerr in #1666
- [cmds] Speed up 'sl' - let her rip full speed by @ghaerr in #1707
- [cmds] Speed up the sl choo choo train for slow systems by @ghaerr in #1720
- [cmds] Unmount all volumes in shutdown & reboot by @vkoskiv in #1978
- [cmds] Update fsck to work with max size 64Mb HD, enhance verbose output by @ghaerr in #1671
- [cmds] Update sys command with new device numbers by @ghaerr in #1838
- [cmds] meminfo enhancements and man page by @ghaerr in #1847
- [cmds,kernel] Add meminfo -m option to display sorted main memory segments by @ghaerr in #2023
- [libc/cmds] Fix time command hour wrapping problem by @ghaerr in #1722
- [nx] Adding monochrome CGA nano-X driver. Modifying nxtetris parameter for CGA. by @tyama501 in #1957
- [disasm] Fix sign extension bug when disassembling large RAM segment offsets by @ghaerr in #1985
- screen: modernize prototypes by @ccoffing in #1781
- lp and misc cleanups by @ccoffing in #1811
- Printing by @ccoffing in #1809
- Size reductions by @ccoffing in #1783
- Tidy cal by @ccoffing in #1769
- smaller which by @ccoffing in #1776
Networking
- [net] Fix connection hang on lost SYN packet by @ghaerr in #1908
- [net] Temp fix ftpd startup with QEMU=1 set by @ghaerr in #1925
Boot and Runtime Configuration
- [config] Add CONFIG_ASYNCIO config option, cleanup INIT_REQUEST by @ghaerr in #1650
- [config] Build distribution images using CONFIG_APPS_xxx image size by @ghaerr in #1853
- [config] Do not read MK_ARCH & MK_CPU if already defined by @and3rson in #1760
- [config] Fix duplicate CONFIG_EXEC_MMODEL=y output by @ghaerr in #1883
- [config] Update config files from recent changes by @ghaerr in #1744
- [config] Update configurations for standard IBM PC build by @ghaerr in #1841
- [boot] Add enhanced debug display to setup.S for early startup debugging by @ghaerr in #1981
- [boot] Add media descriptor 0xfe and boot signature in image FD1232 for PC-98 by @tyama501 in #1851
- [boot] Allow separate EXT/L2 and XMS buffer overrides to compiled configuration by @ghaerr in #1672
- [boot] Fix boot issues when /linux or /bootopts deleted by @ghaerr in #1681
- [boot] Remove /bootopts requirement for booting from direct floppy driver by @ghaerr in #1738
- [boot] Replace panic with printk when bootopts argv/envp overflow by @ghaerr in #1986
- [bootopts] Add heap= option for dynamic sizing of kernel heap by @ghaerr in #1993
PC-98 Port
- [bioshd] 720KB 2DD support for PC-98 2HD/2DD common drive by @tyama501 in #1779
- [menuconfig] Fix PC98-1232k typo that makes error by @tyama501 in #1874
- [pc98_config] Fix typo of capital Y by @tyama501 in #1882
- PC-98 beep support by @tyama501 in #1806
Kernel Enhancements and Fixes
- [kernel,build] Small L1 buffer enhancement, add man4, cleanups by @ghaerr in #1680
- [kernel,cmds] Fix tty SIGINT not handled when using sercat by @ghaerr in #2001
- [kernel,cmds] Small fixes to p...
ELKS v0.7.0
ELKS v0.7.0 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 or dosbox-x. The images are built with network support by default, supporting NE2K, WD and 3Com NICs. See the Wiki HowTo for more information.
ELKS v0.7.0 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.
New Systems Supported
- MK-88 Russian IBM PC/XT compatible (8088 clone CPU), K1810BM88 w/256k RAM. Use CONFIG_HW_MK88 (@Vutshi)
- Monotech NuXT 2.0 board (NEC V20 CPU) using Sergey Kiselev’s BIOS (@tt1542)
- Book 8088 IBM PC/XT compatible laptop (8088 or NEC V20) (@tt1542, @Vutshi)
- Extensive testing of older IBM 5160 PC/XT/AT and Amstrad 1640 (@toncho11)
New Commands
- Port
mailapplication from MINIX (@ccoffing) - Add
fmvisual file manager - Add
disasmfor ELKS binary file symbolic disassembler - Add
consto display console screen from remote console - Add
ttyinfofor testing mouse and ANSI arrow, function key and mouse parsing - Add
hostdisasmfor host-based ELKS disassembler - Add tiny
min_initreplacement for /bin/init on very small systems - Add
matrixscreen saver - Port text adventure game
adventfrom Fuzix - Port
sl(train) program for mistypedls - Port
splitfrom BSD 4.3reno (@Mellvik) - Support D-Flat Project and
memopadeditor application - Add
ps,edit(visual screen editor), andfsckto 360k floppy - Add
nxtetristo 1440k floppy
Updated Commands
- Enhance
meminfoto include process names - Fix
cronmemory leak, other fixes (@ccoffing, @ghaerr) - Fix
tinyircto operate using ping/pong protocol (@Redfoxymoon, @DutchComputerKid) - Use PATH_MAX in all applications to prevent buffer overflow (@ccoffing)
- Nano-X won’t display cursor when no mouse present
- Fix
loginhandling on locked accounts, no home dir or long login name (@ccoffing) - Fix
passwdto work on FAT filesystems - Update
nxtetristo work at constant speed and no mouse (adds GrGetNextEventTimeout) - Update
disasmdisassembler from 86sim project, add symbolic disassembly to ELKS binaries - Add
disasm -koption to disassemble running kernel with symbols, -a for asm input - Update
lsfor better operation with deeply nested directories and no permissions (@ccoffing) - Update
ashfor invalid TERM variable checking (@ccoffing) - Fix
xargswith long input lines (@ccoffing) - Fix possible memory corruption with
dderrors (@ccoffing) - Add MOUSE_PORT=none for all Nano-X applications
- Cleanup cmds source tree to remove many compilation warnings
- Fix
screento run from FAT filesystem - Remove
pwdauth,premsand mtools from distribution image - Rename all test programs /bin/test_xxx
- Fix various
trbugs and crashes (@ccoffing) - Fix
ashbuild error on non-standardrindex/indexdefinitions (@ccoffing) - Fix
fsckout of memory problem, display issues and -r (@Mellvik, @ghaerr) - Update
mountanddfto display free space and all mounted filesystems (@Mellvik) - Fix
fmstack overwrite - Use default drive for
fdiskwhen none specified (@Mellvik) - Fix
findstack overflow - Fix sometimes improper time sort and display using
ls -l - Enhances
moreto clear screen and display (END) - Use
cp -Rinsysto fix large copy on large /bin directories (@Mellvik) - Add PEEK and POKE to
basic(@tyama501) - Rename
minedtoedit(MINIX visual editor) - Fix
hostbasicfor compilation on macOS - Enhance
fsckto use main memory, works on 65Mb MINIX filesystems
Networking
- Add multi-NIC network support, allows linking all NIC drivers at once
- Major update for NE1K NIC in 8-bit mode, use 8k buffer (@Mellvik)
- Cleanup NE2K driver (@Mellvik)
- Major WD driver enhancements for speed and reliability (@Mellvik)
- Support /bootopts flags in all NIC drivers (@Mellvik)
- New Etherlink III/3C509 NIC driver (@Mellvik)
- Add optional 8390 chip check
Boot and Runtime Configuration
- UMB address set in /bootopts
- Add blink16.config to allow symbolic kernel debugging using
blink16 - Decrease group ID numbers in /etc/{passwd,group} from 501 to fit in byte for kernel
- Optional
uname -vin /etc/profile to show build commit number - Enhance
makebootfunctionality with new options (@Mellvik) - Fix MINIX filesystem boot when root directory larger than 1 block
- Add
comirq=to set serial IRQ in /bootopts (@Mellvik) - Pass capitalized environment variables set in /bootopts to /bin/login
- Add CONFIG_SYS_NO_BININIT to build system without
/bin/init - Add CONFIG_SYS_DEFSHELL_SASH to set default shell to
sash - Add NIC flags as optional 4th parameter to
ne0=/wd0=/3c0=/bootopts (@Mellvik) - Allow forcing RAM and kernel heap size in config.h for testing small memory
PC-98 Port
- Add ANSI cursor on/off sequence (@tyama501)
- Fix
meminfobuild (@tyama501) - Support high-resolution PC-H98 (@tyama501)
- Fix 16-bit cylinder numbers (@tyama501)
- Calculate total mem available at boot (@tyama501)
- Add CGA compatible colors to
basic(@tyama501) - Use calculated kernel timeouts in serial driver
- Add PC-98 bus mouse driver and XOR drawing to Nano-X (@tyama501)
- Fix Nano-X CI build
- Fix
clockandpsbuild - Add timeout to avoid hanging when serial cable not connected (@tyama501)
- Clear text and graphics ram on Nano-X applications startup (@tyama501)
- Fix freezing issue by removing BIOS call to old IRQ 0 vector (@tyama501)
- Add serial port driver (@tyama501)
- Add PC-98 to CI build
- Add PC-98 screen and ramfont drivers to Nano-X (@tyama501)
- Disable whole-track reads for PC-98 for now (@tkchia)
- Read /bootopts on FAT boot (@tyama501)
- Detect number of FD driver, probe for 1232/1440 and support both (@tyama501)
8018X Port
- Add
romprgprogram to flash chips (@cocus) - Add ATC-compatible RTC for clock app (@cocus)
- Add 8018X port to CI build
- Add
disable_irqto disable IRQs (@cocus) - Fix ROMFS 8018X build
C Library
- Add
test_libctest suite for large portion of C library (@ccoffing) - Fix
sleepreturn value (@ccoffing) - Fix major
strncatbug, affectskilo,sashhistory,tinyirc(@ccoffing) - Use PATH_MAX and NAME_MAX for overflow prevention (@ccoffing)
- Cleanup various compilation warnings using const and size_t
- Fix wildcard expression undefined behaviour using []? (@ccoffing)
- Fix
abortcalling kill with arguments reversed (@tkchia) - Rewrite
memcpyin ASM for speed (found through blink16 emulator) - Fix
fgetsboundary bug found through libc test suite (@ccoffing) - Fix tui lib cursor location for
fmandmoria - Optimize
opendirfor memory allocations and speed (@ccoffing) - Fix
fcloseto close file even when flush fails (@ccoffing) - Optimize C library startup using __argc, __argv
- Add instrumentation routines for automatic symbolic function tracing
- Add optional
--ftrace/FTRACE=command option for optional program function call tracing - Standardize C library constructor/destructor function names, priorities
- Use __argc/__argv from .postinit section
- Add
__weakenand__LINK_SYMBOLweak symbol support (@tkchia, @ghaerr) - Cleanup exec* library functions
- Use weak linking for optional C library floating point support
- Remove use of __P, __const and extern in header files
- Enhance library for possible use of new REGPARMCALL calling convention
- Remove include <linuxmt/config.h> unless required to stop unnecessary rebuilds
- Reduce min executable and distribution image size by separating out syscall wrappers
- Remove C library kenel callback code when
signalnot used by application - Add C library support for
-mregparmcallcalling convention (@tkchia) - Fix build to allow
-mregparmcallcalling convention for most ELKS applications - Fix
usleepfor POSIX return value,basenamefailure, remove__sys_errlist(@ccoffing) - Accurate dependency handling for C library build (@tkchia)
- Delete duplicate leap year function (@coffing)
- Reduce size of
__tm_convandstrerror(@coffing) - Add stack backtrace and 8086 disassembler to debug library
- Fix buffer overflow in
isatty(@tkchia) - Add
mktimelibrary function - Fix incorrect results returned by
strtolandstrtoulwhen string not NUL terminated - Fix
memcmplibrary function in C lib and kernel (@Mellvik) - Cleanup use of
__extension__,asmandvolatileto allow option-Wpedantic - Add 64-bit long long
lltostrandulltostrfunctions
Kernel Enhancements and Fixes
- Support UMB memory for automatic kernel and application use (@mirevall)
- Update Spanish keyboard layout and support AltGr (@jsedanoj)
- Support floppy drives on NuXT computer using Sergey Kiselev’s BIOS v0.9.9
- Fix FAT filesystem /dev emulation to require /dev entry to operate
- Fix and allow multiple signals pending per process, add test_sigfail
- Fix potential
readlinkbuffer overflow (@ccoffing) - Introduce precision kernel timeouts (used in IDE query and serial drivers)
- Update all ethernet device names to 3 character names (@Mellvik)
- Enhance disc probing to be faster
- Always save BP across INT 10h calls for early IBM BIOS support
- Add KIOSOUND
ioctlfor console terminal (@tkchia) - Enhance
ustatfsto optionally not calculate freespace for FAT fs speed - Fix MINIX filesystem to allow 64Mb filesystems and
truncatebug - Fix memory leak in
free_irq - Fix dynamic IRQ mapping in serial driver (@Mellvik)
- Set COM4 default IRQ to 7
- Map ESC A through ESC Z to Alt-a through Alt-a for D-Flat and other TUI projects
- Replace non-highlighted standard colors with standard colors on ...
ELKS v0.6.0
ELKS v0.6.0 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 or dosbox-x. The images are built with network support by default, using the NE2K network card, set for I/O address=0x300 and IRQ=12. See the Wiki HowTo for more information.
ELKS v0.6.0 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.
New Commands
- BASIC Interpreter suitable for desktop and ROM systems
- BASIC graphics commands (MODE, PLOT, CIRCLE, DRAW) on PC-98 (@tyama501)
- BASIC LOAD/SAVE/DIR and various new functions (@cocus, @tyama501)
- Working tar program
- Add compress/decompress command for compressed man pages
- Add eman command to display ELKS man pages on host
- Add man command and man pages
Updated Commands
- Add internal test/[ commands to bash shell
- Add ls -S to sort by size, -U for non-sorted output, -t reverse time
- Mount command shows mounted volumes, defaults to auto-mount, -a, -q options
- Add net restart
- Fix mv command on FAT filesystems
- Enhance ls speed on FAT filesystems
- Enhance more to know about number of screen lines, Enter/2 for single/2 lines
- Add autosync to /bin/init
- Rewrite nslookup, now works
Networking
- Major fixes and 8-bit support to NE2K driver (@Mellvik)
- Major overhaul and rewrite of ftpd (@Mellvik)
- Add SITE command and idle timeout to ftpd (@Mellvik)
- Improve connect return message on ICMP dest unreachable
- Bug fixes in ftp (@Mellvik)
- Add DNS name resolution to in_gethostbyname and all network apps
- Fix premature removal of FIN packets in retransmit queue
Boot and Runtime Configuration
- Updated sys command with full disk copy for hard disks
- Add netirq=, netport= and netram= options to WD8000 driver
- New setup command to quickly configure hostname and IP address
- Add LOCALIP=, HOSTNAME=, QEMU=, TZ=, sync=, bufs= to /bootopts
PC-98 Port
- Add SCSI and IDE hard drive support (@tyama501)
- Rewrote INT 1B handler from scratch (@tyama501)
- Fix stack overflow on PC-98 BIOS
- Add BOOTCS and remove BOOTSEG to allow hard disk boot (@tyama501)
- Add option to makeboot for using external boot file (@tyama501)
- Update partition code to handle PC-98 disk partitions (@tyama501)
8018X Port
- Add capability to add applications by rom image size
- ROM support for /bin/init and full system startup
- Add interrupt pin mapping to logical IRQs (@cocus)
C Library
- Add floating point support to printf/sprintf
- Add strtod, fcvt, ecvt for floating point output
- Add math library
- Rewrite strcmp in ASM for speed
- Fix itoa/ltoa to display INT_MIN/LONG_MIN properly
- Fix various routines (strcasecmp/strncasecmp) from signed char bugs
- Rewrite ctype.h library to use small functions not table lookup
- Enhancements to save executable space, tiny printf for most applications
- Replace buggy qsort routine
- Add in_connect routine w/timeout
- Add in_resolv DNS resolver
- Use paths.h in libc functions
Kernel Enhancements and Fixes
- Fix bad directory info on large FAT disks
- Increase max mounts to 6
- Increase FAT /dev table to 41
- Add compile-time TZ= timezone support to kernel
- Fix FAT to use localtime for files
- Add process CPU % utilization and uptime
- Fix signals on systems not running /bin/init
- Add uname application and system call
- Fix integer overflow in calculating FAT start data sector
- Add alarm system call
- Rewrite kernel timer routines from scratch
- Improve floppy probing performance
- Add ustatfs system call
- Check for 386 CPU before enabling A20 for XMS buffers
- Display of free space on FAT volumes
- Dynamically allocate up to 2500 ext_buffer heads in (far) main memory
Documentation
- Man pages for most commands and system calls for ELKS runtime on disks >= 2880k
- Write boot documentation
Tools
- All images created after Github push or PR
Chief maintainer: @ghaerr
ELKS v0.5.0
ELKS v0.5.0 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 or dosbox-x. The images are built with network support by default, using the NE2K network card, set for I/O address=0x300 and IRQ=12. See the Wiki HowTo for more information.
ELKS v0.5.0 Enhancements
Thank you to all who contributed to ELKS enhancements, bug identification, testing and fixes. The system is now very stable, with no known crashes and long uptimes. Two new platform ports have been contributed and the internal architecture of the system allows for this work to be performed in an effective manner, producing working systems with only the specific changes each platform requires, with increasingly organized source code.
Ports to New Architectures
NEC PC-98 port (@tyama501)
- Includes writing new console and disk drivers for PC-98 (@tyama501)
- Kernel support for variable sector sizes (512 & 1024 bytes)
8018X port (@cocus)
Networking
- Major networking enhancements and bug fixes (@Mellvik)
- New ftp client and ftpd server (@Mellvik)
- Wide variety of debug message settings
- 8-bit NE2K driver (@cocus)
- 1500 MTU receive packets and enhanced throughput
- RST packet handling
- Runtime selection of network card I/O port (@Mellvik)
- Major updates to urlget & ftpget, new ftpput (@Mellvik)
- Add net stop support
- Major fixes to TCP protocol (sliding window, accept, FIN processing, close, retrans, SWS)
Boot and Runtime Configuration
- Added /etc/net.cfg for network settings
- Added /etc/mount.cfg for automounting disks
- New /bootopts bufs= option for dynamic xms and ext buffers, netirq, netport
- Increased /bootopts size to 511 bytes
Kernel Enhancements and Fixes
- Add XMS buffers (> 1MB memory for system buffers)
- Unreal mode, A20 gate handling, INT 15 block move
- Major source cleanups
- Lots for source reorganization for 8018X and PC-98 ports
- PTY driver data loss fixes
- Dynamic buffer allocation for pipes
- Compressed executable support
- New SSD driver
- Dynamic initial kernel heap size support
- Dynamic IRQ kernel handling (@mfld-fr)
- /dev/port kernel driver (@marcin-laszewski)
- Separate kernel PIT, PIC drivers to architecture-specific files
- Enhancements to run on smaller-memory (256K) systems
- Enable interrupts during block I/O
New System Calls
- getsockname, getpeername, setsockopt (SO_REUSEADDR, SO_RCVBUF, SO_LINGER)
Tools
- Linker enhancements for far text kernel support (@tkchia)
- Support for ROMable a.out executables (@tkchia)
- Updates to EMU86 to support kernel symbol display during execution
ELKS v0.4.0
ELKS v0.4.0 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 hardware, or an emulator, such as QEMU. The images are built with network support by default, using the NE2K network card, set for I/O address=0x300 and IRQ=12. See the Wiki HowTo for more information.
ELKS v0.4.0 Enhancements
Kernel
- Tested and works on PCs with 8088, 8086, 80286, 80386 … CPUs and later
- No compiler warnings on kernel build
- Strace working, calculates kernel stack usage
- Implement task zombie state, rewrite wait
- Implement kernel local heap (@mfld-fr)
- Improved memory segment allocator (@mfld-fr)
- Fix userland signals
- Use single far address for kernel process signaling (@tkchia)
- New synchronization primitives
- Remove unneeded and slow kernel locks
- Add race-safe sleep/wait prepare_to_wait etc
- Fix select busylooping, network semaphore lockups
- Much improved kernel debug macros and mechanism
- ^P kernel/application debug mechanism using SIGURG
- Restartable system calls
- Reduce kernel stack to 600 bytes from 988
- Align stack pointer to even boundary to save malloc issues
- Kernel FAR text section, saves 11k bytes of .text space
- Enhance I/O performance w/direct fmemcpy to/from user space
- Rewritten fmemcpy routines to use word copy
System Call Fixes: wait, rmdir, access, brk, link, stat, gettimeofday
Exec
- Separate heap & stack, v1 a.out header
- chmem command enhanced
- New compiler options for heap and stack (@tkchia)
- Tuned 4k stack / 4k heap for all processes, tuned min memory usage
- Run programs w/historical Minix a.out header (@tkchia)
- Load medium-model programs (@tkchia)
Filesystems
- FAT filesystem debugged and working
- Mountable Minix and FAT partitions
- Improved MBR, use sect_offset to support MBR boots to /dev/hda1 etc
- Add VFAT long filename support, virtual /dev directory
- Fix Minix mount/unmount superblock checking/write
- 16-bit or 32-bit inodes in kernel
- Mount readonly, remount options, can boot readonly
- Fix romdisk read directory
- Allow ramdisk size larger than 64k
- Allow preloaded ramdisks in upper memory
- FAT32 fixes, large drive mount fix
Disk & I/O Subsystem
- Rename /dev/bdX to /dev/hdX
- Support for USB drives
- Variable number of L2 buffers
- Revise /dev/hda from 4 to 8, implement partitions
- Floppy I/O to use DMASEG only when necessary
- IDE query to BIOS HD driver for reliable CHS data (@Mellvik)
- Replaced DDPT allows running on IBM XT v1 BIOS machines (@tkchia)
- Align buffers on 1K to remove DMASEG requirement
- Floppy track caching, improves floppy speed tremendously
- Block I/O subsystem enhanced, no mapbuffer or buffer copying
- 32-bit block numbers for FAT
Console
- Direct Console fnkey sequences
- Direct console CapsLock/Numlock and LED support (@Mellvik)
- Direct Console ANSI sequences for vi and sh line editing
- Combine ANSI code in BIOS and Direct Console
- Direct and BIOS console driver refactoring and cleanup
- Serial console rewritten, improved structure
- Kernel printk allowed before console init
- Add headless console for SBC systems
Drivers
- Fast serial driver
- Serial driver FIFO
- Add O_EXCL for serial com/mouse
- Implement VMIN/VMAX, termios cleanup in applications
- Dynamically allocate TTY I/O queues
- Char I/O excess wakeup calls removed for speed
- Character queues don’t have to be power of 2
- Customizable IRQ and I/O ports for all drivers
- Use simpler wait routines in network drivers
- New WD8003 network driver (@pawosm-arm)
- NE2K network driver rewritten (@Mellvik)
Networking
- Packet statistics via netstat
- Fixed ARP, Added ARP cache list display
- Debug RTO values
- Multiple session support to telnetd
- Tune timeouts for TCP transmissions
- Remove double buffering in network drivers
- Tuned network buffer sizes, implement send window write throttling
- Network throughput increased substantially
- File transfers both ways now supported
Networking Bug Fixes
- Tons of TCP/IP fixes to ktcp and kernel
- Fixed Async ARP packet handling
- Fixes to telnet, telnetd and httpd to get them actually working
- Implement SLIP driver
- Fix SLIP buffer overrun
- Fix odd length IP/ICMP checksum calcs
- Networking fixes for connections, PTY fixes, keypress to continue fix
Boot
- Boot option parsing in /bootopts
- Serial console via /bootopts
- Init run modes for multi-user/multi-console
- FAT 12/16 boot (@tkchia)
- FAT32 boot
- Improved FAT booter, /linux and /dev first 8 entries (@tkchia)
- Implement ELKS parameter block in boot blocks (@tkchia)
- MBR boot loader
- Revised single stage boot loader design for Minix (@mfld-fr)
- Minix boot loader enhancements (@tkchia)
- Major setup.S cleanup, source cleanups
- Refactor REL_SYS, remove !REL_SYS, CONFIG_ROMCODE working
New Commands
- sys - transfer system images
- makeboot command to write boot blocks
- mkfat - create FAT filesystems
- kilo - visual editor enhancements (@georgp24)
- cron - schedule background jobs (@georgp24)
- arp - display ARP cache
- net - network start/stop script
- df - disk free
- time - calculate elapsed time running command (@Mellvik)
- busyelks - BusyBox for ELKS (@marcin-laszewski)
- tty - display current TTY (@Mellvik)
- hd - hex dump
- unreal - switch to 8086 unreal mode (@georgp24)
- uuencode/uudecode - encode / decode binary files for network transmission (@Mellvik)
- fdtest - floppy disk tester
- sercat - serial port tester
- mouse - mouse tester
- Add Nano-X and games into build tree
Improved Commands
- Sh line editing (@georgp24)
- BASH command completion
- Sash history (@Mellvik)
- Dynamic window size for vi, kilo
- ANSI /etc/termcap for vi, vi works from serial port
- Enhanced ps, meminfo, miniterm, ls
- Major bug fixes to init, getty
- ^C handling, no shell exit
- Workaround kernel directory rename with improved mv command
- Add recursive option to cp to copy entire disks
- Fixed mkfs and fsck to work
- Fixed fdisk to work
- Fixed clock and added to startup for correct date/time from BIOS at boot
- Fixed init to properly read /etc/inittab, with single and multi-user run modes
- Fixed getty to handle multiuser logins on serial ports
C Library
- Debug malloc heap trace
- Libc Routines added or fixed: putenv, basename/dirname (@cjsthompson), chgrp, snprintf/ vsnprintf (@tkchia), getpass, times, tzset, sleep, rand, srand, gmtime, in_aton, in_ntoa, in_gethostbyname
- Header file cleanup and all prototypes
- No warnings on libc compile
- Split all functions to separate .c files (@marcin-laszewski)
- Localtime support and TZ=
- Add stdcall support (@tkchia)
- Add multilib support (@tkchia)
Build
- MacOS build
- Disk images built with mfs tool, no root or host filesystem driver needed
- Add setboot for managing boot blocks
- Elkscmd/ reorganization, all commands built w/any config
Compiler / Tools
- Toolchain enhancements for medium model (@tkchia)
- Enhance thunk code for 0-6 argument near calls from fartext (@tkchia)
- Move to new elf linker (@tkchia)
- Use ligbcc from toolchain (@tkchia)
- Add objdump86
- Elksemu enhancements (@tkchia)
- GCC tools update for GCC v10 (@tkchia)
- mfs tool to create Minix images w/o being root
Images
- Build all disk images automatically
- Images include 2.88M, 1.44M, 1.2M, 720k and 360k, FAT and Minix, 32MB HD, 32MB MBR
- Config image build system for app category and disk image size
- Select applications by image size as well as application category
- Consolidate commands to /bin
Documentation
- Wiki
- Improved HTML documentation (@georgp24)
ELKS 0.3.0
End of migration from DEV86 to GCC-IA16:
- Own LIBC
- Own MINIX boot block
- User land migration
Minor changes:
- EMU86 integration
- E3 editor removal
- RC shell removal
- Protected mode removal
- License clarification (thanks @jbruchon)
Bug fixes:
- BIOS console driver
- SETUP to kernel
- configuration & build (thanks @tkchia).
ELKS 0.2.1
This is an intermediate release that accumulates all the changes performed since 2015.
Main changes:
- Continuous kernel fixing, optimization and cleanup (thanks @lithoxs)
- FAT support (but still unstable & incomplete) (thanks @georgp24)
- Kernel migration from BCC to GCC (thanks @lithoxs)
- ROM filesystem support
- Unified & revised configuration for kernel & user land
- Ethernet support & NE2K new driver (thanks @georgp24)
Minor changes:
- Halt on idle option
- No more build as root but sudoer
- New list allocator
- Internet applets tuning
Bug fixed:
- Socket interface
- BIOS console
- Shell signals