
ZenOS: SMP Preemptive operating system project
It is an operating system I am working on since 2 - 3 years.
It has got quite a lot of features now, and I have just released it's first version today.
Hence decided to post about its existence here.
Links: GitHub
It also has a package repository (Zen can download from the internet, basic HTTP/1.0)
It is a fully-from-scratch OS, with around 100 syscalls (i know thats massive), and most of the beauty is in the userland, it has a Window manager, Harp, and around 30 applications total.
It is Multicore, multithreading, preemptive (RR), supports disk, PS/2, USB, networking, and a lot more.
It has many ports such as BusyBox, Doom, Figlet, Lua, FreeType, etc. It boots up in <1 second. Am currently working on porting ClassiCube (yay)
Runs on mlibc, and follows the "Everything is a file" philosophy a bit. All programs are run from disk, with full disk support and FatFs.
Here's an excerpt from the README :
Kernel
- - 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
Syscalls
- 100+ POSIX-compatible / custom syscalls covering major app and C library needs.
Hardware & Drivers
- - Framebuffer output
- - PS/2 keyboard and mouse
- - USB HID keyboard and mouse (xHCI)
- - 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
Networking
- - TCP/IP stack
- - DNS resolution
- - **zen** — a package manager that fetches and installs packages over HTTP
- - **wget** — downloads files over HTTP/1.0
Filesystem
- - VFS layer with support for multiple mountpoints
- - FAT32 via a port of [FatFs](https://elm-chan.org/fsw/ff/) by CHAN
- - Native host-side disk image tooling (`fat_man`)
Userspace & Libc
- - [mlibc](https://github.com/managarm/mlibc) C library.
- - ELF64 userspace programs.
- - Dynamic ELF loader : `ld.so`.
Applications
- - **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](https://github.com/Z-Proj/ZenOS/blob/main/userland/files/harp/harp_main.c) (Custom compositor and server for Zen), terminal (PTY terminal emulator), edit (non-harp text editor), clock, beep, mouse, [FIGlet](https://github.com/cmatsuoka/figlet), [Kilo](https://github.com/antirez/kilo), [DOOM](https://github.com/ozkl/doomgeneric).
- - **Compilers** — [TinyCC](https://github.com/TinyCC/tinycc), [SmallerC](https://github.com/alexfru/SmallerC)
- - **Scripting** — [Lua 5.5.0](https://www.lua.org/)
- - **Networking** — wget, zen package manager
- - **Misc** — hello, init, busybox
I/O & Display
- - USB HID devices like keyboard and mouse via xHCI
- - [Flanterm](https://codeberg.org/mintsuki/flanterm) for early kernel output
- - Clean font rendering via the [FreeType Engine](https://freetype.org/)
- - Structured kernel logging with log levels and serial output