Fork me on GitHub
Fiwix symbol
Welcome to the Fiwix project
A UNIX-like kernel for the i386 architecture
Fiwix kernel

Features

The FiwixOS 2 is an operating system completely self-hosted. That is, you don't need a different operating system (like GNU/Linux) to develop and build the Fiwix kernel or any other system component. All the tools necessary for system development (including the Vim editor) are bundled and ready to be installed using the FiwixOS 2 Installation CD-ROM.

List of features of the Fiwix kernel v1.1.0 as released on DD March 2020:

  • Mostly written in C language (Assembly only used in the needed parts).
  • GRUB Multiboot Specification v1 compliant.
  • Full 32bit protected mode non-preemptive kernel.
  • For i386 processors and higher.
  • Preemptive multitasking.
  • Protected task environment (independent memory address per process).
  • POSIX-compliant (mostly).
  • Process groups, sessions and job control.
  • Interprocess communication with pipes and signals.
  • BSD file locking mechanism (POSIX restricted to whole file and advisory only).
  • Virtual memory management up to 4GB (1GB physical only and no swapping yet).
  • Demand paging with Copy-On-Write feature.
  • Linux 2.0 ABI system calls compatibility (mostly).
  • ELF-386 executable format support (statically and dynamically linked).
  • Round Robin based scheduler algorithm (no priorities yet).
  • VFS abstraction layer.
  • EXT2 filesystem support with 1KB, 2KB and 4KB 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.
  • Keyboard driver with Linux keymaps 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 PCI devices, no USB support and no networking, to name the most impacting missing features.

To Do

This is the list of planned new features:

  • Serial device support.
  • Better interrupt handling (nesting, sharing, ...).
  • PCI device support.
  • Code restructuring to support new architectures.
  • Enhanced ATA drivers.
  • Better kernel memory handling.
  • USB device support.
  • Networking support.

And more ...