Skip to content

Releases: ghaerr/elks

v0.8.1

16 Oct 04:58
9bd1e04
Compare
Choose a tag to compare

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

24 Sep 18:23
7fc5492
Compare
Choose a tag to compare

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

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

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...
Read more

ELKS v0.7.0

03 Aug 15:41
d043b92
Compare
Choose a tag to compare

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 mail application from MINIX (@ccoffing)
  • Add fm visual file manager
  • Add disasm for ELKS binary file symbolic disassembler
  • Add cons to display console screen from remote console
  • Add ttyinfo for testing mouse and ANSI arrow, function key and mouse parsing
  • Add hostdisasm for host-based ELKS disassembler
  • Add tiny min_init replacement for /bin/init on very small systems
  • Add matrix screen saver
  • Port text adventure game advent from Fuzix
  • Port sl (train) program for mistyped ls
  • Port split from BSD 4.3reno (@Mellvik)
  • Support D-Flat Project and memopad editor application
  • Add ps, edit (visual screen editor), and fsck to 360k floppy
  • Add nxtetris to 1440k floppy

Updated Commands

  • Enhance meminfo to include process names
  • Fix cron memory leak, other fixes (@ccoffing, @ghaerr)
  • Fix tinyirc to 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 login handling on locked accounts, no home dir or long login name (@ccoffing)
  • Fix passwd to work on FAT filesystems
  • Update nxtetris to work at constant speed and no mouse (adds GrGetNextEventTimeout)
  • Update disasm disassembler from 86sim project, add symbolic disassembly to ELKS binaries
  • Add disasm -k option to disassemble running kernel with symbols, -a for asm input
  • Update ls for better operation with deeply nested directories and no permissions (@ccoffing)
  • Update ash for invalid TERM variable checking (@ccoffing)
  • Fix xargs with long input lines (@ccoffing)
  • Fix possible memory corruption with dd errors (@ccoffing)
  • Add MOUSE_PORT=none for all Nano-X applications
  • Cleanup cmds source tree to remove many compilation warnings
  • Fix screen to run from FAT filesystem
  • Remove pwdauth, prems and mtools from distribution image
  • Rename all test programs /bin/test_xxx
  • Fix various tr bugs and crashes (@ccoffing)
  • Fix ash build error on non-standard rindex/index definitions (@ccoffing)
  • Fix fsck out of memory problem, display issues and -r (@Mellvik, @ghaerr)
  • Update mount and df to display free space and all mounted filesystems (@Mellvik)
  • Fix fm stack overwrite
  • Use default drive for fdisk when none specified (@Mellvik)
  • Fix find stack overflow
  • Fix sometimes improper time sort and display using ls -l
  • Enhances more to clear screen and display (END)
  • Use cp -R in sys to fix large copy on large /bin directories (@Mellvik)
  • Add PEEK and POKE to basic (@tyama501)
  • Rename mined to edit (MINIX visual editor)
  • Fix hostbasic for compilation on macOS
  • Enhance fsck to 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 -v in /etc/profile to show build commit number
  • Enhance makeboot functionality 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 meminfo build (@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 clock and ps build
  • 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 romprg program to flash chips (@cocus)
  • Add ATC-compatible RTC for clock app (@cocus)
  • Add 8018X port to CI build
  • Add disable_irq to disable IRQs (@cocus)
  • Fix ROMFS 8018X build

C Library

  • Add test_libc test suite for large portion of C library (@ccoffing)
  • Fix sleep return value (@ccoffing)
  • Fix major strncat bug, affects kilo, sash history, 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 abort calling kill with arguments reversed (@tkchia)
  • Rewrite memcpy in ASM for speed (found through blink16 emulator)
  • Fix fgets boundary bug found through libc test suite (@ccoffing)
  • Fix tui lib cursor location for fm and moria
  • Optimize opendir for memory allocations and speed (@ccoffing)
  • Fix fclose to 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 __weaken and __LINK_SYMBOL weak 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 signal not used by application
  • Add C library support for -mregparmcall calling convention (@tkchia)
  • Fix build to allow -mregparmcall calling convention for most ELKS applications
  • Fix usleep for POSIX return value, basename failure, remove __sys_errlist (@ccoffing)
  • Accurate dependency handling for C library build (@tkchia)
  • Delete duplicate leap year function (@coffing)
  • Reduce size of __tm_conv and strerror (@coffing)
  • Add stack backtrace and 8086 disassembler to debug library
  • Fix buffer overflow in isatty (@tkchia)
  • Add mktime library function
  • Fix incorrect results returned by strtol and strtoul when string not NUL terminated
  • Fix memcmp library function in C lib and kernel (@Mellvik)
  • Cleanup use of __extension__, asm and volatile to allow option -Wpedantic
  • Add 64-bit long long lltostr and ulltostr functions

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 readlink buffer 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 ioctl for console terminal (@tkchia)
  • Enhance ustatfs to optionally not calculate freespace for FAT fs speed
  • Fix MINIX filesystem to allow 64Mb filesystems and truncate bug
  • 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 ...
Read more

ELKS v0.6.0

07 Jun 15:14
850f549
Compare
Choose a tag to compare

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

08 Feb 17:46
736806e
Compare
Choose a tag to compare

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)

  • SD card SSD driver (@cocus)
  • Interrupt driven serial console driver (@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

21 Nov 21:58
3074172
Compare
Choose a tag to compare

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

14 Mar 20:18
Compare
Choose a tag to compare

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

25 Jun 10:23
1b6110b
Compare
Choose a tag to compare

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

ELKS 0.2.0 with disk images

01 Mar 19:58
Compare
Choose a tag to compare

ELKS kernel configuration used to build images can be found in the "kernel_config" file.