Skip to main content

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

脚本依次执行:

  1. cargo test --locked 测试 OpenixCLI;
  2. cargo build --release --locked 构建 OpenixCLI;
  3. 克隆并固定 Buildroot commit;
  4. 复制 T113S3 Pro 板级支持;
  5. 构建交叉工具链、U-Boot 2026.07、Linux 6.18.8 和 Buildroot;
  6. 生成 UBIFS、UBI、FIT、RAM installer 和 FEL 分片;
  7. 执行仓库和产物验收门禁。

非标准目录可用:

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