Files
Invoke-HTTPBootBiosConfigur…/Docs/HttpBootProfile-Reference.md
T
gsadmin c3e75ceb5a feat: Add HTTP(s) boot BIOS configuration with dynamic tool staging
- Rename OSD-ScriptTemplate to Invoke-HTTPBootBiosConfiguration (script and bootstrapper)
- Configure Dell HTTPS boot via CCTK: enable HttpsBoot, set ManualMode, delete existing HttpBootProfile (avoids stale URL not applying), apply generated profile, and verify the applied URL via --Get
- Build the HttpBootProfile XML with XmlDocument/XmlWriter; embed the dynamically downloaded Let's Encrypt ISRG Root X1 root certificate; IntegrityInfo emitted with an intentionally empty digest (no hashing - values only)
- Default boot image file name snponly_x64.efi is appended when the boot URL does not end with a file name (trailing slash tolerant)
- Add Invoke-ToolStaging toolkit function: downloads and extracts tools into Toolkit\Tools (All/X86/X64/ARM64) regardless of manufacturer, so staged bits travel with the script folder and repeat executions use cached bits; supports RawFile, Archive (.zip/.7z), MSI (administrative extraction), and DellUpdatePackage (7z payload carved by binary signature, extracted with portable 7zr.exe)
- Add ARM64 support to the toolkit OS architecture calculation
- Automatic proxy resolution for downloads: user WinINET proxy, then machine WinHTTP proxy (binary WinHttpSettings parsing incl. per-protocol lists and bypass list), then direct
- Windows PE support; WinPE-MSI only needed for the direct DUP path (stage once from a full OS instead)
- --ValSetupPwd appended only on modification commands when a setup password is supplied; verified CCTK ignores it when no BIOS password is installed, so one command line works fleet-wide
- Git ignore staged tool binaries (cannot be redistributed); add README, Docs (CCTK acquisition, HttpBootProfile reference, WinPE guide), and PowerShell authoring rules under .claude/rules

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 22:09:36 -04:00

4.7 KiB

HTTP Boot Profile Reference (Dell)

This document describes the HTTP boot profile document the script generates, the CCTK commands used to apply it, and the troubleshooting knowledge gathered while building this automation.

Generated profile document

The script writes <StagingDirectory>\HttpBootProfile.xml (UTF-8, no BOM):

<?xml version="1.0" encoding="utf-8"?>
<HttpBootProfile>
  <UrlInfo Type="https">
    <Url>https://prod.ipxe.example.com/2PXE/boot/x64/snponly_x64.efi</Url>
    <CertInfo Type="pem">
      <cert>-----BEGIN CERTIFICATE-----
... PEM content of the CA root certificate (ISRG Root X1 by default) ...
-----END CERTIFICATE-----
</cert>
    </CertInfo>
  </UrlInfo>
  <IntegrityInfo>
    <Algorithm>sha256</Algorithm>
    <Digest />
    <SignValue />
  </IntegrityInfo>
</HttpBootProfile>

The document is built with an XmlDocument and written through an XmlWriter (two-space indentation, UTF-8 without BOM).

Element notes (informed by the BiosConnectProfile.xsd schema that ships inside Dell Command | Configure):

Element Notes
UrlInfo@Type https or http, derived from the boot URL scheme
Url The full boot image URL
CertInfo Optional per the schema. Only emitted for https URLs. Type="pem" is the only supported certificate encoding
cert The PEM encoded CA root certificate of the chain that signs the boot server's TLS certificate. For Let's Encrypt this is ISRG Root X1 - not the leaf and not the R10/R11 intermediates
IntegrityInfo Required by the schema (it cannot be omitted). Algorithm supports sha1 and sha256
Digest Intentionally left empty (the schema allows an empty value). This script places configuration values only - it does not download or hash the boot image, so the boot image on the web server can change freely without invalidating the profile
SignValue Left empty (unsigned profile)

CCTK command sequence

cctk --Version
cctk --HttpsBoot=Enabled            [--ValSetupPwd=<password>]
cctk --HttpsBootMode=ManualMode     [--ValSetupPwd=<password>]
cctk HttpBootProfile --Delete       [--ValSetupPwd=<password>]   (skippable)
cctk HttpBootProfile --Set=<path>\HttpBootProfile.xml [--ValSetupPwd=<password>]
cctk HttpBootProfile --Get

Why delete before set

Updating only the URL inside an existing profile via HttpBootProfile --Set has been observed to not always apply - the BIOS keeps the old URL even though CCTK returns success. Deleting the profile first and applying the new one fresh avoids this. The script does this by default; -SkipProfileDeletion disables it if you want to test the in-place update behavior on a given BIOS release.

Verification

After applying, the script runs HttpBootProfile --Get and asserts that the output contains the exact boot URL that was requested. If it does not, the script fails (unless -ContinueOnError), so a silently ignored profile surfaces as a task sequence error instead of a device that will not boot later.

Relevant exit codes

CCTK exit codes are documented by Dell at https://www.dell.com/support/kbdoc/en-us/000147084/dell-command-configure-error-codes. The ones that matter here:

Exit code Meaning Script handling
0 Success Accepted everywhere
150 Profile Not Present Accepted for HttpBootProfile --Delete and returned by --Get when nothing is configured (verified empirically on 5.2.2)
240-246 Password related errors (wrong/required setup password) Fails the script - check -SetupPassword. Note the asymmetry: a device WITH a setup password fails without the correct -SetupPassword, but supplying -SetupPassword on a device WITHOUT one is harmless - CCTK ignores --ValSetupPwd when no setup password is installed (verified on 5.2.2), so one fleet-wide command line works both ways
119 Setting not supported on this platform Fails the script - the model may not support HTTPS boot

Troubleshooting

  • Profile applies but device does not boot: confirm the boot URL actually serves the boot image (e.g. snponly_x64.efi), and confirm the certificate in the profile is the root of the server's actual chain (openssl s_client -connect server:443 -showcerts).
  • URL change did not take effect: this is the delete-before-set issue above - re-run without -SkipProfileDeletion, or as a last resort clear it in the BIOS setup UI.
  • --Set returns a schema/parse error: inspect the generated HttpBootProfile.xml in the staging directory; the full document is also written into the script log.
  • Certificate expiry: the script logs the downloaded root certificate's subject, thumbprint, and expiration, and warns when it is expired. ISRG Root X1 is valid until 2035-06-04.