Skip to content
Dev Tools Article

Exploring Zinnia, a Modular Rust Kernel That Boots to XFCE

A new 64-bit Unix-like operating system demonstrates how Rust's safety guarantees translate to bare-metal systems programming.

Priya Nair
Priya Nair
AI & Developer Experience Writer · Jun 14, 2026 · 3 min read

Writing a hobby kernel is a classic rite of passage for systems programmers, but most of these projects rarely progress past printing characters to a serial port or running a basic single-user shell. Zinnia is a fresh exception. Started in 2024 as a learning project, this modular 64-bit Unix-like kernel written almost entirely in Rust has evolved to boot on real hardware and run fully realized graphical desktop environments.

For developers interested in systems programming, Zinnia serves as a concrete, modern reference point for building operating system components in Rust while minimizing unsafe code blocks.

Dynamic Driver Loading via Rust ELF Dylibs

One of Zinnia's most notable architectural choices is its approach to modularity. Rather than compiling every single driver directly into a monolithic kernel image, Zinnia implements the majority of its drivers as separate modules.

These modules are compiled as Rust ELF dynamic libraries (dylibs). During the boot sequence, the kernel loads and dynamically links these dylibs from an initial ramdisk (initrd). This design closely mirrors the module loading mechanism found in the Linux kernel, but adapts it to Rust's compilation model. By isolating drivers into distinct, dynamically linked binaries, the project demonstrates how to maintain a clean separation of concerns in a bare-metal Rust environment.

Bridging the POSIX Gap for Desktop Environments

To run anything beyond basic command-line utilities, a kernel must expose a robust set of system calls. Zinnia implements a wide range of standard POSIX APIs, allowing it to support traditional Unix software.

However, modern desktop environments require more than just baseline POSIX. To bridge this gap, Zinnia also implements common system call extensions found in modern Linux and BSD systems, specifically:

  • epoll: For scalable I/O event notification.
  • timerfd: To deliver timer expiration notifications via file descriptors.

These extensions are critical for running modern display servers and window managers. Because of this system call support, Zinnia is capable of hosting graphical sessions, including Weston (the reference Wayland compositor) and X11-based sessions running XFCE.

Booting on Bare Metal

While many hobbyist operating systems are confined strictly to emulators like QEMU, Zinnia has successfully made the jump to physical hardware. The kernel boots on real x86_64 machines, with the project's documentation noting successful boots to an XFCE desktop on a Lenovo ThinkPad E14 G7.

This bare-metal compatibility is achieved using Limine, a modern, lightweight bootloader. Limine allows Zinnia to boot seamlessly from any UEFI-compliant system, bypassing the need for the developer to write custom, fragile boot stage code from scratch.

Currently, the project is focused entirely on the x86_64 architecture. While the developer has expressed plans to eventually support aarch64 (ARM64) and riscv64 (RISC-V), these architectures are not immediate priorities. For now, Zinnia stands as an active, open-source playground for developers looking to see how Rust's safety guarantees hold up when interacting directly with physical memory and CPU registers.

Sources & further reading

  1. Zinnia: A modular 64-bit Unix-like kernel written in Rust — zinnia-os.org
Priya Nair
Written by
Priya Nair · AI & Developer Experience Writer

Priya covers AI frameworks, developer productivity tooling, and the startup ecosystem across South and Southeast Asia, bringing a researcher's rigour and a practitioner's empathy to every story. She is deeply sceptical of benchmarks and asks hard questions so her readers don't have to.

Discussion 0

Join the discussion

Sign in or create an account to comment and vote.

No comments yet

Be the first to weigh in.

Related Reading