Add windows/iso-builder.md: reproducible custom-packed-ISO pipeline design for
SilverMetal Enhanced - Windows on IoT Enterprise LTSC. Covers the licensing
frame (IoT = blessed channel for preinstalled custom images; self-apply stays a
builder), 7 build stages (verify/extract/DISM-service/inject-unattend/brand/
oscdimg-repack/attest), the offline-vs-first-boot-vs-firmware control split, an
honest reproducibility scope (pinned inputs + SBOM + attestation, NOT bit-
identical on Windows), and M0-M4 milestones.
Scaffold windows/ per the planned layout:
- installer/ build.ps1 (7-stage orchestrator, stages stubbed to M2),
inputs.manifest.json (pinned-input schema), autounattend.xml
(local-account OOBE), oem/SetupComplete.cmd (first-boot runner)
- hardening/ shared §A-H PowerShell modules + Verify-SilverMetalWindows.ps1
(used by BOTH the ISO first-boot path and the self-apply track).
BitLocker module enforces TPM+PIN and blocks TPM-only.
- policies/ wdac/ debloat/ stack-installer/ drivers/ tests/ scaffolded with
READMEs; wdac/ documents audit->enforce; debloat/ flags Tiny11/NTLite as an
anti-pattern; rename applocker/ -> wdac/ realised.
All 11 PowerShell scripts parse clean; manifest JSON + autounattend XML valid.
Module bodies are M1 scaffold (safe: log + policy-set; interactive/firmware
steps documented, not faked).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
24 lines
1.3 KiB
PowerShell
24 lines
1.3 KiB
PowerShell
#Requires -Version 5.1
|
|
<# SilverMetal Enhanced - Windows | Domain B: Boot & firmware trust
|
|
Most of B is a FIRMWARE step (Secure Boot custom-key enrollment, BIOS admin
|
|
password) that an OS image cannot perform. This module STAGES our keys and
|
|
reports Secure Boot state; the enrollment itself is done in UEFI setup at
|
|
provisioning (SKU) or as a documented user step (self-apply).
|
|
Spec: ../hardening-spec.md (B) | SCAFFOLD (M1).
|
|
#>
|
|
[CmdletBinding()] param()
|
|
Set-StrictMode -Version Latest; $ErrorActionPreference = 'Stop'
|
|
Write-Host '[B] Boot & firmware trust'
|
|
|
|
try {
|
|
if (Confirm-SecureBootUEFI) { Write-Host ' Secure Boot: ENABLED' }
|
|
else { Write-Warning ' Secure Boot is DISABLED - enable + enrol custom keys in UEFI setup.' }
|
|
} catch { Write-Warning " Secure Boot state unavailable (legacy/CSM?): $_" }
|
|
|
|
# TODO-M1: stage SilverMetal PK/KEK/db (retain Microsoft UEFI CA for option ROMs) to a known path
|
|
# for KeyTool/manual enrollment; document the firmware-side procedure.
|
|
# REMINDER (manual, NOT scriptable here): set a BIOS admin password; disable PXE/legacy/CSM;
|
|
# verify enrolled keys survive a GPD BIOS update (open question, hardening-spec.md §8).
|
|
|
|
Write-Host ' [B] staged (firmware enrollment is a documented manual step)'
|