An experimental x86-64 operating system in C and NASM, from the first sector the BIOS loads to a shell prompt with nothing borrowed in between. Bootloader, 64-bit kernel, bitmap allocator, paging, task switching, drivers, interrupts. Every abstraction has to be built before you can use it.

Written to find out what is actually underneath everything else. Starts at the first sector the BIOS loads and stops at a shell prompt, with nothing borrowed in between.

What it does

  • Multi-stage BIOS bootloader transitioning through real, protected, and long mode.
  • A 64-bit kernel with a bitmap-based physical memory allocator, paging-based virtual memory, a kernel heap, and task switching.
  • PS/2 keyboard and mouse drivers, PIT and RTC timers, ACPI parsing, a VESA framebuffer, IDT/ISR/IRQ handlers, and a basic shell.

What was interesting

Every abstraction you normally get for free has to be built before you can use it, and in the right order. There is no heap until you have written the allocator, and no allocator until paging works. The dependency graph is the project.

Work

TaraOS

· 1 min

Year
2023–24
Status
archived
Role
Sole author
Built with
C · NASM · x86-64