A hobby operating system kernel targeting retro x86 hardware. RetroS is intended to eventually merge with the mybios project to provide a unified BIOS-to-OS stack for retro computing platforms.
Work in progress. Currently boots on QEMU and Bochs with the following functionality:
- Custom bootloader
- Paging / MMU support
- Device driver infrastructure with register specification tooling (regspecc)
- Bus support: PCI enumeration, ACPI, IO port, MMIO
- Block devices: ATA, partition table parsing
- FAT filesystem (read)
- VGA display output
- Timer support (HPET, PIT)
- Basic kernel memory allocator
- ELF loading
Requires an i386 cross-compiler (i386-elf-gcc / i386-elf-ld) or Clang/LLD:
git clone --recurse-submodules https://github.com/dougvj/retros.git
cd retros
# With cross-compiler
make
# With Clang
make CC=clang LD=ld.lldThe regspecc tool is included as a submodule under tools/regspec/ and is built automatically. It requires libyaml.
bootloader/ - Custom bootloader
src/
arch/x86/ - x86-specific code (interrupts, MMU, linker script)
dev/ - Device drivers and bus support
fs/ - Filesystem implementations (FAT)
krn/ - Kernel core (memory, output, scheduling)
lib/ - Support libraries (string, ELF)
mach/ - Machine-specific initialization (PC)
tools/ - Build tools (regspecc - register spec compiler)
Hobby project - no formal license yet.