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



Welcome to FiwixOS 2

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

New in FiwixOS 2

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

  • Fiwix kernel version 1.1.0.
  • All the packages supplied (except Busybox) were compiled natively under FiwixOS 2.
  • The default and primary file system is now the Ext2 version 0; this is the original Ext2 version without any special features. The /boot partition will continue using the Minix v1 filesystem because GRUB fails to install itself on the Ext2 file system.
  • This kernel version is now capable of executing scripts as this was a POSIX requirement when compiling GCC natively. It is also able to pass arguments to the init process from the kernel's command line.
  • Job control works properly in this release.
  • Memory values are now shown correctly in the free, top and ps commands.

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.
  • During the automatic partition layout on hard disks with more than 1024 cylinders, you may see the following message:
    The number of cylinders for this disk is set to 2080.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
       (e.g., DOS FDISK, OS/2 FDISK)
    This message is completely harmless and appears only because FiwixOS 2 still uses an old Busybox version for the live file system.
  • You cannot install FiwixOS 2 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:

  • bash-4.4.18
  • binutils-2.23.2
  • byacc-20191125
  • cpio-2.13
  • dash-
  • dialog-1.3-20191210
  • diffutils-3.2
  • expat-2.2.9
  • file-5.37
  • gawk-3.1.8
  • gcc-4.7.4
  • grep-2.28
  • gzip-1.9
  • jpegsrc-v9c
  • less-530
  • libiconv-1.16
  • libpng-1.6.37
  • libxcrypt-4.4.10
  • nano-2.9.8
  • nasm-2.14.02
  • ncompress-
  • newlib-3.1.0
  • patch-2.7.6
  • tar-1.29
  • texinfo-5.2
  • time-1.9
  • units-2.19
  • vim-7.4
  • vttest-20190710

This is a list of packages new in this version:

  • at-3.1.13
  • autoconf-2.64
  • automake-1.11.1
  • diffstat-1.63
  • e2fsprogs-1.14
  • indent-2.2.10
  • libtool-2.4.6
  • lua-5.3.5
  • ncurses-examples-20180127
  • pcre-8.43
  • perl-5.20.3
  • pkg-config-0.24
  • zile-2.3.24

Kernel changes

The following is a complete list of changes.

1.1.0 - 24-Mar-2020
- Added support for an initial RAMdisk (initrd) image.
- Added full support for the ext2 filesystem.
- Added support to execute scripts.
- Limit the number of messages on spurious interrupts.
- RAMdisks initialization now shows the range of the memory addresses of each
  RAMdisk created.
- Added VMA_REGIONS as a general configurable option (default: 150 entries).
- Changed the default kernel filesystem to ext2.
- Renamed the sleep addresses in tty.c.
- Added the ability to pass arguments to init from the kernel's command line.
- Included memory values in /proc/PID/stat and /proc/PID/status.
- Included the file /proc/PID/statm to provide more information about memory
- Changed the ATA's SET MULTIPLE MODE command to do all I/O with 4KB block size
  (8 sectors) by default.
- Fixed to prevent from using an unexistent floppy type, in the fdd_type
  structure, if CMOS returns a value bigger than 0x04.
- Fixed a misplaced bitwise operator AND that was not ensuring the limitation
  to 1GB as the amount of physical memory supported.
- Fixed some bugs in *_minix_ialloc() and minix_balloc() when they fail.
- Fixed a malfunction in the job control.
- Fixed in sys_getgroups() to return the number of group IDs when the argument
  size is zero.
- Fixed the DEC Set Top and Bottom Margins (DECSTBM) sequence, which affected
  the scroll up mechanism in consoles.
- Fixed to set properly the timestamp on every read and write in all ttys.
- Fixed the start time value in /proc/PID/stat of every single process.
- Fixed to use a long long variable type to be able support block devices bigger
  than 4GB.
- Fixed a memory corruption bug processing the VT100 'CSI n J' sequence.
- 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!.
  • The C++ language is not available in GCC because libstdc++ failed during the toolchain building. The help of someone with more expertise on building the toolchain is really needed here.
  • If you need to rebuild a package 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 trying FiwixOS 2 on a very old 80386 without floating-point processor, you will experience 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), but I'm not sure.

First   Previous   Next   Last