Warning
There might be dragons and bugs.
ZenOS is a modern 64-bit SMP custom operating system, developed entirely from scratch using C and x86_64 assembly, and bootstrapped with the Limine bootloader.
The project focuses on clean design, correctness, and practical experimentation with real hardware concepts, while remaining lightweight and understandable. ZenOS is not a fork of an existing OS, nor is it POSIX-complete by design—it is a ground-up system built to explore kernel architecture, hardware interaction, and userspace execution in a controlled and extensible way.
- 64-bit x86_64 monolithic kernel
- Symmetric Multiprocessing (SMP) with full AP startup
- Pre-emptive round-robin scheduler
- Kernel ↔ userspace context switching
- Custom syscall ABI with assembly entry path
- ELF64 executable loading
- Userspace process support
- CPU feature detection via CPUID
- SSE and FPU initialization and management
- Spinlock-based synchronization primitives
- High-resolution timing via HPET
- Local APIC and IOAPIC interrupt handling
- ACPI-based hardware discovery and power handling
- VGA output
- PS/2 keyboard and mouse drivers
- PC speaker support
- Serial output for debugging and logging
- ATA disk driver (PIO, 28-bit LBA)
- Socket read/write
- PCI bus enumeration
- Intel e1000 Ethernet driver (early-stage networking)
- Others include RTC, HPET, Keyboard (PS/2), Mouse (PS/2)
- ZenFS (ZFS) — a custom filesystem designed specifically for ZenOS
- Native host-side management tooling (
zfs_man) - Used as the primary medium for userspace ELF binaries
- ELF64 userspace programs
- Minimal userspace C ABI
- Flanterm terminal rendering
- Structured kernel logging system
- Run :
make allat the root of the cloned git repo. - Any issues will be reported, to which you can take necessary action, such as missing dependencies.
All good contributions are gladly welcome! It is suggested to fix an issue in the ISSUES.md, or you can add a feature, fix another unlisted bug, make ZenOS overall better!
-
Maintain a clean, minimal, and readable codebase
-
Provide a solid foundation for experimentation with:
-
Kernel subsystems
-
Filesystems
-
Scheduling
-
SMP
-
Userspace ABI design
-
Support simple dual-boot usage and lightweight utilities such as a Calculator, Text editor, simple apps, File Manager, System Info, etc.
ZenOS is intended as a learning-oriented operating system project, prioritizing understanding the machine over chasing checklists.
clang
ld.lld
nasm
xorriso
qemu-system-x86_64
gdb
socat- The Limine bootloader. https://codeberg.org/Limine/Limine
- Flanterm Terminal emulator. https://codeberg.org/mintsuki/flanterm
ZenOS