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

Features

The operating system (mostly GNU) built with the Fiwix kernel is completely self-hosted. That is, you don't need a different operating system (like GNU/Linux) to build a modified Fiwix kernel. All the tools necessary for system development (including the Vim editor) are bundled and ready to be installed using the Fiwix Installation CDROM.

This is the list of features of the version 1.0.0 as released on 23 April 2018:

  • Mostly written in C language (Assembler only used in the needed parts).
  • GRUB Multiboot Specification v1 compliant.
  • Full 32bit protected mode non-preemptive kernel.
  • For Intel 80386 processors and higher.
  • Preemptive multitasking.
  • Protected task environment (independent memory address per process).
  • Interrupt and exception handling.
  • 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.
  • Minix v1 and v2 filesystem support.
  • EXT2 filesystem support (read only) with 1KB, 2KB and 4KB block sizes.
  • Linux-like PROC filesystem support (read only).
  • PIPE pseudo-filesystem support.
  • ISO9660 filesystem support with Rock Ridge extensions.
  • RAMdisk device support.
  • SVGAlib based applications support.
  • Keyboard driver with Linux keymaps support.
  • Parallel port printer driver support.
  • Floppy disk device driver and DMA management.
  • IDE/ATA hard disk device driver.
  • IDE/ATA ATAPI CDROM device driver.

As you can see there are some missing features like USB, PCI, networking, etc, that's because the primary focus during the development of the 1.0 version has been to reach a basic functionality in order to be able to interact decently with the system.

To Do

This is the list of planned new features:

  • Serial device support.
  • ext2 filesystem write support.
  • PCI device support.
  • USB device support.
  • Enhanced ATA drivers.
  • Better kernel memory handling.
  • Code restructuring to support amd64 (x86_64) and ARM architectures.
  • Networking support (this will force a change of the current C Library).

And more ...