Noureddine RAMDI / BoredOS: A self-hosted hobbyist OS with graphical desktop and on-metal development tools

Created Sat, 23 May 2026 20:41:14 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

BoredDevNL/BoredOS

BoredOS catches your attention by shipping a full graphical desktop environment alongside a tiny C compiler and Lua interpreter running directly on the OS kernel. This isn’t just a toy kernel; it’s a self-hosting ecosystem that lets you develop and run programs on bare metal, all built from scratch in C for the x86_64 architecture.

An overview of BoredOS and its architecture

BoredOS is a hobbyist operating system written entirely in C, targeting the x86_64 long mode architecture. It’s a successor to BrewKernel, designed as a more modern and capable OS for enthusiasts who want to explore OS design beyond simple kernels.

At its core, BoredOS implements symmetric multi-processing (SMP) using Inter-Processor Interrupts (IPI) for scheduling, allowing it to run across multiple CPU cores with preemptive multitasking. This is a significant step up from many hobby OSes that are often single-core or rely on cooperative multitasking.

Memory management includes a custom slab allocator, which is a memory allocation technique optimized for frequent allocations of objects of similar size. This allocator supports the OS’s internal data structures and kernel objects efficiently.

The filesystem layer is hybrid, supporting FAT32 — a common file system for compatibility — but also TAR archives, and two special pseudo-filesystems: ProcFS and SysFS. These mimic Linux-style virtual file systems, exposing kernel and process information dynamically.

On the graphical side, BoredOS includes BoredWM, a window manager that supports full graphical rendering with TrueType fonts. It can decode multiple image formats natively, including PNG, JPEG, GIF, BMP, and TGA, enabling a richer UI experience than many hobby OSes that only do basic framebuffer operations.

Networking is handled using lwIP, a lightweight TCP/IP stack that supports DHCP, DNS, and Berkeley sockets, giving BoredOS a functional network layer for communication.

Beyond the OS and window manager, BoredOS bundles a small set of applications. These include the Tiny C Compiler (TCC) and a Lua interpreter, effectively providing a self-hosted environment for development and scripting directly on the OS without needing cross-compilation or external tools.

What makes BoredOS technically interesting: design choices and tradeoffs

The architecture of BoredOS reflects a hobbyist’s passion for building an OS that isn’t limited to kernel basics but also delivers a usable development and graphical environment.

The SMP implementation with IPI-based scheduling is ambitious for a hobby OS. It means the kernel manages multiple CPUs, coordinating task switching with interrupts rather than relying on simpler timer ticks alone. This approach scales better and is closer to what production OS kernels use, though it adds complexity.

The custom slab allocator is a solid choice for kernel memory management, balancing speed and fragmentation. It’s not trivial to implement well, but it’s a good fit given the OS’s object-oriented structures and frequent allocation needs.

The hybrid VFS layer supporting FAT32, TAR, ProcFS, and SysFS means the OS can handle both traditional disk files and virtual files representing kernel and process state. This architecture mirrors Unix-like systems, which is advantageous for developers familiar with those paradigms.

Graphically, BoredWM’s support for TrueType fonts and multiple image formats is impressive for a hobby OS. This requires integrating font rendering libraries and image decoders, which is non-trivial in a kernel-space or minimal userland environment. It enhances the user experience and sets BoredOS apart from hobby OSes that stop at text consoles or minimal framebuffers.

The networking stack using lwIP is a practical choice. lwIP is designed for embedded systems and hobbyist projects, providing a lean TCP/IP implementation without the overhead of full Linux stacks.

Bundling TCC and Lua interpreters creates a unique self-hosting environment. Developers can compile and run C code or script in Lua directly on the OS, which is rare for hobby OS projects. This feature significantly improves developer experience but also increases the OS’s footprint and complexity.

The tradeoff is clear: BoredOS carries more complexity and a larger codebase than microkernel or minimal hobby OS projects. This could impact maintainability and hardware compatibility. Yet, it offers a more complete and practical platform for exploration and experimentation.

Explore the project: navigating BoredOS’s codebase and documentation

The repository is organized into directories for the kernel, user applications, and the window manager (BoredWM). The kernel directory contains core components like CPU initialization, memory management, SMP, and the VFS implementation.

BoredWM lives in its own folder, including source for font rendering and image decoding. The networking stack integration with lwIP is also part of the kernel or system-level components.

Userspace applications, including TCC and the Lua interpreter, are provided alongside other productivity tools and game ports like doomgeneric, showcasing the OS’s capabilities.

The README gives a solid overview of the OS features and architecture but lacks explicit installation or build commands, so exploring the source code and build scripts is crucial for understanding the build process.

Documentation within the repo includes descriptions of the SMP scheduler, slab allocator design, and VFS architecture. The code is mostly in C with some assembly for low-level CPU and bootstrapping tasks.

For anyone interested in OS development, the repo offers a hands-on playground to study SMP, memory allocators, filesystem abstractions, window management, and integrating interpreters and compilers into an OS.

Verdict

BoredOS is for OS enthusiasts and developers who want to see a hobbyist OS that goes beyond kernel basics to deliver a graphical desktop, networking, and a self-hosting development environment. The inclusion of TCC and Lua interpreters on bare metal is especially interesting for those wanting to explore OS-level tooling without external dependencies.

The project’s complexity means it’s not suitable for beginners or those looking for a minimal, single-purpose hobby OS. The tradeoffs in maintainability and hardware support are typical for ambitious hobby OSes.

If you enjoy digging into SMP scheduling, slab allocators, hybrid filesystems, and building a graphical UI stack from scratch, BoredOS is worth your time. It’s a practical, opinionated playground to understand how a complete OS ecosystem can be built by one developer or a small team, with a focus on self-hosting and usability rather than minimalism alone.


→ GitHub Repo: BoredDevNL/BoredOS ⭐ 164 · C