I want to share nos, a hobby x86-64 OS kernel I’ve been working on.
I started this mainly because I wanted to learn kernel development properly, and studying the Linux kernel feels pretty overwhelming these days. It’s huge, highly optimized, and hard to follow end-to-end. So I decided to build something smaller but still realistic.
nos is written in C++20 + NASM and currently has:
SMP + preemptive scheduler for kernel tasks (no user-mode yet)
virtual memory (4-level paging, high-half kernel)
interrupts + basic ACPI
PCI scan/probing + virtio drivers (blk + scsi + net + rng)
IPv4/TCP, DHCP, DNS, UDP, ARP, ICMP, simple HTTP client
small filesystem + shell (including remote)
timekeeping (pit, tsc, kvm clock, rtc)
It runs in QEMU/KVM — and also boots on real cloud VMs (I’ve tested it on Google Cloud using KVM-based instances e2-medium).
This is mostly a learning project, but I tried to keep the design clean and readable while still being close to how real systems work. I’d really appreciate any feedback, especially on scheduler design, memory management, or networking.
Repo: https://github.com/irqlevel/nos
Thanks for reading.