Skip to content
jjwangPublic

About

Microkernel-based General Purpose Operating System #Hobby OS#

Topics

Resources

Stars

53 stars

Watchers

2 watching

Forks

Repository files navigation

HanOS - Microkernel-based General Purpose Operating System

English | 中文

Codacy Badge

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, and echo.
  • Link userspace against musl; keep the kernel on a small freestanding C library.

Building

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.

Layout

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.

Documentation

doxygen Doxyfile generates the HTML docs. A GitHub Action publishes them to GitHub Pages on every push to mainline.

About

Microkernel-based General Purpose Operating System #Hobby OS#

Topics

Resources

Stars

53 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages