Oxide RFD 284: Loading the Host Operating System
7 hours ago
- The Pico Host Boot Loader (phbl) is the component responsible for loading and starting the host OS image on Oxide machines.
- phbl is loaded from SPI flash by the PSP after DRAM training and runs from the BSC reset vector, bringing the processor to 64-bit mode.
- It loads a compressed CPIO archive (ZLIB) containing the host kernel, extracts the ELF image, loads it into RAM, and calls the kernel's entry point.
- Virtual memory mappings use the largest possible page sizes (1GiB, 2MiB, 4KiB) and respect segment protection bits; UART is mapped uncached.
- phbl minimizes system state changes, passing only the CPIO archive's physical address and length to the kernel, and maintains a defined system state on entry.
- The current implementation compresses the boot archive into the phbl image, but future separation is possible without backward compatibility concerns.
- Security relies on the service processor validating host images in flash; phbl performs no runtime verification.