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 RequirementsFiwixOS 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
- 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
- All executables are linked statically.
- Plenty of improvements and bug fixes in the operating system environment.
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.
This is a list of packages that have been upgraded since the previous release:
- e2fsprogs-1.14 (small changes)
- util-linux-ng-2.17 (small changes)
This is a list of packages new in this version:
- busybox-1.01 (rebuilt natively)
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 programs. - 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.
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 instructionduring the execution of certain commands. Rebuilding these commands with the GCC flag
-fsingle-precision-constantmight help to avoid the use of some floating-point instructions in the code (like
FLDZ, and others). This has not been tested though.