A complete, graphical, networked desktop operating system - written entirely from scratch.
No Linux. No libc. No borrowed binaries. Every byte, from the boot sector to the web browser, is hand-written.
Most hobby operating systems stop at "hello world on a VGA text screen." NexxoN OS is a real desktop OS - it boots on bare metal, brings up a 1024Γ768 true-colour framebuffer, and drops you into a compositing window manager with a taskbar, start menu, login screen, and a full suite of GUI apps. It talks to the network, plays audio through real hardware codecs, mounts USB sticks, and stores your files in a journaling filesystem that survives power cuts.
110+ source files Β· 50 000+ lines of C and x86 assembly Β· one ~8 MB bootable image.
- β
Boots from GRUB (CD/USB live) and from an installed SATA disk via its own
hand-written 2-stage bootloader (
installsyswrites the MBR + stage1/stage2 + kernel). - β 64-bit x86_64 long mode (4-level paging, 64-bit GDT/IDT/TSS, ring-3 syscalls, runtime VBE resolution switching). PIC/PIT/RTC, ACPI shutdown.
- β Preemptive round-robin scheduler with kernel tasks (background workers).
- β SMP detection, ASLR (per-boot randomized offset), NX-bit when the CPU supports it.
- β
Ring 3 β Ring 0 split with an
int 0x80syscall gate. - β
Recoverable panics - a faulting Ring-3 app's window is torn down and you return
to the desktop instead of rebooting; unrecoverable faults paint a full 64-bit RSOD
(all 16 GP registers + RIP/RSP/CR2, a stack trace, and a crash dump to
/sys/crash.log).
- β Frosted-glass compositing window manager - real backdrop blur under glass panels, 3-D glass bevels (light top/left, dark bottom/right), rounded corners on an 8 px grid, drag, resize, minimize, focus, z-order, anti-aliased text.
- β Liquid animations - window open/close, Start-menu slide, context-menu expand and toast slide-in all run on a unified PIT-driven ease-out cubic.
- β
Dirty-rectangle compositor - recomposes + presents only the damaged
region (idle ~28 ms β ~1.2 ms/frame), with MTRR write-combining on the
framebuffer; frame budget is logged to COM1 (
[wm/perf]). - β Frosted taskbar (start orb, running-window tiles, glass system tray, aero volume slider, two-line live clock) + frosted popups (calendar, network, toasts) and a soft Aero shadow.
- β Two-pane glass Start menu with app launcher, glossy glass avatar, shutdown/restart, search box, and the shared Aero button/tab/slider controls.
- β Persistent desktop icons + right-click context menus, screensaver.
- β Shell (60+ commands, line editing, tab, Ctrl+C) Β· Text Editor (find, clipboard)
- β NexSheet spreadsheet - formulas (SUM/AVG/IF/β¦), formatting, cell merge, CSV + XLSX I/O
- β Web Browser - renders live, real websites via a Puppeteer proxy (see below)
- β File Explorer, Image Viewer (BMP/PNG/JPEG, zoom), Music Player (WAV)
- β Task Manager (live CPU / RAM / network graphs), Settings, User Manager, Device Manager
- β Recycle Bin, NexxStore package browser, Pong
- β NIC drivers: Intel E1000, AMD PCnet, Realtek RTL8169.
- β IPv4, ARP, ICMP (ping), TCP (full state machine, RTO retransmit, 256 KiB ring), UDP.
- β DHCP client, DNS resolver, NTP time sync, HTTP/HTTPS downloads.
- β Crypto: SHA-256, HMAC, AES-128-GCM, TLS 1.2 client handshake.
- β Browser proxy auto-discovery - the proxy advertises itself via a UDP LAN beacon; NexxoN finds it automatically (manual IP stays as a fallback). π‘
- β Native Intel HDA driver (CORB/RIRB, codec walk, BDL streaming) - real sound on modern boards (Realtek codecs).
- β Legacy AC'97 path + PC-speaker fallback. System tones, music, and browser audio all route through a shared mixer (volume/mute).
- β
NXFS v3 - our own journaling filesystem:
- β No file-size limit - 12 direct + single/double/triple indirect blocks (4 KiB blocks β multi-GiB files; design ceiling 4 TiB/file).
- β Write-ahead metadata journal with CRC32 + crash replay β survives power loss.
- β
Streaming read/write API (64-bit offsets),
nxfsckconsistency checker/repair. - β
installsysformats the target disk at its real size and copies the live tree.
- β AHCI/SATA with automatic legacy IDE/ATA PIO fallback.
- β
USB mass storage (xHCI) - hot-plug/hot-swap auto-mount under
/usbN:- β FAT16/32 read and write (create/delete/mkdir/rename) with long filename (LFN) support
- β
exFAT read and write (verified
fsck.exfat-clean), NTFS read-only - β Streamed, un-capped file copy between volumes (no more 2 MiB limit)
- β USB HID keyboard + mouse (boot protocol, hot-swap, system-wide key repeat).
- β Graphical login, salted SHA-256 passwords, Admin/User roles, up to 8 accounts.
- β Full English + Hungarian localization, switchable at runtime - zero hardcoded UI strings - with automatic US-QWERTY β HU-QWERTZ keyboard layout switching.
Honest limitations - these are the next things on the roadmap, not hidden bugs:
- β No multitasking for user apps - apps run cooperatively on one shell context; only kernel worker tasks are preempted. No process isolation between apps.
- β The browser is a thin client - it does not parse HTML/CSS/JS locally; it streams JPEG frames from a host-side Puppeteer/Chromium proxy. No proxy β no web.
- β NTFS and the local HTML engine are read-only / absent - write support is FAT/exFAT/NXFS only.
- β Directories cap at 64 entries in NXFS v3 (file size is unbounded; dirent scaling is future work).
- β No real GPU acceleration - software rendering into a VBE/BGA linear framebuffer only. (NOTE: the OS now boots in 64-bit x86_64 long mode by default - see below.)
- β No Wi-Fi data path - the Wi-Fi app enumerates/associates but bulk traffic goes over wired NICs.
- β No virtual memory paging to disk for apps, no dynamic-library loading for third-party binaries
(there is an internal
nxlloader for built-ins only). - β TCP uplink window is single-segment - fine for the browser's command channel, not for bulk uploads.
# Ubuntu / Debian
sudo apt install build-essential nasm \
grub-pc-bin grub-common xorriso mtools \
qemu-system-x86 dosfstools netpbmgit clone https://github.com/SubCoderHUN/NexxoN-OS.git
cd NexxoN-OS
make # build the 64-bit kernel + bootable nexxon-os.img (x86_64)
make run # launch in qemu-system-x86_64 (audio + networking + AHCI disk)GRUB loads, the splash clears, and you land at the login screen.
Default login:
admin/admin
| Target | What it does |
|---|---|
make |
Build the 64-bit nexxon-os.img (bootable hybrid ISO/USB image) |
make run |
Boot in qemu-system-x86_64; creates a persistent nxfs-disk.img on demand |
make run-debug |
Boot with serial β terminal (watch COM1 / CPU exceptions) |
make clean |
Remove all build artifacts |
make proxy |
Install Node deps for the web-browser proxy |
Boot the live image, then from the shell:
installsys # writes MBR + bootloader + kernel + a fresh NXFS v3 partition
Reboot without the USB/CD and the machine boots NexxoN straight from SATA. The
prompt switches from β¦[EN:LIVE] to β¦[EN:HDD]. πΎ
cd proxy && npm install # one-time
node server.js # starts the proxy + LAN discovery beacon (UDP :9099)Then launch Browser inside NexxoN - it auto-discovers the proxy on the LAN (or set the IP manually in the toolbar).
##οΈ Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Ring 3 Shell Β· Editor Β· Browser Β· Explorer Β· NexSheet Β· Pong β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β int 0x80 syscall gate β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Ring 0 Window Manager Β· Compositor Β· Scheduler Β· IPC Β· Audio β
β NXFS v3 (journal) Β· VFS Β· USB(xHCI) Β· AHCI/IDE Β· DMA β
β TCP/IP Β· DHCP Β· DNS Β· NTP Β· TLS Β· Crypto Β· Downloads β
β SMP Β· ASLR Β· NX Β· GDT/IDT/PIC/PIT/RTC Β· Panic/Recovery β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β HW PCI Β· E1000/PCnet/RTL8169 Β· Intel HDA/AC'97 Β· USB Β· VBE β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The boot chain on an installed disk is fully hand-written:
stage1 (MBR, 512 B) β stage2 (unreal-mode ELF loader: reads the kernel in
real mode, copies it above 1 MiB) β kernel (Multiboot-v1 ELF).
| Property | Detail |
|---|---|
| Block size | 4 KiB (8 sectors) |
| Max file size | Effectively unlimited - 12 direct + 1Γ/2Γ/3Γ indirect (β4 TiB ceiling) |
| Random access | Any byte offset reached in β€ 3 indirect reads (no scanning) |
| Crash safety | Write-ahead metadata journal (header + payload + CRC32 commit), replayed on mount |
| Data ordering | Data written before the referencing transaction β crash can leak blocks, never corrupt structure |
| Repair | nxfsck [repair] rebuilds bitmaps from the reachable tree, reclaims leaks |
| Modes | RAMFS in LIVE mode (lost on reboot) Β· persistent on an installed SATA disk |
Verified in QEMU: a 20 MiB file written through the double-indirect path, byte-pattern verified,
nxfsckclean; akill -9during a 100 MiB write leaves a consistent shorter file on remount (0 problems, 0 leaks) - journaling works. β
NexxoN OS (guest) Host machine
ββββββββββββββββ TCP :9090 βββββββββββββββββββββββ
β Browser β βββ clicks/keys ββΊ β Puppeteer proxy β
β (JPEG viewer)β βββ IMG/TILE/AUD β β (headless Chromium) β
ββββββββββββββββ frames βββββββββββββββββββββββ
β² UDP :9099 discovery beacon ββββββββββββ
The proxy renders real pages in headless Chrome, streams JPEG frames + MP3 audio over TCP, and broadcasts a discovery beacon so the OS finds it with zero config. JPEG decoding runs in a background worker task, so heavy pages never freeze the UI.
QEMU (qemu-system-x86_64) Β· target hardware: ASUS P8Z77 (Ivy Bridge,
Intel 82579V NIC, Realtek HDA, xHCI USB). The 64-bit build is QEMU-verified
end to end (boot, desktop, ring-3 GUI apps, NXFS install + installed-disk
boot, resolution switching, networking, audio) and awaits its first
real-hardware pass - boot make run-debug and watch the COM1 log
([BOOT]/[vga]/[xhci]/[hda] markers) on the P8Z77.
NexxoN OS - built byte by byte. π§± Bootloader, kernel, drivers, filesystem, network stack, window manager and apps: all from scratch.






