BoredOS Features


BoredOS is a UNIX-like operating system built entirely from scratch. Written mostly in C. It isn't fully POSIX compliant, so software generally needs a bit of porting work before it runs, but for most programs the changes needed are surprisingly small.

Networking

Networking is handled by lwIP, with drivers for Intel e1000, Realtek RTL8139/RTL8111, and VirtIO-net, covering most common hardware and virtualized environments.

Nova

Nova is BoredOS's own compositor, built from the ground up with a custom UI toolkit and a serenityOS-inspired design language.

Package Manager

bpm is our package manager. It has a growing community repo where anyone can submit packages.

There's a growing community repo, BUR, where anyone can submit packages through a pull request. Want to add your own software? The packaging guide walks you through the format.

Kernel Internals

Subsystem Details
SMP Multi-core support via LAPIC. Per-CPU state lives in the GS segment, and 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 graphical ttys, plus com0 through com3 serial ttys. With future support for USB and PCI serial devices.
ELF Loads and runs ELF64 binaries.

Ports

Port Notes
TinyGL A small OpenGL 1.x subset.
DOOM What's an operating system without DOOM?
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.
tvi A simple vim-like text editor.
kirc A simple IRC client.

Back to BoredOS main page