feat(vm): boot CoreOS via Ignition — Fedora CoreOS now runnable#50
Merged
Conversation
CoreOS-family images boot via Ignition, not cloud-init, which is why the SSH/cloud-init executor previously marked them unsupported. Add an Ignition seed-delivery mode: write a minimal Ignition v3 config authorising the per-run SSH key for the core user and pass it to QEMU via -fw_cfg name=opt/com.coreos/config (internal/vm/ignition.go). Fedora CoreOS is now runnable and proven end-to-end: FCOS stable boots and the validator load/attaches inside the guest (verified on kernel 7.0.11-200.fc44, ringbuf-modern load=pass attach=1/1). ExecutionTransport reports fedora-coreos supported; the profile is renamed fedora-coreos-stable-7.0 to match the real kernel. Fetch the image with `make vm-image-fcos`. RHEL CoreOS (rhcos) shares this exact Ignition+SSH boot path, so it is mechanically supported — but its image ships only through the pull-secret-gated OpenShift release payload and cannot be fetched/verified here, so it stays non-runnable (transport reason updated) until an operator supplies the image. RHCOS remains absent from the README "Distributions covered" section. Tests: ignition writer/distro-detection/seed-selection/fw_cfg arg + transport matrix; all green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43dd0fd to
5258113
Compare
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes the CoreOS boot path real, addressing the "RHCOS — those are the tricky ones" request (Angelo Puglisi) and the earlier audit note that RHCOS validation didn't actually work.
The gap
CoreOS-family images (Fedora CoreOS, RHEL CoreOS) boot via Ignition, not cloud-init, so the SSH/cloud-init executor couldn't provision the validator — they were marked
unsupported.The fix
A new Ignition seed-delivery mode (
internal/vm/ignition.go): write a minimal Ignition v3 config authorising the per-run SSH key for thecoreuser, and pass it to QEMU via-fw_cfg name=opt/com.coreos/config. Everything after SSH-up is seed-agnostic, so the rest of the pipeline is unchanged.Proven on Fedora CoreOS
FCOS stable boots and the validator load + attaches a real artifact inside the guest:
fedora-coreos, kernel7.0.11-200.fc44.x86_64seed delivery: Ignition config via fw_cfg (opt/com.coreos/config),SSH user selected: coreringbuf-modern:load=pass,attach=1/1ExecutionTransport()now reportsfedora-coreossupported. Profile renamedfedora-coreos-stable-6.14→fedora-coreos-stable-7.0to match the real kernel. Fetch the image withmake vm-image-fcos(resolves the stream, verifies sha256, decompresses).RHCOS — honest scope (unchanged claim)
rhcosshares this exact Ignition+SSH boot path, so it is mechanically supported — but its image ships only through the pull-secret-gated OpenShift release payload and can't be fetched/verified here.ExecutionTransport()keeps it unsupported with that precise reason until an operator supplies the image. RHCOS stays absent from the README "Distributions covered" section — no overclaiming.Tests
internal/vm: ignition writer, CoreOS distro detection, seed-mode selection, fw_cfg arg, and the transport matrix (FCOS supported / RHCOS gated-on-image).go build ./...,go vet ./...,gofmt, fullgo test ./...— all green.🤖 Generated with Claude Code