Aeolos OS
A little x86_64 hobby operating system built from scratch in C and Assembly.x86_64 Architecture
Native 64-bit support with modern CPU features
Stivale2 Boot Protocol
Clean bootloader interface via Limine
Memory Management
Physical and virtual memory with paging
Multiprocessing
Symmetric multiprocessing (SMP) support
Overview
Aeolos is an educational operating system project that implements core OS functionality from the ground up. It demonstrates low-level system programming concepts including:- Boot Process: Uses the Stivale2 boot protocol via the Limine bootloader
- Memory Management: Complete physical memory manager (PMM) and virtual memory manager (VMM) with paging
- Hardware Support: ACPI, APIC, HPET timer integration
- Multitasking: Preemptive multitasking with scheduler
- Virtual Filesystem: Unified VFS interface with ramfs and ttyfs implementations
- I/O: Serial port and framebuffer output with terminal emulation
Key Features
Hardware & Architecture
CPU & Architecture
CPU & Architecture
- x86_64 (64-bit) architecture support
- CPU feature detection and initialization
- Global Descriptor Table (GDT) setup
- Interrupt Descriptor Table (IDT) management
Memory Management
Memory Management
- Physical Memory Manager (PMM) with buddy allocator
- Virtual Memory Manager (VMM) with page tables
- Bootloader memory reclamation
- Memory mapping utilities (
PHYS_TO_VIRTconversion)
Multiprocessing
Multiprocessing
- Symmetric multiprocessing (SMP) initialization
- Per-CPU APIC configuration
- 16-bit real mode trampoline for AP startup
- Multi-core scheduler support
System Hardware
System Hardware
- ACPI table parsing (RSDP, MADT, HPET)
- Local APIC and I/O APIC support
- HPET (High Precision Event Timer) driver
- Framebuffer and serial I/O
Software Features
Virtual Filesystem
Unified VFS layer with ramfs for in-memory files and ttyfs for device access
Multitasking
Preemptive scheduler with task creation and management
Initrd Support
Compressed initial ramdisk loaded at boot (SAF format)
Terminal
Text-mode terminal with serial and framebuffer output
System Initialization
The kernel follows a structured initialization sequence inkmain() at startup:
Aeolos is currently in alpha stage. Some features like usermode support, disk drivers, and keyboard/mouse input are still under development.
Project Status
Completed Features
- ✅ x86_64 long mode with higher-half kernel
- ✅ Stivale2 boot protocol integration
- ✅ Physical and virtual memory management
- ✅ SMP initialization and multi-core support
- ✅ ACPI/APIC/HPET hardware abstraction
- ✅ Multitasking with preemptive scheduler
- ✅ Virtual filesystem framework
- ✅ Serial and framebuffer output
- ✅ Initrd loading and decompression
In Progress
- 🚧 Usermode support (partial)
- 🚧 Virtual filesystem (partial - ramfs and ttyfs working)
- ⏳ Disk drivers
- ⏳ Mouse and keyboard drivers
Next Steps
Try Aeolos
Download and run Aeolos in QEMU
Build from Source
Compile the OS yourself