GitHub

Version: 2.2.0-BETA  |  Architecture: i386 (x86 32-bit)  |  License: BSD 3-Clause

UbixOS is a hobby/research operating system for the x86 platform, developed from scratch since 2002. It implements a monolithic kernel with a modular subsystem layout, a FreeBSD-derived POSIX userland, and its own native filesystem (UbixFS).


Features

  • Kernel: Preemptive multitasking with O(1) scheduler (QoS classes, I/O boost, starvation aging); SMP support; x86 protected mode (ring 0/3)
  • Memory: Paged virtual memory with copy-on-write forking
  • Filesystems: UbixFS v1/v2, UFS, FAT16/32, DevFS, procfs — all via a VFS abstraction layer
  • Networking: lwIP 2.0.3 TCP/IP stack; NE2000, Lance (PCNET), and Intel e1000 NIC drivers
  • IPC: Custom MPI message passing, POSIX pipes, semaphores
  • Signals: POSIX sigaction/sigprocmask/sigsuspend; SIGSTOP/SIGCONT; ZOMBIE/wait4 lifecycle
  • Drivers: AT keyboard, PIT, PIC (8259), floppy, serial (RS-232), PCI hard disk, PS/2 mouse, USB mass storage
  • GUI: Composited window system (views), taskbar, VT100 terminal — all via shared-memory MPI protocol
  • Userland: 30+ utilities including tcsh 6.24.16, ed, uname, mount, ps; FreeBSD-derived libc; C++ runtime (libc++ 18 subset); objgfx rendering library
  • ELF loader: Loads and executes standard i386 ELF binaries; runtime dynamic linker (ld.so)

Quick Start

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

See BUILDING.md for full toolchain requirements and platform-specific setup.


Directory Structure

Path Description
sys/ Kernel source — all subsystems
bin/ Userland executables
lib/ Userland libraries (libc, libstdc++, graphics, etc.)
libexec/ Runtime linker and library execution support
include/ Userland POSIX-style headers
contrib/ Third-party libraries (lwIP, jemalloc, TCC, etc.)
etc/ System configuration files
share/ Shared data files
tools/ Build and installation utilities
docs/ Architecture, design, and driver documentation
build/ Compiled object output (generated)
debug/ Debugging utilities and test code

For a detailed breakdown of kernel internals, see ARCHITECTURE.md.


Documentation

Document Description
ARCHITECTURE.md Kernel subsystems, memory layout, boot sequence
BUILDING.md Toolchain setup, build steps, QEMU and VirtualBox
SYSCALLS.md Syscall tables, ABI, and how to add a new syscall
DEBUG.md Debug defines, serial output, GDB
CONTRIBUTING.md Conventions, PR workflow, doc-sync rules
docs/ Architecture deep-dives, design specs, driver guide

License

UbixOS itself is licensed under the BSD 3-Clause License. The sys/, bin/, lib/, libexec/, share/, tools/, and include/ trees are all original UbixOS code under that license.

Third-party components

The contrib/ tree contains imported third-party code, each retained under its original license. The compiled UbixOS image bundles these binaries alongside the BSD-licensed base — analogous to how FreeBSD historically shipped GPL'd gcc/binutils in /usr/bin. License terms apply per-binary; the BSD base is unaffected.

Component Version Purpose License
musl git snapshot libc (dynamic, ld-musl-i386.so.1) MIT
libcxx 18.x subset LLVM C++ standard library Apache 2.0 with LLVM exception
libcxxabi 18.x subset Itanium C++ ABI Apache 2.0 with LLVM exception
lwip-2.0.3 2.0.3 TCP/IP stack BSD 3-Clause
jemalloc malloc implementation BSD 2-Clause
tcsh-6.24.16 6.24.16 Interactive shell BSD 3-Clause
tcc Tiny C Compiler (self-hosted dev) LGPL 2.1
tzcode POSIX time-zone routines Public Domain
gdtoa David Gay's strtod/dtoa floating-point conversion Permissive (Gay)
libc-pwcache FreeBSD passwd/group cache BSD 2-Clause
libc-vis FreeBSD string-visualization helpers BSD 3-Clause
minimp3 MP3 decoder (used by mp3play) CC0 / Public Domain
doomgeneric id Software DOOM source release (bin/doom, bin/vdoom) GPL 2
busybox-vi 1.36.1 (vi only) bin/vi editor GPL 2

The GPL'd components (doomgeneric, busybox-vi) build into standalone executables. Their source remains in contrib/ (and is shipped under /usr/src/ on the disk image) per GPL source-redistribution terms. The BSD-licensed UbixOS base does not link against or derive from GPL'd code.


Contributing

See CONTRIBUTING.md for conventions, code style, and the doc-sync rules that keep documentation current with the source.

Read the original on github.com ↗