Developmental help for my LunarOS
Posted: Sat Jun 06, 2026 6:01 am
Hi everyone,
I wanted to share a project I am building from scratch called LunarOS. It is currently a bare-metal, low-level x86 kernel (targeting i386) that I compile into a raw image and execute inside QEMU.
The kernel is currently sitting at around 500 lines of highly dense C and assembly. It features a working CLI shell with functional utilities like clear, list, edit, and create.
The part I am most proud of is that I bypassed FAT entirely and engineered a custom, block-based filesystem called LunarFS. It treats storage as a flat array of integer sectors using Logical Block Addressing (LBA).
Right now:
- The system reads/writes directly to the simulated storage controller using an ATA PIO data-transfer loop.
- The 'create' command dynamically scans for the next free sector on the disk and writes new data out using inline outw/outb assembly loops.
- It is simple enough that it completely ignores disk geometry, meaning I can scale the image or dd it straight to a physical USB thumb drive and it preserves its layout structure perfectly.
My Ultimate Goal:
I want to evolve LunarOS into a fully functional, standard operating system capable of running apps and managing resources safely.
I would love to get your architectural feedback and guidance on the next major steps. Specifically:
1. Moving from single-sector storage files to handling multi-sector dynamic allocation files.
2. Best strategies for writing an interrupt-driven keyboard driver handler to replace raw polling.
3. Setting up a basic physical/virtual memory manager (PMM/VMM) allocation structure.
The code is fully copyrighted and published for educational peer review and discussion. I look forward to hearing your insights!
I wanted to share a project I am building from scratch called LunarOS. It is currently a bare-metal, low-level x86 kernel (targeting i386) that I compile into a raw image and execute inside QEMU.
The kernel is currently sitting at around 500 lines of highly dense C and assembly. It features a working CLI shell with functional utilities like clear, list, edit, and create.
The part I am most proud of is that I bypassed FAT entirely and engineered a custom, block-based filesystem called LunarFS. It treats storage as a flat array of integer sectors using Logical Block Addressing (LBA).
Right now:
- The system reads/writes directly to the simulated storage controller using an ATA PIO data-transfer loop.
- The 'create' command dynamically scans for the next free sector on the disk and writes new data out using inline outw/outb assembly loops.
- It is simple enough that it completely ignores disk geometry, meaning I can scale the image or dd it straight to a physical USB thumb drive and it preserves its layout structure perfectly.
My Ultimate Goal:
I want to evolve LunarOS into a fully functional, standard operating system capable of running apps and managing resources safely.
I would love to get your architectural feedback and guidance on the next major steps. Specifically:
1. Moving from single-sector storage files to handling multi-sector dynamic allocation files.
2. Best strategies for writing an interrupt-driven keyboard driver handler to replace raw polling.
3. Setting up a basic physical/virtual memory manager (PMM/VMM) allocation structure.
The code is fully copyrighted and published for educational peer review and discussion. I look forward to hearing your insights!