100ASK T113S3 Pro 主线系统完整编译规程
本章目标
从干净源码得到一套通过非硬件门禁的主线 FEL 安装产物。构建成功只说明产物内部一致,不能替代安装和冷启动验收。
前置条件
先完成Ubuntu 20 开发环境与源码准备。本章不再重复安装依赖和克隆仓库,开始前确认以下命令均可执行:
for tool in git make gcc python3 cpio zstd rsync cargo; do
command -v "$tool" || exit 1
done
工作区应位于 Ubuntu 的 Linux 原生文件系统中,并保留至少 100 GiB 可用空间。若在虚拟机中构建,后续硬件烧写仍必须把 Allwinner USB 和串口设备分配给同一虚拟机。
第一步:进入已准备的工作区
cd "$HOME/workspace/t113-mainline-work"
test -f OpenixCLI/Cargo.lock
test -f DshanPI-T113xMainlineLinux/manifests/sources.lock
两个目录必须互为兄弟目录,除非显式设置 OPENIXCLI_DIR。
第二步:记录源码状态
git -C OpenixCLI status --short --branch
git -C OpenixCLI rev-parse HEAD
git -C DshanPI-T113xMainlineLinux status --short --branch
git -C DshanPI-T113xMainlineLinux rev-parse HEAD
有未提交修改时先保存差异并说明来源,不要用 reset 覆盖开发现场。
第三步:执行两仓库统一构建
cd DshanPI-T113xMainlineLinux
./scripts/build-everything.sh
脚本依次执行:
cargo test --locked测试 OpenixCLI;cargo build --release --locked构建 OpenixCLI;- 克隆并固定 Buildroot commit;
- 复制 T113S3 Pro 板级支持;
- 构建交叉工具链、U-Boot 2026.07、Linux 6.18.8 和 Buildroot;
- 生成 UBIFS、UBI、FIT、RAM installer 和 FEL 分片;
- 执行仓库和产物验收门禁。
非标准目录可用:
OPENIXCLI_DIR=/absolute/path/to/OpenixCLI \
./scripts/build-everything.sh
单仓库构建入口
已经单独准备好 OpenixCLI 时,也可只构建板级系统:
make all
其他入口:
make bootstrap # 固定 Buildroot tree 并安装板级文件
make build # 编译 Buildroot 输出
make package # 只重新生成 FEL 产物
make validate # 只运行非硬件门禁
构建目录
buildroot/buildroot-mainline/ # 固定 Buildroot checkout
out/mainline/t113s3pro/ # Buildroot O= 输出
out/t113s3pro-mainline-fel/ # 最终 FEL 安装产物
OpenixCLI/target/release/ # openixcli 可执行文件
验证门禁
scripts/validate-local.py 会继续执行并汇总多个独立检查,包括:
- 固定源码版本和归档哈希;
- 所有 shell、Python 辅助脚本语法;
- 工作流单元测试;
- SPL/U-Boot same-build 校验;
- U-Boot UART3 和
ENV_IS_NOWHERE; - eGON、FIT、payload、UBI 和分片约束;
- OpenixCLI plan 地址、角色和哈希;
- UART3、SPI NAND、MTD、UBI/UBIFS 配置;
- 历史硬件证据 JSONL 和冷启动标志。
预期结尾:
SUMMARY pass=<数量> fail=0 hardware_verified_bundle=verified source_rebuild=hardware-verified
输出检查
test -x ../OpenixCLI/target/release/openixcli
test -s out/t113s3pro-mainline-fel/fel-sunxi-spl.bin
test -s out/t113s3pro-mainline-fel/fel-u-boot.bin
test -s out/t113s3pro-mainline-fel/fel-installer.itb
(cd out/t113s3pro-mainline-fel && sha256sum -c FEL_SHA256SUMS)
构建结果分级
| 状态 | 含义 |
|---|---|
| local-valid | 仅通过编译、格式、哈希和结构检查 |
| experimental | 等待实际安装和冷启动验证 |
| hardware-verified | 同一哈希通过安装、读回和冷启动 |
| failed-do-not-use | 该哈希在硬件验证中失败,禁止再次使用 |
曾有一套 clean build 产物全部通过本地门禁,却因 UART3 配置未进入永久补丁而无法观察安装器。禁止把 make all 成功直接写成“上板成功”。
失败处理
- 缺少 host 工具:补齐依赖后重新执行;
- Buildroot commit 不一致:让 bootstrap 脚本恢复固定 detached commit;
- 下载哈希失败:检查下载源,不跳过哈希;
- U-Boot patch 失败:停止构建,修正永久补丁并从干净源码重放;
fail>0:按首个失败 gate 修复,不生成可烧写结论;- 产物与历史 manifest 不同:这是正常现象,必须为新产物重新做硬件验证。
需要保存的证据
保存构建主机信息、两个仓库提交、sources.lock、完整构建日志、验证汇总和最终 FEL_SHA256SUMS。