fix(chv-guest): B-18 virt-get-kernel -o 是目录不是文件

- 第三轮真机构建:virt-customize 全程通过(Playwright 步已过),
  随后 virt-get-kernel -a disk.raw -o $OUT/vmlinux 失败;手动
  查 --help 确认 -o 是 output directory——旧写法会在 OUT 里
  建出 vmlinux 目录,后面的 test -s 文件校验必然失败,即使
  下载成功构建也会失败。
- 修复:-o 改为 $OUT,下载 vmlinuz-<ver> 与 initrd.img-<ver>
  后把 vmlinuz-* 移为 vmlinux 文件;initrd.img-* 留在 OUT 里
  作配套产物(与任务产物清单一致)。
- 同轮里 virt-get-kernel 首跑另报过一次 "file receive
  cancelled by daemon",同一盘手动重跑即成功(瞬时故障),
  此处失败重跑一次,与 B-05/B-06 重试口径一致。
This commit is contained in:
host committed 2026-11-06 09:01:20 +00:00
1 parent b5e75f156d
commit 9e60d5dfaa
1 file changed
+16 -1
+16 -1
View File
@@ -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') --run-command 'ls /root/.cache/ms-playwright/ > /app/guest-versions-chromium.txt 2>/dev/null || true')
fi fi
run virt-customize "${VC_ARGS[@]}" run virt-customize "${VC_ARGS[@]}"
run virt-get-kernel -a "$OUT/disk.raw" -o "$OUT/vmlinux" # B-18:virt-get-kernel 的 -o 是输出目录(不是文件),它在
# 目录里下载 vmlinuz-<ver> 与 initrd.img-<ver>;旧写法
# -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):构建时把客机内实际装好的版本 # feat-chv-secfix(M4):构建时把客机内实际装好的版本
# 读回 BUILDINFO.versions(dpkg + pip freeze),名字列表 # 读回 BUILDINFO.versions(dpkg + pip freeze),名字列表
# 之外再有逐项版本——可审计、可复现比对。事前 lockfile # 之外再有逐项版本——可审计、可复现比对。事前 lockfile