HanOS targets x86-64 and is written in C. The filesystem, pipes, terminal, and block driver run as userspace servers. The servers communicate over a small IPC layer.
Current features:
- Boot Limine into long mode; run SMP, an APIC-timer scheduler, HPET, and RTC.
- Draw a framebuffer terminal from a userspace console server; log to the kernel.
- Manage virtual memory with buddy, slab, and bitmap allocators; share memory objects.
- Read a PS/2 keyboard and mouse; drive the hardware cursor from a USB HID pointer.
- Mount a VFS over an initrd ramfs and a read-only FAT32 driver. The FAT32 server reads the disk through a userspace block server.
- Run a userspace shell with
ls,cat,wc,pwd,rm, andecho. - Link userspace against musl; keep the kernel on a small freestanding C library.
Install an x86_64-elf cross toolchain, nasm, and xorriso. Clone Limine, then build and run:
make limine
make # builds cdrom.iso
make run # boots it in QEMU
make run-uefi # boots under UEFI (downloads OVMF first)
make run-hdd builds a FAT-formatted disk image and boots from it. It needs mtools and sgdisk.
kernel/ the kernel (arch/x64, mm, proc, fs, ipc, router, srv) and its C library (lib/)
userspace/ the programs (servers/, bin/, test/) and the HanOS runtime
include/ wire headers shared by the kernel and userspace
musl/ the musl build and the HanOS port layer
See musl/README.md for the musl build.
doxygen Doxyfile generates the HTML docs. A GitHub Action publishes them to GitHub Pages on every push to mainline.