BoredOS is a from-scratch x86-64 UNIX-like operating system written mostly in C.
It isn't fully POSIX compliant, so software generally needs some porting work before it runs, though for most programs the required changes are minor. The project includes a windowed desktop environment called Nova, a package manager, and an expanding set of ported software.
Features
Ports
| Port | Notes |
|---|---|
| DOOM (doomgeneric) | What's an operating system without DOOM? |
| TinyGL | A software-rendered subset of OpenGL. |
| TCC | A small, fast C compiler. |
| Lua | Available as a shell tool or embeddable in other programs. |
| mlibc | The managarm C standard library. |
| kilo | A simple text editor. |
| kirc | A simple IRC client. |
| tvi | A vi-like text editor. |
Package manager
bpm is our package manager. It installs, removes, and upgrades software from a remote repository index. Packages are .bup files, which are really just tar archives compressed with LZ4, plus a TOML manifest and optional install/remove hook scripts.
There's a community repo, BUR, where anyone can submit packages through a pull request. If you want to add something, the packaging guide walks through the format.
Nova
Nova is a custom compositor built for BoredOS, with its own UI toolkit and a win9x-inspired design language.
Networking
Networking is handled by lwIP, with drivers for Intel e1000, Realtek RTL8139/RTL8111, and VirtIO-net, covering most common hardware and virtualized environments.
Kernel internals
| Subsystem | Details |
|---|---|
| SMP | Multi-core support via LAPIC. Per-CPU state lives in the GS segment. XSAVE/XRSTOR handle FPU context across switches. |
| Scheduler | Preemptive round-robin over a circular process list, with sleep/wake support, per-CPU affinity, and cross-core IPI for AP scheduling. |
| Memory | Physical page allocator (PMM), slab allocator, 4-level MMU with COW, VMA tracking with an RB-tree, demand paging, and a page cache. |
| VFS | Virtual filesystem layer supporting tmpfs, FAT32, ext4, ProcFS, and SysFS. |
| IPC | Unix domain sockets, shared memory through /dev/shm, wait queues, and work queues. |
| PTY | Full pseudo-terminal support. |
| Devices | PCI, AHCI (SATA), PS/2, ACPI, I2C, AC97 audio, and RTC. |
| TTYs | 10 virtual terminals, each with its own graphics buffer. |
| ELF | Loads and runs ELF64 binaries with correct segment mapping. |
Documentation
| Guide | Description |
|---|---|
| Documentation Index | Start here if you're new. |
| Architecture Overview | A deeper look at how the kernel is put together. |
| Building and Running | Get a build environment set up. |
| AppDev SDK | Write your own apps for BoredOS. |
| Packaging Guide | Package software for bpm. |
Support
BoredOS is developed and maintained by a small group of contributors in their spare time, independent of any company or organization. Development isn't tied to funding, but if you find the project useful or interesting, a donation is welcome and goes toward continued development.
License
Distributed under the GNU General Public License v3. See LICENSE for the full text.
Important
Keep all copyright headers intact and include the original attribution in any redistribution or derivative work. Details are in the NOTICE file.
History
BoredOS grew out of BrewKernel, a project Christiaan started back in 2023. BrewKernel is archived now and will no longer be updated.