UbixOS

v2.0.0-BETA  —  i386  —  BSD 3-Clause

An open source hobby and research operating system for x86, built from scratch since 2002. Preemptive multitasking, virtual memory, UbixFS, TCP/IP networking, and a growing POSIX userland.

View on GitHub Quick Build

// FEATURES

⚙️
Kernel

Monolithic kernel with preemptive multitasking, SMP support, x86 protected mode (ring 0/3), paged virtual memory, and copy-on-write forking.

💾
Filesystems

UbixFS v1/v2 (native), UFS, FAT16/32, and DevFS — all behind a unified VFS abstraction layer. ELF binary loader for standard i386 executables.

🌐
Networking

lwIP 2.0.3 TCP/IP stack with NE2000 and Lance (PCnet) NIC drivers. Full socket layer including select(), sendto, and BSD-compatible APIs.

🔌
Drivers

AT keyboard with TTY line discipline, PIT, PIC (8259), floppy, RS-232 serial, PCI hard disk, mouse, and PCI bus enumeration.

📦
Userland

24+ utilities, FreeBSD-derived libc, C++ runtime, runtime dynamic linker (ld.so), Tiny C Compiler, BSD shell, and a graphical SDE.

📨
IPC

Custom MPI message passing with named mailboxes, POSIX pipes, semaphores, and sysctl MIB for runtime kernel introspection.


// QUICK BUILD

# Clone and build — requires bmake and an x86_64-elf cross-compiler
git clone https://github.com/cwolsen7905/UbixOS.git
cd UbixOS

bmake           # Build kernel + world
bmake image     # Build bootable disk image (ubixos.img)
bmake run       # Launch in QEMU

Full toolchain requirements and platform-specific setup in BUILDING.md


// IN ACTION

🖥️

Boot / kernel screenshot coming soon

🖥️

SDE / userland screenshot coming soon


// RELEASES

v2.0.0-BETA 2026-05-10
  • Dynamic linker (ld.so) — JMP_SLOT relocation fixed; ls runs with full lazy PLT resolution
  • COW / fork lifecycle bugs resolved (BUG-COW-01 through BUG-COW-07)
  • Scheduler audit and dedicated per-task ring-0 kernel stacks (BUG-SCHED-01–07)
  • macOS cross-build fully working with x86_64-elf-gcc (GCC 16 / C23 compatible)
  • TTY line discipline: canonical mode, echo, raw mode, Ctrl-C via sched_killTree
  • sysctl, uname, mkdir, rmdir, getenv/setenv
  • Software Display Environment (SDE) with MPI ready-signal and BMP background

Release Notes   Full Changelog →

v1.24.0 2018-01-25

First tracked release. Brought up networking (lwIP + Lance NIC), Software Display Environment, dynamic linker stub, and a working userland shell.


// ROADMAP

Preemptive multitasking with dedicated per-task ring-0 kernel stacks
Copy-on-write virtual memory — fork, exec, COW page fault handling
UbixFS, UFS, FAT16/32, DevFS via VFS abstraction layer
lwIP 2.0.3 TCP/IP stack with NE2000 and Lance NIC drivers
Runtime dynamic linker (ld.so) with lazy PLT resolution
TTY line discipline — canonical mode, echo, raw mode, Ctrl-C
Software Display Environment (SDE) + objgfx graphics library
macOS cross-build with x86_64-elf-gcc (GCC 16 / C23)
POSIX threads (pthreads) via ubthread — full mutex and cond vars
x86_64 (64-bit) kernel port
NVMe / AHCI storage driver
Expanded SDE window manager — tiling, focus, mouse events

// COMMUNITY

Development has been active since 2002. Come see what's happened.

🐙
cwolsen7905/UbixOS
...
stars
...
forks
...
language
View on GitHub
📅
STARTED IN 2002

Originally at ubixos.com. Over two decades of kernel hacking, filesystem work, and userland building — still going.

Wayback Machine →

// GET INVOLVED

🛠️
Contribute Code

Drivers, syscalls, filesystem work, userland tools — see CONTRIBUTING.md for conventions and the PR workflow.

Open Issues
📖
Improve Docs

Architecture write-ups, driver guides, build docs. Good documentation is as valuable as code for a project like this.

Browse Docs
Star & Share

Star the repo on GitHub and share it with OS dev communities. It's the simplest way to help the project reach more people.

Star on GitHub