fix(deploy-win): extract ISO with 7z so no-prompt boot patch works

xorriso -extract reads the ISO9660 name tree, which on a Windows ISO has
no Rock Ridge — names come back upper-cased/truncated, so the
`efi/microsoft/boot/efisys_noprompt.bin` lookup failed ("missing from
ISO") and a repack from that tree would corrupt Windows' long file names.

Extract with 7z instead (reads the UDF/Joliet tree, preserving the real
lower-case paths), excluding 7z's synthetic `[BOOT]` dump. Verified
end-to-end on the cached 26100.32860 ISO: 7z extract → xorriso repack
yields a 5 GB ISO with autounattend.xml + post-install.ps1 at the root and
efisys_noprompt.bin as the UEFI El Torito image (no boot prompt).

Also: cap the Joliet volume id at 16 chars (silence xorriso warning), add
a 7z preflight check, and add p7zip-full to setup-host-linux.sh.
This commit is contained in:
2026-06-08 23:31:18 +02:00
parent c757e7bec2
commit 0df7305841
4 changed files with 29 additions and 7 deletions
+2 -1
View File
@@ -188,7 +188,8 @@ fi
# xorriso/genisoimage — repack ISO bootable / build seed ISO (deploy-linux)
# cabextract — estrazione pacchetti .cab durante la conversione UUP
# chntpw — richiesto dal converter UUP (uup_download_linux.sh)
for pkg in aria2 wimtools xorriso genisoimage cabextract chntpw; do
# p7zip-full — 7z: estrae l'ISO Windows (UDF/Joliet) per il repack patch
for pkg in aria2 wimtools xorriso genisoimage cabextract chntpw p7zip-full; do
if ! dpkg -s "$pkg" &>/dev/null; then
echo " Installazione pacchetto $pkg..."
apt-get install -y "$pkg" -qq