Welcome to the Fiwix project
Your small UNIX-like kernel
News
12-Dec-2020
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 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.
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 (likeFLDZ
, and others). This has not been tested though.