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 | DONE — R-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-sub1archive is an operator console action. - The full catalog resolvability table is still owed (needs one
docker loginon DooPlex). - wanderer was re-pinned to a 3-service upstream shape and has never been deployed.
hiddenlifecycle state has no catalog user yet; onlyabandonedis 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.