跳到主要内容

打包主线系统发布文件

烧录使用的是未压缩 raw,网络发布使用的是 .img.xz。压缩不会改变解压后的磁盘内容,但会增加一个需要独立核对的文件身份,因此发布目录必须同时记录压缩包哈希和 raw 哈希。

发布脚本检查哪些输入

scripts/package-release.sh 接收三项核心输入:

输入默认位置v9 检查内容
主线 rawout/avaota-a1-full-mainline.imgSHA-256 必须等于已实测的 v9 raw
FES loaderout/avaota-a1-t527-fes-loader.img大小、IMAGEWTY 结构和 SHA-256
U-Boot/SPLwork/u-boot-2026.07/u-boot-sunxi-with-spl.binSHA-256 必须与 raw 中 8 KiB 处内容一致

OpenixCLI 和实机烧录日志可以通过 OPENIXCLI_BINFLASH_LOG 一起收入发布目录。脚本会检查它们的固定哈希,避免把另一版本的烧录工具或日志混入已经完成实机验收的发布。

生成发布目录

从仓库根目录执行:

OPENIXCLI_BIN=/path/to/openixcli-linux-x86_64 \
FLASH_LOG=/path/to/t527-v9-flash-20260901.jsonl \
make package

如果当前只需要构建待验证包,可以不设置两个可选变量。核心 raw、loader 和 U-Boot 仍必须全部通过脚本中的哈希检查。

输出目录为:

out/release-v9-tm4-coldboot/
├── avaota-a1-mainline-v9-tm4-coldboot.img
├── avaota-a1-mainline-v9-tm4-coldboot.img.xz
├── avaota-a1-t527-fes-loader.img
├── avaota-a1-mainline-v9-u-boot-sunxi-with-spl.bin
├── openixcli-linux-x86_64
├── SHA256SUMS
├── release.manifest
└── t527-v9-flash-20260901.jsonl

区分两个校验文件

SHA256SUMS 记录上传到 Release 的文件,供下载后直接执行文件校验。release.manifest 还记录未压缩 raw 的哈希与大小、软件版本、eMMC 参数、分区布局和实机验收状态。

当前 v9 的关键字段为:

raw_sha256=22d9775202898f55814bee156058d8d010c2461f67cb11e7dc35c8c8c609d5f2
raw_size=805306368
loader_sha256=867d43d12399016252a3d34c2ae50f6f362868f95c2985169d5a4b655a16417c
bootloader_sha256=0d405263a5ea10bf97c64e5f07c5b04b11a484372ce1c8fd769980ca4e5b70c3
hardware_acceptance=two-cold-boots-SPL-FIT-U-Boot-Linux-Buildroot-root-shell

这些固定值只适用于已经实机验证的 v9 发布。重新编译得到的新 raw 即使版本号相同,也应先作为新的候选产物验证,不能直接沿用 v9 的验收状态。

下一节使用 OpenixCLI 将这组文件写入 Avaota A1。