zuzu

zuzu is a lightweight microkernel written from scratch in C and ARM assembly. It is named after zuzu, the Scottish Fold cat.

As a microkernel, zuzu provides only the most essential services such as memory management, inter-process communication, and scheduling. Higher-level services such as device drivers, filesystems, and network stacks are implemented in userspace. This design allows for better modularity, security, and reliability. zuzu prioritizes use in embedded systems, IoT devices, and other resource-constrained environments.

Components

zuzu ships as two independently versioned parts. The kernel defines and enforces the syscall ABI; the system is a consumer of it and floats on any kernel of a compatible major.

Component Scope Version
zuzu Kernel: memory, scheduling, IPC, IRQ forwarding, ABI Loaf (1.0)
zuzuOS Kernel + userspace: drivers, servers, runtime, shell 0.5.0-beta

Status

zuzu (kernel)

Stage Status
Build, boot, UART, PMM, DTB, heap, MMU/VMM, GIC, scheduling done
Process lifecycle, user mode, syscalls, synchronous IPC, notification objects done
IRQ forwarding, userspace MMIO mapping, ELF loader, shared memory done
HAL solidification, DMA pinning, kernel sync primitives planned
Shared libraries (.zxf/.zcl), multicore primitives planned
Ports to new architectures, full SMP planned

zuzuOS (userspace)

Stage Status
Core servers: sysd, devmgr, pl011drv done
Read-only storage stack (fat32d, zusd, fbox) done
NIC driver (LAN9118, userspace) done
Network stack (ARP, IPv4, ICMP, UDP, TCP) next
Sherbet release: POSIX shim, thesis demos planned
Raspberry Pi 4 support, cellular connectivity planned
Audio, graphics, optimizations planned

Quick start

git clone https://github.com/kagantmr/zuzu
cd zuzu
make
make run

Requires arm-none-eabi-gcc, qemu-system-arm, and cpio. Tested on QEMU 10.1.2.

Where to start reading

New here? Architecture gives the whole picture in one page. For the kernel interface, read the Syscall ABI and its table. The roadmap tracks what is landing next.

zuzu is a solo thesis project, and reviewers and contributors are welcome. The kernel ABI is frozen at Loaf, so userspace work has a stable surface to build against. Start with an issue on GitHub.