检查 eMMC 系统镜像的分区与文件
生成 768 MiB raw 后,还要确认 BootROM、SPL、U-Boot 和 Linux 能在各自约定的位置找到输入。工程中的 verify-mainline-layout.sh 按启动阶段的读取顺序检查镜像。
验证脚本检查哪些镜像内容
| 检查层 | 工程中的判据 | 能排除的问题 |
|---|---|---|
| SPL | eGON 魔数与校验和 | 8 KiB 偏移错误、SPL 内容损坏 |
| FIT | 从 eGON 长度计算 FIT 位置 | 把 FIT 扇区写死、SPL 增长后错位 |
| 启动固件 | raw 的 U-Boot 字节与本次产物相同 | raw 与本次 U-Boot 不一致 |
| FIT 配置 | U-Boot、BL31 加载地址及 Avaota A1 DTB | 选错配置、混入厂商/SyterKit 固件 |
| 分区 | FAT 16 MiB、ext4 256 MiB | MBR 偏移或类型错误 |
| FAT | Image、DTB、extlinux 逐字节比较 | 启动分区与本次构建不一致 |
| rootfs | ext4 完整性、rootfs 卷标、模块目录 | 根文件系统截断、内核与模块不匹配 |
这里没有“板卡已经启动”这一项。离线通过只说明镜像内部自洽,不能替代 DRAM、电源、eMMC 时序和驱动实测。
运行镜像检查
对完整构建生成的 raw 执行:
cd /home/ubuntu/T527/AvaotaA1-Tina5-SDK_V1/AvaotaOS/mainline-a1
./verify-mainline-layout.sh \
staging/release/avaota-a1-full-mainline.img
检查通过时输出类似:
mainline image verification PASS
eGON SPL length: 0xc000
firmware FIT offset: 0xe000 (sector 0x70)
boot/rootfs offsets: 16 MiB / 256 MiB
kernelrelease: 7.2.0-avaota-a1-mainline
image SHA256: <当前 raw 的 64 位 SHA-256>
SHA-256 每次构建都会变化,应以脚本当次输出为准。PASS 表示 raw 中的 U-Boot、FIT、分区和文件内容与构建目录相互对应;它不替代上板启动测试。
检查分区与启动文件
脚本通过后,仍可以用几个小检查帮助理解镜像结构:
raw=staging/release/avaota-a1-full-mainline.img
fdisk -l "$raw"
debugfs -R 'stats' buildroot-2026.05.1/output/images/rootfs.ext2 2>/dev/null \
| grep 'Filesystem volume name'
mtype -i buildroot-2026.05.1/output/images/boot.vfat \
::/extlinux/extlinux.conf
应分别看到 16/256 MiB 分区起点、rootfs 卷标,以及 root=LABEL=rootfs。手工检查适合学习与定位问题,发布判定仍应由版本化脚本完成,避免漏掉 FIT 地址或模块对应关系。
记录镜像检查结果
保存脚本输出后,可以记录为:
avaota-a1-full-mainline.img已通过启动固件、分区布局、FAT 内容和 ext4 根文件系统检查。
下一章先检查 RAM-only FES loader,再使用 OpenixCLI 把这份已校验的 raw 写入 eMMC。