fix(build): M56 r1 评审三条 P2 + 一条观察(脚本权限/可复现口径注释/watchdog 参数去内联+入门禁/REPACK 显式失败)

- P2-1 repack_repro.sh 提交为 100755(scripts/build/ 下唯一非 755 的 .sh,而头注释就让人直接执行)
- P2-2 注释与事实对齐:写明 squashfs/分片/ota_update.in 可复现,但 .upt 仍有 93 字节
  Rock Ridge TF backup date 差异(genisoimage 无覆盖开关),验收口径仍是 体积+unpack 0 diff+进包 md5
- P2-3 watchdog 参数不再内联复制:build_watchdog.sh 认 ZIGCC(照 build_netmgrd.sh 口径),
  rebuild_binaries.sh 改成调它;meow_watchdog 加入 test_time32_abi.sh 的 BUILD_TARGETS(11 个)。
  改后重编仍逐字节 25f769509a43d0f66287efd456c64281 / 100116,与内联那版一致
- 观察1:REPACK 显式指定但不存在 -> exit 1(此前会静默回退到不可复现的旧 repack.sh)
This commit is contained in:
tower committed 2026-11-12 08:44:27 +08:00
1 parent d34406ac22
commit 28fbc6094a
5 files changed
+36 -16

No files matched your search

Regular → Executable
+12 -4
View File
@@ -1,11 +1,19 @@
#!/bin/bash
# ============================================================================
# repack_repro.sh — .upt 打包(mksquashfs + 分片 md5 链 + ISO),**时间戳可复现**
# repack_repro.sh — .upt 打包(mksquashfs + 分片 md5 链 + ISO),时间戳尽量可复现
#
# 与 hiby_os_crack/scripts/repack.sh 的产物布局逐字节等价(ota_update.in / ota_v0.ok /
# ota_config.in / rootfs.squashfs.NNNN.<prev-md5> / ota_md5_rootfs.squashfs.<md5>),
# 只是把「墙钟时间」从产物里拿掉,使同一输入**连续打包两次逐字节相同**:
# 只把墙钟时间从「squashfs + 元数据」里拿掉。**可复现到什么程度(实测口径,别夸大)**:
# ✅ bytes-reproducible:rootfs.squashfs、ota_md5_rootfs.squashfs.*、ota_update.in、
# 分片文件名与内容、xImage 侧 —— 同一输入连续两次打包全部相同。
# ❌ not bytes-reproducible:`.upt`(ISO)本身。genisoimage 会给 Rock Ridge `TF`
# 记录写 **backup date**(TF flag=0x1a,第三个 7 字节字段),该字段取墙钟且**没有
# 覆盖开关**(`-creation-date` 只定卷的创建/修改时间)。M56 实测两次打包 `cmp -l`
# 恰好 93 字节不同,全在该字段(分钟字节),载荷 0 差异。
# 因此 `.upt` 的验收口径仍是:**体积 + unpack 0 diff + 进包 md5**。
#
# 时间戳处理:
# 1) squashfs:`-repro-time <epoch>`(= -mkfs-time + -inode-time;mksquashfs 4.7 起)。
# 只加 -all-time 不够 —— 超级块的 mkfs_time 仍是墙钟(M60 实测)。本脚本按
# `mksquashfs -help-all` 能力探测,依次尝试:
@@ -13,8 +21,8 @@
# -mkfs-time <t> -inode-time <t> (4.6)
# -mkfs-time <t> -all-time <t> (老版本)
# 都没有 → 告警并按旧口径(体积 + unpack 0 diff + 进包 md5)出货。
# 2) ISO:genisoimage 的卷创建时间用 `-creation-date <YYYYMMDDhhmmsscc>` 固定,
# 并把暂存目录里所有文件/目录的 mtime touch 到同一 epoch(ISO 目录记录取文件 mtime)。
# 2) ISO:卷创建时间用 `-creation-date <秒数>` 固定,并把暂存目录里所有文件/目录的
# mtime touch 到同一 epoch(ISO 目录记录取文件 mtime)。backup date 无解,见上。
#
# 用法:
# repack_repro.sh -i <squashfs-root> -k <xImage> -o <out.upt>