健康门禁与自动回滚
最后更新
**健康门禁(health gate)**是更新流程的最后一个阶段:新版本装上并重启守护进程之后,系统检查机器人是否健康,不通过就自动回滚。
完整的更新阶段
preflight → downloading → verifying → swapping → health_gate
每一步都可能失败,而失败的结果都是「机器人回到它之前跑的版本」,不是「机器人半死不活」。
它对开发的意义
这意味着推一个自己构建的版本是安全操作。scripts/dev-push.sh 装的东西走的是完全相同的流程——签名、产物哈希、兼容性、健康门禁、自动回滚一个不少,唯一区别是签名用的密钥不同。
一个起不来的构建会被撤销,你不会把板子推成砖。
一个会误导人的成功案例
门禁正常工作的时候,表现有时候看起来像 bug:
开发板上 apply daemon 不加 --ref 会装稳定版,而如果那个稳定版早于某个现在已有 unit 文件的守护进程,unit 的 ExecStart 会指向旧版本里不存在的二进制 → 重启失败 → 回滚。
你会看到「更新失败了」,而实际上是门禁救了你。详见开发板速查。
机器人可能已经回滚过
自动回滚不会打扰你,只记在日志里:
robotctl update log
journalctl -b -u robot-boot-check