Status

Booting.

VectraOS is young. It runs under QEMU on x86_64 and aarch64, and every milestone ends with an exit test that boots both architectures headless and checks the console.

The live record, step by step with commits and known gaps, is docs/milestones.md.

Done  M1 · First light

The kernel boots through Limine on both architectures and reaches user space, with SMP: every CPU online, with locking and cross-CPU wake-ups.

Done  M2 · A shell in a namespace

Kernel IPC: channels, rings and handle transfer, the wake-up protocol model-checked. 9Px over rings, bootfs, per-process namespaces, procfs, and a console driver you can kill from the shell that svcd brings back.

Done  M3 · Mount the network

ACPI tables, MSIs, DMA domains and a PCI scan. A user-space virtio network driver. netd, a first-party TCP/IP stack with DHCP and DNS, serving /net in Plan 9's layout. 9P file servers mounted across TCP.

Done  M4 · POSIX and debugging

musl 1.2.6 on a VectraOS back end: fork, exec, pipes, signals as notes, ptys and job control, sockets over /net, poll and select. Lua and sbase. Notes, exit strings, namespace groups and one process table. Breakpoints, watchpoints, crash directories, and dbg, a native debugger with its own DWARF 5 reader. gsh remade on 9front's rc.

Now  M5 · Storage

Done so far: a block device class and virtio-blk driver, GPT partitions, and vx-fs, a copy-on-write file system after 9front's gefs with snapshots, branches, a checker and a power-cut test that cuts a recorded workload at every write barrier. fsd serves it over 9Px with users, permissions and a dump view by date, and pages memory-mapped files in as the kernel's pager.

Still to come: NVMe, IOMMU enforcement, ACPICA, FAT and ISO 9660, and installing from the ISO.

How it's tested
  • Libraries build for the host too, and their tests run under ASan and UBSan.
  • QEMU scenarios boot the image headless on both architectures and can type into the serial console.
  • Every 9Px server faces a hostile client that tries to walk out of its attach root.
  • The 9Px codec, ndb, the tar reader, rc, the DWARF reader and more are fuzzed with libFuzzer.
  • vx-check, a small model checker, explores every interleaving of the ring wake-up protocol.
  • Builds are reproducible: two builds of one commit are byte-identical.
The ledger
~58kfirst-party lines
~257kvendored lines, reviewed and counted
28architecture decision records
1pinned toolchain: clang/LLVM 22

The build's loc command publishes the line count for the whole image, with imports such as musl, Lua, sbase and Limine counted next to our own code.