Fork me on GitHub
Fiwix symbol
Welcome to the Fiwix project
Your small UNIX-like kernel



Welcome to FiwixOS 3

FiwixOS 3 is a completely free, open source operating system based on the Fiwix kernel. The goal of this project is to build a complete, general purpose operating system exclusively from free software. Development is being done in a public repository.

Hardware Requirements

FiwixOS 3 is a 32-bit operating system for the i386 architecture with the following minimal requirements:
  • Standard IBM PC-AT architecture.
  • Minimum CPU: 80386 or compatible (with floating-point processor).
  • Minimum of RAM: 3MB. Recommended 128MB.
  • ATA Hard disk: 1GB. Recommended 2GB.
  • ATAPI CD-ROM drive.

New in FiwixOS 3

This section provides an overview of the major highlights in this release.

  • Fiwix kernel version 1.2.0 (see changes below).
  • True self-hosting operating system. All packages supplied have been compiled natively under FiwixOS 3.
  • The C++ language is now fully functional and ready to build applications.
  • Added support for serial (RS-232) devices. As a result of this it has been included support for serial console with the new kernel parameter console= (e.g. console=/dev/ttyS0).
  • Enabled the llseek() system call in the C library which permits to rise, up to 4GB (limited only by the driver), the maximum supported size of the EXT2 filesystem.
  • Ported the game Doom (LxDoom) and several SVGAlib-based demos.
  • Man pages are now readable thanks to the port of groff.
  • All executables are linked statically.
  • Plenty of improvements and bug fixes in the operating system environment.

Installation-Related Notes

This section outlines those issues that are related to the installation procedure.

  • You can start the installation procedure either by booting from a CD-ROM or from a floppy disk. In the later case, you'll also need to have the Installation CD-ROM in the drive to continue. Both media have a little live file system from which you can test the features and try out the system before installation.
  • You cannot install FiwixOS 3 on a system where the two IDE drives reside in the same controller, you have to put the hard disk and CD-ROM drives on separate controllers.

Package Changes

This is a list of packages that have been upgraded since the previous release:

  • bc-1.07.1
  • bzip2-1.0.8
  • diffutils-3.3
  • e2fsprogs-1.14 (small changes)
  • ed-1.16
  • file-5.39
  • flex-2.6.4
  • grep-3.0
  • jpeg-9d
  • less-551
  • libiconv-1.16
  • lua-5.4.0
  • make-4.1
  • pcre-8.44
  • svgalib-1.4.3
  • util-linux-ng-2.17 (small changes)
  • which-2.21
  • zgv-5.9

This is a list of packages new in this version:

  • busybox-1.01 (rebuilt natively)
  • doom1-shareware.tar.gz
  • doom2-shareware.tar.gz
  • global-6.3.4
  • gnu-ghostscript-9.14.1
  • gnuit-4.9.5
  • gperf-3.1
  • groff-1.22.4
  • gsl-2.6
  • lcms2-2.11
  • lrzsz-0.12.14
  • lxdoom-1.4.4
  • lzip-1.21
  • picocom-3.1
  • pwgen-2.08
  • SDL-1.2.15
  • SDL-progs
  • tiff-4.0.10
  • tree-1.8.0
  • urw-base35-20151005

Kernel changes

The following is a complete list of changes.

1.2.0 - 12-Dec-2020
- Added support for serial (RS-232) devices.
- Completely rewritten the way how the device table is handled.
- Completely rewritten the way how the interrupt table is handled.
- Added the ability to share the same IRQ between multiple devices.
- Completely rewritten the way how bottom halves are managed.
- Added the 'doc/devices.txt' document.
- Added basic functionality of OPOST functions to tty.
- Added to reschedule the keyboard bottom-half if it was busy.
- Added support of O_NONBLOCK in tty_write().
- Added remote serial console support.
- Added support for K_RAW and K_MEDIUMRAW keyboard modes.
- Added and fixed some ECMA-48 CSI sequences in console.
- Improved termios and other aspects of the tty driver to accomodate the new
  serial driver.
- Small optimizations and bug fixes in console.
- Improved the macros that build the interrupt service routines.
- Fixed to force some signals that a process cannot ignore by changing their
  dispositions to SIG_DFL.
- Fixed a bug in tty_read and tty_write that caused to send the SIGTTIN signal
  to the foreground process.
- Fixed nanosleep() to force to 10ms any request lower than 10ms.
- Fixed a signedness bug in setreuid() and setregid().
- Fixed to delimitate better the stack-related page faults in the vma region.
- Fixed a NULL pointer dereference when __DEBUG__ is enabled in sys_waitpid().
- Fixed to avoid freeing an invalid page that generated PANICs in SVGAlib
- Fixed a bug that, under certain conditions, page_not_present() unmapped a
  wrong page number.
- Fixed to not clone MAP_SHARED pages during fork().
- Saved twice the 'signum' value before calling the signal handler.
- Small fixes and cosmetic changes.

Known Issues

This is a list of known issues pending to be resolved:

  • After a heavy disk usage the kernel may become unresponsive with the message WARNING: getblk(): no more buffers on free list!.
  • If you need to rebuild a big-sized application you'll probably have to increase the value of VMA_REGIONS in include/fiwix/config.h (and rebuild the kernel) in order to avoid running out of mmap regions.
  • If you are running FiwixOS 3 on a very old 80386 without floating-point processor, you might experience sporadic kernel messages like EXCEPTION: Device Not Available (No Math Coprocessor) ... Illegal instruction during the execution of certain commands. Rebuilding these commands with the GCC flag -fsingle-precision-constant might help to avoid the use of some floating-point instructions in the code (like FLDZ, and others). This has not been tested though.

First   Previous   Next   Last