Verify full OS boot via Limine (needs KVM host) #6

Open
opened 2026-10-10 21:55:20 +00:00 by muse-lantern · 0 comments
Member

Status

The disk image boot chain is fully assembled and verified up to the bootloader handoff. Actual kernel/OS boot has NOT been observed — QEMU/TCG in the nested code-server VM is too slow (5min timeout, zero serial output).

What's verified ✅

  • res-os-builder build produces a 292MB GPT image with FAT32 ESP
  • ESP contains: vmlinuz (14.5MB, real kernel), initramfs (183MB), limine.conf, amd-ucode.img, intel-ucode.img, BOOTX64.EFI
  • limine.conf has correct :Residual OS entry with microcode module_path lines before initramfs
  • BOOTX64.EFI (from Alpine limine package) is copied to EFI/BOOT/ automatically
  • Microcode handling: *-ucode.img from /boot → ESP + limine.conf; warns if missing, doesn't fail
  • OVMF loads BOOTX64.EFI from ESP (UEFI handoff confirmed via serial)
  • limine bios-install succeeds (but BIOS is deferred, see #5)
  • Direct kernel boot via QEMU -kernel/-initrd works (BOOT-OK, pre-existing)

What's NOT verified ❌

  • Limine menu appearance (graphical, not visible on serial)
  • Kernel boot messages through Limine
  • Initramfs /init execution via the disk boot path
  • OS reaching userspace

To test (needs KVM)

# On a host with KVM:
cd ~/res-builder-new && git pull origin main

go build -o /tmp/res-os-builder ./cmd/res-os-builder
/tmp/res-os-builder build --from-dockerfile image/Dockerfile.residual --output /tmp/test.img

# Limine EFI is auto-installed from the Alpine package.
# Boot with KVM:
qemu-system-x86_64 -drive file=/tmp/test.img,format=raw \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.fd \
  -drive if=pflash,format=raw,file=/tmp/ovmf-vars.fd \
  -m 2048 -enable-kvm -serial stdio -display none

Expected: Limine loads, kernel boots, serial shows RESIDUAL-POC messages from initramfs.

  • #4 (harness review — all fixed)
  • #5 (BIOS boot — deferred)
  • #3 (container metadata — future)

Blocked on KVM access. The code-server VM has no /dev/kvm.

## Status The disk image boot chain is fully assembled and verified **up to the bootloader handoff**. Actual kernel/OS boot has NOT been observed — QEMU/TCG in the nested code-server VM is too slow (5min timeout, zero serial output). ## What's verified ✅ - `res-os-builder build` produces a 292MB GPT image with FAT32 ESP - ESP contains: `vmlinuz` (14.5MB, real kernel), `initramfs` (183MB), `limine.conf`, `amd-ucode.img`, `intel-ucode.img`, `BOOTX64.EFI` - `limine.conf` has correct `:Residual OS` entry with microcode `module_path` lines before initramfs - `BOOTX64.EFI` (from Alpine `limine` package) is copied to `EFI/BOOT/` automatically - Microcode handling: `*-ucode.img` from `/boot` → ESP + limine.conf; warns if missing, doesn't fail - OVMF loads `BOOTX64.EFI` from ESP (UEFI handoff confirmed via serial) - `limine bios-install` succeeds (but BIOS is deferred, see #5) - Direct kernel boot via QEMU `-kernel`/`-initrd` works (BOOT-OK, pre-existing) ## What's NOT verified ❌ - Limine menu appearance (graphical, not visible on serial) - Kernel boot messages through Limine - Initramfs `/init` execution via the disk boot path - OS reaching userspace ## To test (needs KVM) ```sh # On a host with KVM: cd ~/res-builder-new && git pull origin main go build -o /tmp/res-os-builder ./cmd/res-os-builder /tmp/res-os-builder build --from-dockerfile image/Dockerfile.residual --output /tmp/test.img # Limine EFI is auto-installed from the Alpine package. # Boot with KVM: qemu-system-x86_64 -drive file=/tmp/test.img,format=raw \ -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.fd \ -drive if=pflash,format=raw,file=/tmp/ovmf-vars.fd \ -m 2048 -enable-kvm -serial stdio -display none ``` Expected: Limine loads, kernel boots, serial shows `RESIDUAL-POC` messages from initramfs. ## Related - #4 (harness review — all fixed) - #5 (BIOS boot — deferred) - #3 (container metadata — future) --- *Blocked on KVM access. The code-server VM has no /dev/kvm.*
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
residual/os#6
No description provided.