SlopOS
Architecture

Boot

Boot path from Limine to userland

SlopOS boots as a Limine payload under OVMF. The ISO builder injects the chosen framebuffer resolution and optional kernel command line into the boot configuration.

Stages

StageResponsibility
Limine handoffRead bootloader requests, memory map, framebuffer, and modules
Early CPU setupBring up serial logging, descriptor tables, syscall entry, and service tables
Memory handoffInitialize physical frames, heap, paging, and kernel mappings
Interrupt setupInstall exception and IRQ entry, LAPIC, IOAPIC, vectors, and exception stacks
SMPBring up application processors and per-CPU state
Platform devicesDiscover ACPI tables, HPET, PCI, interrupt routing, VirtIO, and input devices
Scheduler and initStart scheduling, launch init, and enter userland

Boot invariants

  • HPET is required for the supported QEMU runtime.
  • LAPIC timer calibration is required. HPET is the preferred reference clock.
  • The scheduler tick uses the LAPIC timer. PIT is only a legacy calibration fallback and does not drive scheduling.
  • Application processors start their LAPIC timers after calibration is available.
  • VirtIO devices use modern interrupt delivery; legacy mode is not the supported runtime path.

Command line

The justfile threads boot and test command-line keys into the ISO:

BOOT_CMDLINE='tests=off roulette=skip boot.debug=on' just boot-log
TEST_CMDLINE='tests=on tests.run=slopos_mm::*' just test

Common keys:

KeyMeaning
tests=on/offEnable the test harness
tests.shutdown=on/offExit QEMU through the debug-exit device after tests
tests.verbosity=quiet/summary/verboseTest output detail
tests.run=globRun matching tests
tests.skip=globSkip matching tests
roulette=skipBypass the Wheel of Fate
boot.debug=onEnable extra boot logging

On this page