chore(fw): M56 重编 5 件受源码变动影响的产物 + 钉值回写 + 可复现打包器(0.8.51)

- 重编 netmgrd(M54 ACL)/audiod(M55 BT 增益 + M52 bind 失败即退)/launcherd(M52 multi_font 收口)/
  watchdog(M52 资源告警);meow_audio 源码未变,重编逐字节相同(md5 不变)
- fw_content.conf:5 条 md5 回写 + meow_power desc 去掉「policy 期3桩」(已实装)
- 新增 scripts/build/repack_repro.sh:mksquashfs -repro-time + genisoimage -creation-date
  + mtime 归一化 + 半成品防护(先写暂存再 mv、体积下限自检)
- build_fw_apps.sh:优先走可复现打包器、XIMAGE/TMPDIR 可在干净 checkout/worktree 覆盖
- rebuild_binaries.sh:新增 watchdog 目标(build_watchdog.sh 的 ROOT/.tools 在 worktree 不存在)
This commit is contained in:
tower committed 2026-11-12 08:25:04 +08:00
1 parent dd8929e2df
commit d34406ac22
8 files changed
+215 -20

No files matched your search

+17 -9
View File
@@ -171,18 +171,26 @@ else
echo " (基线无 S99ssh,跳过 S99→S84 改名)"
fi
# ---- 9) repack ----
# 用 bash 显式执行:repack.sh 的 #!/usr/bin/env bash 在 Android 上无 /usr/bin/env,
# 且经 su 跑时 termux-exec 的 LD_PRELOAD 被丢弃 → bad interpreter(M13 实测)。
echo "==> repack"
bash "$ROOT/hiby_os_crack/scripts/repack.sh" \
# 优先用可复现打包器(scripts/build/repack_repro.sh:mksquashfs -repro-time +
# genisoimage -creation-date + mtime 归一化,同一输入两次打包逐字节相同)。
# 它不在时退回历史 repack.sh(产物布局相同,只是时间戳随墙钟)。
# 两者都按 bash 显式执行:repack.sh 的 #!/usr/bin/env bash 在 Android 上无 /usr/bin/env,
# 且经 su 跑时 termux-exec 的 LD_PRELOAD 被丢弃 → bad interpreter(M13 实测)。
REPACK="${REPACK:-$ROOT/scripts/build/repack_repro.sh}"
[ -f "$REPACK" ] || REPACK="$ROOT/hiby_os_crack/scripts/repack.sh"
# 内核镜像(unpacked_v14/xImage)未入库:干净 checkout / git worktree 里没有它,
# 用 XIMAGE 指到主 checkout 的那份(普通 checkout 下默认值即可)。
XIMAGE="${XIMAGE:-$ROOT/unpacked_v14/xImage}"
[ -f "$XIMAGE" ] || { echo "!!! 内核镜像不存在: $XIMAGE(可用 XIMAGE=/path/to/xImage 覆盖)"; exit 1; }
bash "$REPACK" \
-i "$DST" \
-k "$ROOT/unpacked_v14/xImage" \
-k "$XIMAGE" \
-o "$OUT" < /dev/null
# ---- 10) 体积核对(rootfs 分区, 上限 45,088,768) ----
echo "==> 体积核对(rootfs 分区, 上限 45,088,768)"
mkdir -p /tmp/fw_apps_chk && cd /tmp/fw_apps_chk
mkdir -p "${TMPDIR:-/tmp}/fw_apps_chk" && cd "${TMPDIR:-/tmp}/fw_apps_chk"
rm -rf ota_v0 ota_update.in rootfs.squashfs
7z x -y "$OUT" ota_v0/ota_update.in > /dev/null 2>&1
RFSZ=$(grep -A1 'img_name=rootfs' ota_v0/ota_update.in | grep img_size | cut -d= -f2)
@@ -193,15 +201,15 @@ echo "==> rootfs.img md5"
grep -A3 'img_name=rootfs' ota_v0/ota_update.in | grep img_md5 | cut -d= -f2
echo "==> unpack 回验(0 diff)"
mkdir -p /tmp/fw_apps_rt && cd /tmp/fw_apps_rt
mkdir -p "${TMPDIR:-/tmp}/fw_apps_rt" && cd "${TMPDIR:-/tmp}/fw_apps_rt"
rm -rf ota_v0 ota_config.in squashfs-root rootfs.squashfs rootfs.squashfs.*
7z x -y "$OUT" > /dev/null 2>&1
find . -name "rootfs.squashfs.*" | sort -V | xargs cat > rootfs.squashfs 2>/dev/null
unsquashfs -no-progress -d squashfs-root rootfs.squashfs > /dev/null 2>&1 || true
if diff -rq --no-dereference "$DST" squashfs-root > /tmp/fw_apps_rt_diff.log 2>&1; then
if diff -rq --no-dereference "$DST" squashfs-root > ${TMPDIR:-/tmp}/fw_apps_rt_diff.log 2>&1; then
echo "0 diff ✓"
else
echo "!!! diff found:"; head -20 /tmp/fw_apps_rt_diff.log
echo "!!! diff found:"; head -20 ${TMPDIR:-/tmp}/fw_apps_rt_diff.log
exit 1
fi