Writing an operating system to explore low-level architecture and hardware programming.
(because I want to occupy my time)
- Firmware: UEFI
- CPU: 64-bit x86 processor with x2APIC support
- ACPI 2.0+
Estella - x86_64 EFI kernel using the Limine bootloader protocol.
- ✅ UEFI boot via Limine bootloader on x86_64
- ✅ Long mode + higher-half kernel - by Limine
- ✅ Serial (COM1) debug output
- ✅ Framebuffer text console (PSF2 font: Spleen 12x24)
- ✅ Initrd (CPIO newc) with file lookup
- ✅ GDT + TSS
- ✅ IDT + basic exception handlers - ISRs
- ✅ ACPI parsing (RSDP, XSDT, MADT, HPET)
- ✅ x2APIC support
- ✅ LAPIC timer in TSC-deadline mode (when invariant TSC available)
- ✅ TSC frequency detection (CPUID 0x15/0x16 + HPET fallback calibration)
- ✅ Physical Memory Manager (PMM) with self-tests
- ✅ Virtual Memory Manager (VMM) with self-tests
- ✅ PS/2 keyboard driver
- ✅ Temporarily kernelspace shell
- ✅ Current UTC time with (boot_time via limine) + (tsc(time after boot))
- ✅ Loading program in ring3
- ✅ Elf loader
- 🚧 Syscalls: read(0), write (1), getpid(39), exit(60)
- 🚧 Userspace lib: crt0, printf
- ✅ A few example userspace programs in userspace/programs
- ✅ Preemptive round-robin scheduler (LAPIC TSC-deadline)
- clang + ld.lld
- QEMU + OVMF
- make, git, curl/wget
git clone https://github.com/aprentxdev/SonnaOS
cd SonnaOS
make run