Skip to content

BMC-hosted shell boot as a boot-delivery candidate; name srv13-srv16 - #13552

Closed
briansrls wants to merge 1 commit into
mainfrom
altra-boot-delivery-unify
Closed

briansrls wants to merge 1 commit into
mainfrom
altra-boot-delivery-unify

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

The ASRock ALTRAD8UD's BMC-hosted netboot (gunbc.bmc_netboot_serve: the
OpenBMC controller serves kernel/initrd/seed, the host's UEFI Shell fetches
them over SOL) lived as a separate srv4-only flow beside the one delivery
solver. It exists because the board's firmware PXE client needed a setup
visit to enable (#7027), which is not remotely actuatable.

It is now the seventh candidate of gunbc.boot_artifact_delivery, shaped
exactly like UEFI HTTP: a target-bound BmcHostedShellBootStanding with five
requirements of its own (controller shell, serve, SOL send, UEFI Shell,
artifacts), a BmcHostedShellBoot delivery arm, and BootFromUefiShell as its
boot-control target (Redfish BootSourceOverrideTarget UefiShell). It ranks
last under the existing policy, so an established PXE path always wins.
The frozen os_install_mechanism projection refuses it as outside the legacy
mechanisms; it requires no site staging capability.

No producer mints its Established arm yet: a frontier row in
census_closure_frontier names the producer that dissolves it. Moving
bmc_netboot_serve onto these params is that follow-up.

srv13-srv16 (operator, 2026-10-07): four ASRock Altra hosts get HostIdentity
and hostname allocation rows only. No address, BMC endpoint, MAC or hardware
row is authored before first contact observes one.

Executed locally with a fresh claim_batch: boot_artifact_delivery (34/34,
new test bmc_hosted_shell_boot_is_selected_only_when_established_and_outranked_by_pxe),
dissolution_census (5/5), network_boot_manifest_broker (23/23),
hostname_allocation (7/7), runner_throughput_qualification (29/29),
managed_host_unit_hold (17/17).

🤖 Generated with Claude Code

The ASRock ALTRAD8UD's BMC-hosted netboot (gunbc.bmc_netboot_serve: the
OpenBMC controller serves kernel/initrd/seed, the host's UEFI Shell fetches
them over SOL) lived as a separate srv4-only flow beside the one delivery
solver. It exists because the board's firmware PXE client needed a setup
visit to enable (#7027), which is not remotely actuatable.

It is now the seventh candidate of gunbc.boot_artifact_delivery, shaped
exactly like UEFI HTTP: a target-bound BmcHostedShellBootStanding with five
requirements of its own (controller shell, serve, SOL send, UEFI Shell,
artifacts), a BmcHostedShellBoot delivery arm, and BootFromUefiShell as its
boot-control target (Redfish BootSourceOverrideTarget UefiShell). It ranks
last under the existing policy, so an established PXE path always wins.
The frozen os_install_mechanism projection refuses it as outside the legacy
mechanisms; it requires no site staging capability.

No producer mints its Established arm yet: a frontier row in
census_closure_frontier names the producer that dissolves it. Moving
bmc_netboot_serve onto these params is that follow-up.

srv13-srv16 (operator, 2026-10-07): four ASRock Altra hosts get HostIdentity
and hostname allocation rows only. No address, BMC endpoint, MAC or hardware
row is authored before first contact observes one.

Executed locally with a fresh claim_batch: boot_artifact_delivery (34/34,
new test bmc_hosted_shell_boot_is_selected_only_when_established_and_outranked_by_pxe),
dissolution_census (5/5), network_boot_manifest_broker (23/23),
hostname_allocation (7/7), runner_throughput_qualification (29/29),
managed_host_unit_hold (17/17).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T22:13:35.363523Z 2eec5cb PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2eec5cb7e3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

OpenBmcConfigfsUsbGadget { params: _ } => BootFromRemovableMedia
UefiHttpBoot { params: _ } => BootFromUefiHttp
PxeChainBoot { evidence: _ } => BootFromNetworkPxe
BmcHostedShellBoot { params: _ } => BootFromUefiShell

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require a route that can select the UEFI shell

When this arm is selected, the plan unconditionally requests BootFromUefiShell, but solve_bound_boot_artifact_delivery admits any route that provides generic boot control. The new witness exercises this with no_vm_profile, whose only route is IpmiLanplusRoute; the modeled IPMI and Redfish target vocabularies provide no UEFI-shell target. Consequently, an established shell standing can produce a plan whose boot-control action cannot be realized. Require route-specific evidence that the shell can be selected, or refuse this candidate.

Useful? React with 👍 / 👎.

if same_boot_delivery_target(left: t, right: request.target) == false {
CandidateIneligible { cause: CandidateEvidenceForOtherTarget { evidence_target: t } }
} else {
staged_digest_standing(offered: p.artifact_digest, requested: request.artifact.digest)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bind the ISO downloaded by the shell boot path

For an IsoImage request, this compares the requested ISO digest with BmcHostedShellBootParams.artifact_digest, which is documented as the digest of the bootstrap served by the controller. The actual path in gunbc.bmc_netboot_shell_boot fetches vmlinuz and initrd from the BMC and then downloads the installation ISO from BmcNetbootServePlan.bulk_iso_url; that URL and its bytes are absent from this standing. A matching bootstrap digest can therefore make the candidate eligible while the kernel downloads an unrelated ISO, violating the plan's exact-artifact guarantee. Bind and verify the bulk ISO URI/digest as well, or restrict this delivery to an artifact format representing the served kernel/initrd bundle.

Useful? React with 👍 / 👎.

@gunbai-bot

gunbai-bot Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Closing in the v1 closeout: it builds the BMC-hosted boot route, which was dropped, and its srv13-16 naming is already in #13570 (folded into #13641). Branch kept. — sent from neat-wolf-604

@gunbai-bot gunbai-bot Bot closed this Oct 9, 2026
@gunbai-bot gunbai-bot Bot mentioned this pull request Oct 10, 2026
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