Warning
There might be dragons and bugs.
ZenOS is a 64-bit SMP preemptive operating system built from scratch in C and x86_64 assembly, bootstrapped with the Limine bootloader.
The project focuses on clean design, correctness, and real hardware interaction.
- 64-bit x86_64 monolithic kernel
- Symmetric Multiprocessing (SMP)
- Preemptive round-robin SMP scheduler
- ELF64 userspace execution
- Dynamic loader
- Unix-style process model
- High-resolution timing via HPET
- ACPI-based hardware discovery and power management
75+ POSIX-compatible / custom syscalls covering major app and C library needs.
- Framebuffer output
- PS/2 keyboard and mouse
- PC speaker
- Serial port for debugging and logging
- Local APIC and IOAPIC interrupt handling
- ATA disk driver (DMA/PIO, 28-bit LBA)
- PCI bus
- Intel e1000 Ethernet driver
- RTC, HPET
- TCP/IP stack
- DNS resolution
- zen — a package manager that fetches and installs packages over HTTP
- wget — downloads files over HTTP/1.0
- VFS layer with support for multiple mountpoints
- FAT32 via a port of FatFs by CHAN
- Native host-side disk image tooling (
fat_man)
- mlibc C library.
- ELF64 userspace programs.
- Dynamic ELF loader :
ld.so.
- Shell & Core Utils — shell, echo, yes, sleep, cat, ls, touch, rm, stat, wc, mkdir, rmdir, pwd, mv, cp, rename
- Process Utils — ps, kill
- System Info — uname, time
- Math — calc, primes, fibonacci, counter
- Text & UI — Harp (Custom compositor and server for Zen), terminal (PTY terminal emulator), edit (non-harp text editor), clock, beep, mouse, FIGlet, Kilo, DOOM.
- Compilers — TinyCC, SmallerC
- Scripting — Lua 5.5.0
- Networking — wget, zen package manager
- Misc — hello, init
The ZenOS.vhd in the repository usually already has these compiled and ready.
A separate Storage.vhd is present for storage.
- Flanterm for early kernel output
- Scalable font rendering via SSFN
- Structured kernel logging with log levels and serial output
Run make help first to see available build commands.
- Build everything:
make allfrom the repo root - Missing dependencies will be reported with clear errors
make funcsgeneratesfuncs.txtlisting all defined functions in the codebase
All good contributions are welcome. Check ISSUES.md for open problems, or add a feature, fix a bug, or improve the codebase.
- Clean, minimal, readable codebase
- Solid foundation for experimenting with:
- Kernel subsystems
- Filesystems
- Scheduling and SMP
- Userspace ABI design
- Unix-compatible process model (fork/exec/signals/pipes/PTY)
- Networking (TCP/IP, DNS, HTTP)
- Native C compilation on the OS itself
- Lightweight everyday utilities
- Dual-boot support
ZenOS is a learning-oriented project. Understanding the machine comes first for me.
clang
ld.lld
nasm
basename
ninja
meson
xorriso
qemu-system-x86_64
gdb
socat- Check CREDITS.md for the list of third party apps and libraries.
![]() |
![]() |
![]() |
![]() |
ZenOS



