This reference describes NoovexOS 64 v10.00. Release changes are in the Changelog.

NOOVEXOS 64 / TECHNICAL REFERENCE

NoovexOS 64 Architecture and Developer Reference

Minimum RAM: 64 MB.

For an overview, read How NoovexOS was built from scratch.

Version 10.25. x86-64, BIOS and UEFI, written from scratch.

This is the developer reference for NoovexOS 64: a from-scratch x86-64 operating system with its own boot loaders, kernel, drivers, file system, network stack, desktop and Linux-compatible user space. It was written from the source code, with file paths and symbol names so you can find the implementation. Where the code does something surprising or has a known gap, the text says so.

NoovexOS 64 includes three C libraries: mlibc, musl, and ported glibc.

Software packages can be downloaded with apt, but not every program will run on NoovexOS. Firefox ESR does: after sudo apt install firefox-esr, Firefox opens and draws its own window on the NoovexOS desktop. Downloading or installing other packages does not guarantee they can launch or work correctly.

  1. At a glance

    Area What is there Part Boot BIOS loader (myboot) and UEFI loader, hybrid ISO/USB image, SHA-256 build signature that stops the boot if the kernel was modified 2 Kernel 153 separately compiled C and C++ units with interface headers under include/nvx/ , a 77 MB flat image (100 MB limit) with compressed programs, the web engine, glibc, GNU tools and CPython 3.13, identity-mapped kernel, demand paging and copy-on-write for programs 1 , 3 CPU Up to 16 cores with per-CPU state, a ticket big kernel lock, IPIs for rescheduling, TLB shootdown and halt; cores start automatically 4 Programs 256 processes and threads, futexes, signals, timers, job control, pipes; native int 0x80 ABI and a Linux syscall ABI that runs static and dynamic musl programs (SQLite, gzip, xz, zstd, the kilo editor, the fetch HTTPS client) 5 , 6 Files NVX4 (extents, two checksummed metadata copies, safe against power cuts), FAT, NTFS via ntfs-3g, Unix permissions 7 Storage ATA PIO, AHCI, NVMe, VirtIO-blk, USB mass storage; graphical installer and Disk Manager 8 Network PCnet, e1000, RTL8139/8169, VirtIO-net, RTL8821CE Wi-Fi with WPA2; IPv4, DHCP, DNS, TCP/UDP, loopback; client and server sockets for Linux programs; TLS 1.3 in the kernel and BearSSL TLS 1.2 for programs, with certificate checks 9 Devices PS/2 and USB (xHCI) input, I2C touchpads, ACPI with an AML interpreter, HD Audio/AC97, framebuffer and GPU detection, an NVIDIA Turing driver through the GSP firmware ( nvgsp ) 10 Desktop Compositing desktop, apps, file explorer, an xterm-style terminal, the nsh shell with scripting and Lua 11 Web A browser engine: HTML parser and DOM, CSS cascade, layout with floats, positioning, tables, flexbox and grid, QuickJS JavaScript with the browser API, a cookie jar saved to disk, and the qjs command 13 Testing tools/check.py (build, static analysis, host tests under sanitizers, QEMU multi-core and network runs), boot emulation, serial log, panic screen 12

  2. How to read this document

    New to the code: read "What changed in v10.25", then Parts 1 and 2 for the build and boot, then the part for the area you want to change.

  3. Release history (technical)

    What changed in v10.25 # Before (v10.24) Now (v10.25) Where 1 Right-clicking a file, a folder or a window title had no Properties entry (only desktop icons had a small Properties box), and icons could not be changed.

  4. Contents

    Part 1: Overview, source layout and build system 1.

  5. Part 1: Overview, source layout and build system

    All paths below are relative to the root of the repository, which is also the directory build.sh runs from.

  6. Part 2: Boot chain, kernel entry and kernel signatures

    This part follows a NoovexOS 64 boot from firmware to the main loop, then covers how the kernel image is signed and checked.

  7. Part 3: Memory

    NoovexOS 64 has no general-purpose physical page allocator covering all of RAM.

  8. Part 4: CPU, interrupts, timers and multi-core

    This part describes everything between the bare CPU and the scheduler: the inline CPU helpers, descriptor tables, the interrupt and system-call entry paths, the legacy PIC/PIT, the high-resolution timers, and the symmetric-multiprocessing (SMP) layer with its big kernel lock.

  9. Part 5: Processes, scheduling, signals and the native system-call ABI

    This part covers how NoovexOS 64 runs user programs: the process table and its life cycle, the setjmp/longjmp scheduler, signals, job control on the terminal, pipes and file descriptors, the ELF loader, the program table, and the native int 0x80 system-call ABI.

  10. Part 6: Linux compatibility, libc and porting applications

    NoovexOS 64 runs two kinds of user programs side by side: Kind System-call gate C library Link type Loaded at Source Native ("legacy") int $0x80 , number in rax , args in rbx rcx rdx rsi rdi nvxlibc ( usr/libc ) or the header-only usr/src/user.h static ET_EXEC , usr/src/user.ld 0x40000000000 usr/src/*.c Linux ABI, static syscall instruction, Linux x86-64 numbers and registers musl 1.2.6 ( third_party/musl ), libc.a static-PIE ET_DYN 0x40000400000 ( ELF_PIE_BASE ) usr/musl/*.c test programs Linux ABI, dynamic (v8.97) same musl 1.2.6 shared, /lib/ld-musl-x86_64.so.1 PIE ET_DYN with PT_INTERP program at 0x40000400000 , dynamic linker at 0x7F000000000 third_party/* ports, dyntest Both run under the same job scheduler ( core/proc/jobs.c , struct jproc ), share the same VFS file table and the same signal machinery.

  11. Part 7: File systems

    NoovexOS 64 has no block cache layer under a generic inode cache the way Linux does.

  12. Part 8: Storage drivers, PCI and the installer

    This part covers everything between the PCI bus and a finished installation on disk: PCI configuration access, the four block-device back ends (ATA PIO, AHCI, NVMe, VirtIO-blk), the generic gdisk_* layer and its buffer cache, the graphical installer and disk manager in core/init/installer.c , USB mass storage, and the shell commands that work with disks.

  13. Part 9: Networking and Wi-Fi

    NoovexOS 64 has a complete, polled, single-threaded network path: PCI NIC drivers, an Ethernet/ARP/IPv4/ICMP/UDP/TCP stack, a DHCP client, a DNS resolver with a cache, an HTTP/1.0 client, a TLS 1.3 client that verifies server certificates, BSD sockets for Linux programs, and an experimental Wi-Fi driver for the Realtek RTL8821CE with a WPA2-PSK 4-way handshake and CCMP data path.

  14. Part 10: Input, USB, ACPI, sound and graphics drivers

    This part goes through the device drivers that are not storage, network or Wi-Fi.

  15. Part 11: Desktop, applications, shell and scripting

    This part covers everything above the kernel services: the window manager and compositor, the desktop shell (top bar, dock, launcher, notifications), the full-screen "live" terminal, the setup/login flow, every built-in application, the nsh shell and its complete command set, and the four ways to run code that is not compiled into the kernel (the integer JavaScript interpreter, Lua 5.5, Rune-compiled objects, and .MOD relocatable modules).

  16. Part 12: Testing, quality gates, debugging and history

    This part covers how NoovexOS 64 is tested and debugged: the automatic checker tools/check.py , the boot emulator tools/emulate.py , the host-side harnesses in tools/tests/ , the serial log and crash screen in the kernel, the shell commands for diagnosis, running in a VM, a troubleshooting table, a glossary and a version history.

  17. Part 13: The web engine, JavaScript and cookies

    Since v9.08 the browser is a real layout engine with a full JavaScript runtime.