整理主线系统发布包
一份可交接的固件不能只提供 .img。接收者还需要知道文件由什么源码生成、下载后是否保持完整、应使用哪个 loader 和烧录工具,以及这组字节在真实板卡上验证到了哪一步。
发布前检查
| 内容 | 工程检查 | 完成标志 |
|---|---|---|
| 源码与补丁 | make check | 仓库结构与锁定文件通过 |
| 主线 raw | make verify、make verify-v9 | U-Boot、FIT、FAT、ext4 与 v9 差异检查通过 |
| FES loader | make verify-loader | 五个 IMAGEWTY 条目、零分区、大小和哈希通过 |
| 烧录工具 | 固定 OpenixCLI SHA-256 | 与实机烧录使用的二进制一致 |
| eMMC 写入 | OpenixCLI JSONL 日志 | Raw disk image flashed successfully、errorCode=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;
SHA256SUMS与release.manifest;- 本次成功烧录的 JSONL 原始日志。
发布说明还应明确网络等未完成验收的功能,避免“能够启动”被理解为所有板载设备均已通过。