From 37bece97cb77b00ed5ecfb2a1cfc33b4bc20d3eb Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Thu, 22 Oct 2026 19:30:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(packaging):=20tar=20=E5=8C=85=E6=BC=8F?= =?UTF-8?q?=E6=8B=B7=20depgraph.bin=20=E2=80=94=E2=80=94=20=E8=A3=85?= =?UTF-8?q?=E5=AE=8C=20homed=20=E4=B8=80=E5=90=AF=E5=8A=A8=E5=B0=B1?= =?UTF-8?q?=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 内核启动时比对「磁盘上的启动依赖图 digest」与「二进制内嵌 digest」, 用于拦住「图文件完好但描述的是旧代码」这类静默顺序错(Makefile build 段注释)。 build_tar 只拷了二进制,没拷 $BUILD_DIR/depgraph.bin ⇒ 装 tar 包的机器 homed 读不到图,直接拒绝启动(退出码 1)。 修法:与 homed 同目录拷 depgraph.bin(/usr/bin/depgraph.bin); 缺图时**显式报错并 return 1**,而不是打出一个注定起不来的包 —— 静默产出坏包比打包失败更难查。 --- deploy/packaging/package-linux.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/deploy/packaging/package-linux.sh b/deploy/packaging/package-linux.sh index 124042e9..056a6ae5 100644 --- a/deploy/packaging/package-linux.sh +++ b/deploy/packaging/package-linux.sh @@ -728,6 +728,18 @@ build_tar() { [ -f "$src" ] && cp "$src" "$staging/usr/bin/$bin" done + # ★ 启动依赖图必须与 homed 同目录。内核启动时比对「磁盘图 digest」与 + # 「二进制内嵌 digest」,读不到图 ⇒ 生产构建直接拒绝启动(退出码 1)。 + # 此前 build_tar 漏了这一条:装 tar 包的机器 homed 一启动就死。 + if [ -f "$BUILD_DIR/depgraph.bin" ]; then + cp "$BUILD_DIR/depgraph.bin" "$staging/usr/bin/depgraph.bin" + chmod 644 "$staging/usr/bin/depgraph.bin" + else + echo "ERROR: 缺少 $BUILD_DIR/depgraph.bin —— 内核与依赖图必须来自同一次构建。" >&2 + echo " 先跑 make build(它会生成图并注入 digest),再打包。" >&2 + return 1 + fi + # setup script local setup_src="$PROJECT_ROOT/deploy/packaging/linux/setup.sh" [ -f "$setup_src" ] && cp "$setup_src" "$staging/usr/lib/hologram/setup.sh"