A/B 分区与回滚策略

本文对应 成长路径 OTA 高优先级:理解 A/B 分区 升级模型与 回滚 触发条件。


基本模型

分区作用
slot A当前或备用 rootfs
slot B升级写入目标
bootloader env记录 active slotretry 计数

升级流程:下载 → 校验 → 写入非活动 slot → 切换 env → 重启 → 健康检查 → 确认或回滚


启动切换(U-Boot 示例)

环境变量示意:

bootslot=a
bootcount=0
bootlimit=3

bootcmd 根据 bootslot 选择 root=/dev/mmcblk0p2p3

启动失败时 bootcount++,超过 bootlimit 则切换 slot 并复位计数。


健康检查(用户态)

新系统启动后 systemd/onshotinit 脚本

  1. 关键服务就绪(网络、业务进程)。
  2. 自检通过后:fw_setenv bootcount 0 确认 slot。
  3. 失败则:不确认,下次启动由 bootloader 回滚

与文件系统


安全

  • 镜像 签名验证(RSA / AVB)在写入前完成。
  • 加密A/B 正交,可组合。

实践清单

  • 画本板 分区表 标 A/B
  • 模拟一次 升级失败 验证回滚到旧 slot

延伸阅读