Systems & OS Engineering
I explore low-level systems programming by building directly on bare metal — no OS, no runtime, no abstractions. Here are some of my systems projects:
mini-os — Custom 32-bit Operating System
A minimal 32-bit operating system written entirely from scratch in x86 NASM assembly and C. It boots directly from raw disk sectors, transitions the CPU from 16-bit Real Mode to 32-bit Protected Mode, and renders output directly by writing to VGA memory.
Written in NASM, the 512-byte boot sector loads at 0x7C00. It uses BIOS interrupt int 0x13 to read 5 kernel sectors into memory at 0x1000, sets up a Global Descriptor Table (GDT), and performs a far jump into 32-bit Protected Mode.
The C kernel runs with no standard library. It writes directly to the VGA text buffer at 0xB8000, where each character is two bytes: the ASCII value followed by a color attribute byte (0x0F = white on black). The kernel then enters an infinite halt loop via __asm__("hlt").
Built with a cross-compilation toolchain: i686-elf-gcc and i686-elf-ld with a custom linker.ld script to produce a flat binary. The Makefile concatenates the boot sector and kernel binary into a single os-image.bin, run using qemu-system-i386.
Read the full technical write-up in the blog post →