A minimal 64-bit command line operating system exploring low-level systems programming, hardware interaction, and kernel design.
This project began as a guided OSDev learning exercise based on common OSDev tutorials and documentation. It has since been extended into a functional 64-bit hobby operating system with independently developed features including a working shell, a flat filesystem, and low-level hardware drivers.
- Boots on x86-64 hardware and in QEMU / Bochs
- Interactive shell with command history and scrollback
- Simple flat filesystem stored directly on disk
- Persistent storage via ATA PIO disk driver
- File operations from shell (
write,cat,ls,del) - System real-time clock support
- Basic text editor
- 64-bit long mode kernel
- Custom bootloader with manual disk loading
- CPU feature detection using CPUID
- Physical memory detection (BIOS memory map)
- Basic identity paging setup for long mode
- GDT and IDT configuration for interrupt handling
- Interrupt-driven PS/2 keyboard input handling
- ATA PIO disk driver
- Flat disk-backed filesystem
- Basic kernel memory management (heap allocator)
- VGA text-mode driver with colour support
- CMOS real-time clock (RTC) access
help - Show this help message
clear - Clear the screen
reboot - Reboot the system
time - Display current date and time
echo <text> - Print text to the screen
add <n1>,<n2> - Add two integers
ls - List all files
write <filename> - Create or open a file for writing
cat <filename> - Print a file to the screen
del <filename> - Delete a file
format - Format the filesystem
Prebuilt .img files are available in the releases section.
Emulation is recommended via QEMU:
qemu-system-x86_64 -m 512M -drive format=raw,file=os.img,index=0,if=ide,media=disk
This can also be used with other x86-64 emulators that support raw disk images.
- NASM
- A GCC Cross-Compiler
This project uses a freestanding x86_64-elf-gcc cross-compiler (not the system GCC) as required for OS development. A system compiler will not work. See OSDev Wiki for help on this.
NASM can be installed:
- Windows - https://nasm.us
- Linux -
sudo apt install nasm
Once all requirements are installed:
- Windows: there is a batch build script in the main directory. These can be run as:
build - build without running
build image - creates a fresh image file, wipes filesystem
build boot - just launches QEMU without building
build run - builds and runs
- Linux/MacOS: not currently tested or actively supported. Manual build is possible using the same toolchain steps defined in the Windows scripts.
- Multitasking and Scheduling
- Directory-based filesystem
- Additional device drivers
- Scripting support
- Improved build system (Makefile)
MIT — see LICENSE

