A memory-focused, lightweight operating system written in C and Assembly.
reduceOS is a project with the goal of creating a fully functional OS (including usermode components) with as little requirements as possible.
Currently, the project is moving away from kernel mode stages and towards usermode.
- Advanced driver system with a well-documented kernel API
- Strong support for x86_64 mode
- USB support for UHCI/EHCI controllers
- AHCI/IDE support
- Networking stack with E1000 network card driver
- Priority-based round-robin scheduler with a well-tested API
- Custom C library with support for many functions
- Full ACPI support with the ACPICA library
base
: Contains the base filesystem. Files inbase/initrd
go in the initial ramdisk and files inbase/sysroot
go in sysroot.buildscripts
: Contains buildscripts for the build systemconf
: Contains misc. configuration files, such as architecture files, GRUB configs, extra boot files, etc.drivers
: Drivers for Hexahedron, copied based on their configuration.external
: Contains external projects, such as ACPICA. See External Components.hexahedron
: The main kernel projectlibpolyhedron
: The libc/libk for the project.libkstructures
: Contains misc. kernel structures, like lists/hashmaps/parsers/whatever
To build reduceOS, you will need a cross compiler for your target architecture.
Other packages required: grub-common
, xorriso
, qemu-system
Edit buildscripts/build-arch.sh
to change the target build architecture.
Running make all
will build an ISO in build-output/reduceOS.iso
Certain external components are available in external
. Here is a list of them and their versions:
- ACPICA UNIX* (Intel License): Version 20240927 available here
Hexahedron, libpolyhedron, and all other components of reduceOS fall under the terms of the BSD 3-clause license (available in LICENSE).
All files, unless specified, fall under this license.
If at any point a licensing change should occur, any files created after the commit changing the license will fall under the new license.
Note, however, that any files created before the commit must remain under the terms of the previous license.