Files
felhom.eu/REPORT.md
T

6.5 KiB

REPORT — TASK-G: arm the HP install ISO + assisted-picker filing (2026-07-21)

Baseline 0073691, clean tree; ISO tooling unchanged since v1.22.0, so this is a rebuild at v1.22.0 with a new profile name (hp-demo), not a version bump.

Part Status
1 — arm the ISO DONE, filter verified from inside the built ISO
2 — write it (gated) DONE, byte-proven, and re-verified from the written stick
3 — filing DONER-58

Part 1 — the armed ISO

Built from an uncommitted working profile, /mnt/5_hdd/felhom.eu/felhom-iso/hp-demo.profile (mode 0600, the n100-demo.profile precedent — a real target serial never goes in git). It is the committed profiles/hp.profile with exactly one change: the placeholder serial replaced.

felhom-pve-9.2-1-v1.22.0-hp-demo-generic.iso
sha256  de693f622c4c628d75eade691b2e8cb008175231f3ed97e29535e61de12bbd0b
bytes   1 705 338 880
loader  shim (stock MS-signed chain; Secure Boot OK)   secret-bearing: no

validate-answer gated on its output text, not $? — log shows The answer file was parsed successfully, no errors found! through gate_validate_answer.

The filter, extracted from INSIDE the built ISO

Not read from the profile — from the artifact, via osirrox, comments stripped:

[disk-setup]
filesystem = "ext4"
filter-match = "all"
filter.ID_SERIAL_SHORT = "182195804614"
assertion result
pins the SanDisk X600 128GB (sda) 182195804614 1 occurrence
NVMe 58BS11AFT8MQ present anywhere in the answer file 0
REPLACE-WITH-TARGET-SSD-SERIAL placeholder remaining 0
filter.* directives exactly 1
disk-list = directive 0

filter-match = "all" with a single ID_SERIAL_SHORT is an exact-one-disk selector. The 1TB NVMe is outside the filter and is not touched by the installer; it joins later through the normal Tárhely flow.

Method note: my first sanity check grepped the whole profile and reported the NVMe serial as present — it appears in a comment documenting what is excluded. Re-verified by sourcing the profile and inspecting the consumed FELHOM_DISK_SETUP variable, then again from inside the ISO, which is what actually ships. Grepping a file is not the same as reading what a tool consumes.

Part 2 — the write

Same procedure as TASK-F, no shortcuts. Full evidence block on the Samsung stick (/dev/disk/by-id/usb-Samsung_Flash_Drive_0375123010001586-0:0/dev/sdc, 119.5 GiB):

check result
ID_BUS=usb usb
removable=1 1
findmnt (device and every partition) empty
/etc/fstab 0 lines
LVM PV 0 (only /dev/sda3 is a PV)
ZFS 0 pools on the host
guest configs referencing it 0
open handles 0

Destroyed: the hp-generic safety ISO written in TASK-F. Excluded: /dev/sdb, the ADATA HD710 PRO — mounted at /mnt/hdd_1 and bind-mounted into guest 9201, i.e. live customer data; it reports ID_BUS=ata and removable=0, so it fails both required positive checks despite a usb-… by-id name. Operator confirmed the printed device; identity was re-asserted at write time in case of re-enumeration since the confirm.

device sha256: de693f622c4c628d75eade691b2e8cb008175231f3ed97e29535e61de12bbd0b
iso    sha256: de693f622c4c628d75eade691b2e8cb008175231f3ed97e29535e61de12bbd0b
RESULT: MATCH - byte-proven

dd … oflag=direct conv=fsync, then the ISO's exact byte-length read back from the device and hashed. Customer data drive re-checked after the write: still mounted at both paths.

Belt-and-braces: the stick was then mounted read-only and the filter read back off the physical device — filter.ID_SERIAL_SHORT = "182195804614", NVMe serial absent. The profile is what I intended, the ISO is what I built, and the stick is what you will boot; all three now agree.

Staged ISO copies removed from felhom-pve:/root/ (71G free).

Part 3 — R-58, assisted disk-picker install mode

Filed with your argument verbatim. Shape: a third ISO mode beside unattended-serial and match-nothing-safety — enumerate candidates with size/model/serial, exclude the install media, take a selection plus a confirm, proceed. Unattended+serial stays the appliance/factory mode.

Slice 1 is the abort screen, deliberately, because it is the same enumeration code and it collapses the two-boot dance on its own: on filter-no-match, print the candidate table plus the one-line hint naming which serial to put in the profile. Today the fail-safe is correct but mute — which is exactly what made this task need a hand-read serial between two boots.

It matters most for the BYO / reinstall flow: a customer's existing hardware, or a rebuild of a box whose disk layout nobody recorded, is precisely where the serial is unknown and a wrong guess is destructive.

Also documented scripts/iso/README.md § HP mini profile: shim proven on this board by the safety boot, the uncommitted-armed-profile pattern, verify-from-inside-the-ISO, and the prior-LVM caveat below.

For the operator — boot instruction

Stick → HP, boot it, walk away. It formats the SanDisk sda, installs, and reboots into day-0. Secure Boot stays ON (this is the shim loader, proven on this board). Nothing else to press.

One thing that could stop it, worth knowing before you walk away. The Proxmox auto-installer does not force-clear a pre-existing LVM PV signature. If that SanDisk carries a previous Linux/Proxmox install, the install aborts at "cannot init physical volume" — safely, touching nothing. A previous Windows/NTFS install is fine. If you see that message: wipe the target (blkdiscard -f /dev/sda from any live environment) and boot the same stick again — the ISO does not need rebuilding. This is documented behaviour (spike S2b), not a defect in this build.

Remaining (unchanged from TASK-F unless noted)

  • Agent v0.93.0 is source-only — committed, unbuilt, unpublished; rides the next agent train.
  • R-17 — deleting the u629193-sub1 archive is an operator console action.
  • The full catalog resolvability table is still owed (needs one docker login on DooPlex).
  • wanderer was re-pinned to a 3-service upstream shape and has never been deployed.
  • hidden lifecycle state has no catalog user yet; only abandoned is exercised end to end.
  • After the HP comes up: bind it on the hub and run day-0; the 1TB NVMe is added afterwards through the Tárhely flow, never through the installer.