Skip to main content

整理主线系统发布包

一份可交接的固件不能只提供 .img。接收者还需要知道文件由什么源码生成、下载后是否保持完整、应使用哪个 loader 和烧录工具,以及这组字节在真实板卡上验证到了哪一步。

发布前检查

内容工程检查完成标志
源码与补丁make check仓库结构与锁定文件通过
主线 rawmake verifymake verify-v9U-Boot、FIT、FAT、ext4 与 v9 差异检查通过
FES loadermake verify-loader五个 IMAGEWTY 条目、零分区、大小和哈希通过
烧录工具固定 OpenixCLI SHA-256与实机烧录使用的二进制一致
eMMC 写入OpenixCLI JSONL 日志Raw disk image flashed successfullyerrorCode=0
冷启动CH340 串口日志两次断电启动都进入 Buildroot root shell

构建成功和实机验收不能互相代替。新编译的 raw 即使通过结构检查,也要重新烧录和冷启动,才能建立属于该文件哈希的硬件结果。

生成 v9 发布文件

AvaotaA1-T527-MainLineLinux 仓库根目录执行:

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

scripts/package-release.sh 会拒绝哈希不符合 v9 实机验收记录的 raw、loader、U-Boot、OpenixCLI 和烧录日志。通过后生成:

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

未压缩 raw 用于烧录,本地保留即可;GitHub Release 上传 .img.xz 以减少下载体积。解压后的 raw 哈希记录在 release.manifest 中。

SHA256SUMS 与 release.manifest

SHA256SUMS 描述上传文件的字节身份,适合下载后直接校验。release.manifest 说明这些文件属于哪次发布,并记录软件版本、磁盘布局、eMMC 参数和硬件验收状态。

v9 的关键字段为:

release=v2026.09.01-v9-tm4-coldboot
raw_sha256=22d9775202898f55814bee156058d8d010c2461f67cb11e7dc35c8c8c609d5f2
loader_sha256=867d43d12399016252a3d34c2ae50f6f362868f95c2985169d5a4b655a16417c
bootloader_sha256=0d405263a5ea10bf97c64e5f07c5b04b11a484372ce1c8fd769980ca4e5b70c3
buildroot=2026.05.1
linux=7.2
u_boot=2026.07
hardware_acceptance=two-cold-boots-SPL-FIT-U-Boot-Linux-Buildroot-root-shell

哈希把发布文件与实机日志关联起来。文件名可以被复制或改写,SHA-256 才能确定接收者烧录的是否为同一组字节。

发布下载入口

v9 已发布到 Avaota A1 / T527 Mainline v9 Release。Release 应同时提供:

  • 压缩主线 raw;
  • RAM-only FES loader;
  • 同版本 U-Boot/SPL 备份;
  • 固定哈希的 OpenixCLI;
  • SHA256SUMSrelease.manifest
  • 本次成功烧录的 JSONL 原始日志。

发布说明还应明确网络等未完成验收的功能,避免“能够启动”被理解为所有板载设备均已通过。