Novium OS is a hobby x86 operating system built from scratch. The architecture is heavily inspired by Linux, but stripped down to the absolute basics. If you are into low-level engineering, feel free to open a PR or share ideas.
Note
Directories like ipc/ and fs/ currently contain early stubs.
The layout is inspired by the Linux kernel, but kept pretty simple:
- arch/ - low-level boot and architecture-specific code
- drivers/ - basic hardware support
- kernel/ - core kernel code such as scheduling and interrupts
- init/ - startup and kernel entry
- include/ - shared headers and interfaces
- mm/ - memory management
- fs/ - filesystem work
- ipc/ - inter-process communication
- lib/ - utility code
- Documentation/ - notes and planning files
GRUB finds and loads the kernel, checks the Multiboot header, and hands control to bootstrap.S. That setup code sets up the stack, clears BSS, and calls hw_init before the C kernel takes over.
- Boot chain and protected mode
- Basic console output
- Interrupt handling (IDT, PIC, IRQs)
- Working QWERTY keyboard drivers
- Added low-level boot headers
- Printf
- CPU scheduler
- Switch to GRUB bootloader
- Added a basic Memory Manager (PMM/VMM)
- Basic multi-page heap allocator
See CHANGELOG.md for official release history See Documentation/todo.md for the detailed task list and future plans.
Compiling Novium OS requires a 32-bit cross-compiler toolchain and the QEMU emulator.
Ubuntu / Debian / Mint:
sudo apt update && sudo apt install -y build-essential gcc-multilib qemu-system-x86 grub-common grub-pc-bin xorriso mtools bearFedora:
sudo dnf install gcc make binutils gcc-c++ glibc-devel.i686 qemu-system-x86 grub2-tools grub2-tools-extra xorriso mtools bear -yArch Linux:
sudo pacman -Syu --needed base-devel lib32-gcc-libs qemu-desktop grub xorriso mtools bear(Arch users: Ensure [multilib] is enabled in your /etc/pacman.conf for 32-bit compilation libraries).
Build on Windows using WSL2 tied to a native Windows QEMU installation:
- Install WSL2 (Ubuntu) in Administrator PowerShell:
wsl --install
- Download and install QEMU for Windows to its default path (
C:\Program Files\qemu).
- Install build tools inside your WSL2 terminal:
sudo apt update && sudo apt install -y build-essential gcc-multilib qemu-system-x86 grub-common grub-pc-bin xorriso mtools bear
- Link WSL2 to Windows QEMU by running this in your WSL2 terminal:
echo "alias qemu-system-i386='\"/mnt/c/Program Files/qemu/qemu-system-i386.exe\"'" >> ~/.bashrc source ~/.bashrc
After the dependencies are installed build the OS:
make clean
bear -- make # or just makeNow run the OS:
make runIf you like the code or cloned the repo, please drop a star to help other devs find the project!
