Welcome to the Fiwix project
Your small UNIX-like kernel
Features
The FiwixOS 3.4 is a completely self-hosted operating system. This means you don't need a different operating system to develop and build the Fiwix kernel or any other system component. All the tools necessary for system development are bundled and ready to be installed using the FiwixOS 3.4 Installation CD-ROM.
List of features of the Fiwix kernel v1.6.0 as released on 15 November 2024:
- Written in ANSI C language (Assembly used only in the needed parts).
- GRUB Multiboot Specification v1 compliant.
- Full 32bit protected mode non-preemptive kernel.
- For i386 processors and higher.
- Preemptive multitasking.
- POSIX-compliant (mostly).
- Process groups, sessions and job control.
- Interprocess communication with pipes, signals and UNIX-domain sockets.
- UNIX System V IPC (semaphores, message queues and shared memory).
- BSD file locking mechanism (POSIX restricted to whole file and advisory only).
- Virtual memory management up to 4GiB (1GiB physical only and no swapping yet).
- Supported virtual memory splits:
- 3GiB user and 1GiB kernel.
- 2GiB user and 2GiB kernel.
- Demand paging with Copy-On-Write feature.
- Linux 2.0 ABI system calls compatibility (mostly).
- ELF-i386 executable format support (statically and dynamically linked).
- Round Robin based scheduler algorithm (no priorities yet).
- VFS abstraction layer.
- Kexec support with Multiboot Specification v1 and Linux boot protocols.
- EXT2 filesystem support with 1KiB, 2KiB and 4KiB block sizes.
- Minix v1 and v2 filesystem support.
- Linux-like PROC filesystem support (read only).
- PIPE pseudo-filesystem support.
- ISO9660 filesystem support with Rock Ridge extensions.
- RAMdisk device support.
- Initial RAMdisk (initrd) image support.
- SVGAlib based applications support.
- PCI local bus support.
- QEMU PCI serial device support.
- QEMU/Bochs Graphics Adapter support.
- Intel PIIX3 PCI ISA IDE controller.
- Keyboard driver with Linux keymaps support.
- PS/2 mouse support.
- Frame buffer device support for VESA VBE 2.0+ compliant graphic cards.
- Framebuffer console (fbcon) support.
- Serial port (RS-232) driver support.
- Remote serial console support.
- QEMU Bochs-style debug console support.
- Parallel port printer driver support.
- Basic implementation of a Pseudo-Random Number Generator.
- Floppy disk device driver and DMA management.
- IDE/ATA ATAPI CD-ROM device driver.
- IDE/ATA hard disk device driver.
The kernel, while completely functional and self-hosting capable, is in its early stage. That is, don't expect some features you would find in current (modern) kernels. So, no USB support and no networking, to name the most impacting missing features.
To Do
This is the list of planned new features:
- UNIX98 PTY (pseudoterminals) support.
- Kernel syslog support (dmesg).
- Improve framebuffer interface with Linux ioctl() commands.
- Networking support.
- USB device support.
- Code refactoring to support new architectures.
- ...