DEEP 18 · 第二辑 · 感知与系统服务 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

解读 18 · updater(上):manifest 与验证

解读对象:updater/src/manifest.rs(275 行)+ updater/src/verify.rs(634 行)+ updater/src/preflight.rs(474 行)
需要的前置:无。这一篇是通用的 OTA 工程教材。

为什么 OTA 必须这么谨慎

手机刷坏可以连电脑救;板子砖在够不到的地方,只能上门。所以这个更新器把每层防线都当唯一防线来写:签名(东西是谁发的)、哈希(东西完好吗)、预检(此刻能装吗)、回滚(装坏了怎么办,见解读 19)。三个文件各管一段。

manifest.rs:字段即策略

Manifest(manifest.rs:11)的第一课是首版就要带上暂时用不上的字段——没学会读 min_supported 的机器人,日后无法被强制升级(manifest.rs:3-6)。清单格式是"无法回改"的契约:

verify.rs:一条顺序不变量

模块注释一行顶一万句(verify.rs:7-9):未经签名的字节,永远不会落到活动路径或被执行——清单签名 → 工件哈希 → 工件签名,全部通过才解压。要点:

preflight.rs:副作用之前,一遍报完

所有检查跑在下载之前,失败零副作用;每次 apply 跑两遍——拿到清单前查时钟/机器人停稳/无远程会话,拿到 size 后再查磁盘(preflight.rs:11-15)。顺序即诊断:时钟不对时,HTTPS 会以费解的 TLS 证书错误失败,而不是时钟检查想给的那句话。

你带走的收获

延伸

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页