Skip to content

Real NVMe disks and recovery-state boot for upgrade compliance - #49

Merged
sion42x merged 2 commits into
skaram/sp-emu-isolatefrom
skaram/make-upgrade-compliant
Aug 28, 2026
Merged

Real NVMe disks and recovery-state boot for upgrade compliance#49
sion42x merged 2 commits into
skaram/sp-emu-isolatefrom
skaram/make-upgrade-compliant

Conversation

@sion42x

@sion42x sion42x commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Third in the flag-day stack, on top of #48: real NVMe sled disks provisioned by voxel-init, and SP host flash seeded with phase 1 so racks start in the recovery state.

Each sled gets the gimlet complement (2 M.2, 5 U.2) as propolis
NvmeDisk devices on sparse host zvols under the deployment's dataset,
so teardown reaps them and every launch starts on blank media. Disk
identity rides in the NVMe serial; voxel-init discovers the disks with
nvmeadm, writes the six-partition gimlet layout on the M.2s, seeds the
boot image partition from the image's host phase 2, labels the U.2s,
and names them all in sled-agent's config as real injected disks -
omicron's SyntheticDisk path no longer runs anywhere. The install
dataset preseed moves onto the M.2 ZfsPool slice. Also fixes
stage_sp_emu reading hubris archives from its own output directory
instead of the image firmware dir (a shadowed binding), which broke
every --emu launch.
Launch stages the release's host phase 1 rom into the fleet dir and
writes it into each gimlet SP's host-boot QSPI before the SP starts,
so Hubris hashes real contents and Nexus identifies host phase 1
instead of reporting unknown (pairs with the sp-emu SHA-256 hash
model). voxel-init also writes installinator's mupdate-override marker
into every install dataset, so a fresh rack boots frozen in the
post-MUPdate state and recovery-finish becomes the mandatory first
operation, exactly as on a real rack (RFD 556).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant