This website is about FreeNOS (Free Niek's Operating System). FreeNOS is an experimental microkernel operating system for learning purposes, licensed under the GPLv3.


Articles in the releases category

v1.0.3 Released

This release contains fixes for various bugs, many code improvements and some new features, including:

  • Added support for the Allwinner H2+, H3 ethernet controller
  • Added DHCP protocol support
  • Added Message Passing Interface (MPI) with ethernet and host OS support
  • Added GCC-9, GCC-10, Clang-9, Clang-10 to supported compilers
  • Enabled LZ4 compression on all program binaries to reduce memory footprint
  • Partial support for fault tolerance (RecoveryServer, DatastoreServer)
  • Upgraded Jenkins to LTS version 2.263.1
  • Various new tests: FileSystemServerTest, LoopbackTest, MemoryBlockTest and more

With the above changes FreeNOS now runs on an experimental ARM based computer cluster of 112 cores:

v1.0.2 Released

This version has multiple bug fixes in memory management, and includes several improvements in code and design for libraries (libstd, libipc, libfs, liballoc). Additionally, this version adds more test coverage and the ability to run some FreeNOS servers and user programs on the host operating system. Finally, this version has an improved heap allocator that boosts overall system performance.

v1.0.1 Released

This new version comes with a few new features and many smaller improvements and bugfixes. The list of new features includes:

  • Allwinner H2+/H3 System-on-Chip support
  • Multicore support for ARM targets
  • Clang support for ARM targets
  • Fully automated creation of Jenkins master and slaves using Vagrant (

v1.0.0 Released

With great pleasure I would like to announce that FreeNOS v1.0.0 is released. With many years after the previous release, this version contains a long list of new features and improvements, including:

  • ARMv6/ARMv7 architecture support (Raspberry Pi 1,2,3)
  • Symmetric Multi Processing with MPI support (Intel x86 only)
  • Devices (Raspberry Pi only):
    • USB controller and (root)hub
    • Loopback network and SMSC95xx ethernet driver
    • PL011 UART
    • ARMv7 generic timer
    • Broadcom 2835 timer, interrupt, mailbox, power and GPIO drivers
  • Commands:
    • 10+ new commands, including mpiping, mpiprime, ipctest, sysinfo, bench and more
  • Libraries:
    • libstd, for standard datastructures and algoritms
    • libipc, implements user-space IPC using shared memory (replaces IPCMessage())
    • libarch, provides architecture abstractions and platform specific code (including MMU)
    • libfs, filesystem abstractions and interfaces library
    • libmpi, basic Message Passing Interface (MPI) library
    • libnet, networking protocols library
    • libusb, generic USB implementation
    • libtest, generic test library for building autotesters
  • Build system extended with configuration files for target/host compilers and multiple architectures
  • Added basic networking (IP, UDP, ICMP, for Raspberry pi 1 only)
  • Fully automatic autotester
  • Example Jenkins CI scripts for continuous integration (Ubuntu/FreeBSD slaves)
  • All sources re-documented with Doxygen (
  • All sources updated for latest GCC and LLVM compilers with optimization (-O2)
  • Many stability improvements and bug fixes

Additionally, the FreeNOS website is completely redesigned using Bootstrap 4!

v0.0.4 Released

After two months of hard work since we released 0.0.3 in July, we finally have a new version of FreeNOS! This release has new features, enhancements and bugfixes, including:

  • Shared and Private Memory mappings support in MemoryServer
  • Added Device and DeviceServer classes for easy driver programming (abstracts the IPC layer)
  • Abstracted the IPC layer from FileSystems, Files and Directories (also with IOBuffer class)
  • Simplified virtual FileSystems by using synchroneous I/O and Shared memory mappings.
  • FileURI improvements in libparse
  • ATA Host Controller support (read-only drive sectors)
  • VGA device in /dev/vga0 (removed from Terminal)
  • Keyboard device in /dev/keyboard0 (removed from Terminal)
  • RTC Time device in /dev/time0
  • Draft version of USB UHCI Host Controller in /dev/usb0
  • PCI pseudo FileSystem implementation in /dev/pci
  • GRUB pseudo FileSystem implementation in /dev/grub
  • /etc/rc is now executed with /bin/sh by /sbin/init
  • Reduced the number of programs in the BootImage (boot/boot.img.gz)
  • Added basename(), chdir() and syslog() support to libposix
  • Length modifier support for format strings in libc
  • Extra Doxygen documentation

v0.0.3 Released

This version includes a new filesystem written from scratch: LinnFS. It is roughly based on the Extended FileSystem. It is now used as the root filesystem on the LiveCD instead of Ext2. Additionally, the notion of current directory has been implemented. Finally, this release has also been tested on the latest Nexenta distribution.

v0.0.2 Released

This version contains bugfixes, enhancements and new minor features. The system can now be compiled on many recent host platforms, including various Linux distrubitions (Gentoo, Ubuntu, Debian, Fedora), FreeBSD 7.2, OpenBSD 4.5, NetBSD 5.0, DragonFly BSD 2.2.1, StormOS and OpenSolaris 2009.06. Several new functions where added to the libraries including the fork() POSIX-1.2008 function, which is now used to fork server processes into the background. Additionally a working URI parser was added to libparse. Finally, in this release the Ext2Create program was added to generate new Extended 2 FileSystems as a regular user, and replaces the external dependency on genext2fs. Also see the full ChangeLog for details.

v0.0.1 Released

Yesterday, 13th of June 2009, we released the first version of FreeNOS! It was announced on most of the day, on top of the page :D We got about ~400 projects clicks, ~150 URL clicks, and ~30 downloads: not bad! Visit our Freshmeat project page here.