diff --git a/chv-guest/build.sh b/chv-guest/build.sh index 3c1fa26..98ae088 100755 --- a/chv-guest/build.sh +++ b/chv-guest/build.sh @@ -196,7 +196,22 @@ if [ "${PLAYWRIGHT:-1}" = "1" ]; then --run-command 'ls /root/.cache/ms-playwright/ > /app/guest-versions-chromium.txt 2>/dev/null || true') fi run virt-customize "${VC_ARGS[@]}" -run virt-get-kernel -a "$OUT/disk.raw" -o "$OUT/vmlinux" +# B-18:virt-get-kernel 的 -o 是输出目录(不是文件),它在 +# 目录里下载 vmlinuz- 与 initrd.img-;旧写法 +# -o "$OUT/vmlinux" 会建出 vmlinux 目录,后面的 test -s 文件 +# 校验必然失败。改成 -o "$OUT",再把 vmlinuz-* 移为 vmlinux +# 文件;initrd.img-* 留在 OUT 里作配套产物。另:第三轮真机 +# 构建里 virt-get-kernel 首跑报过一次 "file receive cancelled +# by daemon",同一盘手动重跑即成功(瞬时故障),此处失败重跑 +# 一次,与 B-05/B-06 的重试口径一致。 +if [ "$DRY_RUN" = "1" ]; then + echo "DRY-RUN: virt-get-kernel -a $OUT/disk.raw -o $OUT" + echo "DRY-RUN: mv $OUT/vmlinuz-* $OUT/vmlinux" +else + run virt-get-kernel -a "$OUT/disk.raw" -o "$OUT" \ + || run virt-get-kernel -a "$OUT/disk.raw" -o "$OUT" + mv "$OUT"/vmlinuz-* "$OUT/vmlinux" +fi # feat-chv-secfix(M4):构建时把客机内实际装好的版本 # 读回 BUILDINFO.versions(dpkg + pip freeze),名字列表 # 之外再有逐项版本——可审计、可复现比对。事前 lockfile