关于无线更新
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
更新是 Azure Sphere 安全模型的重要组成部分,因为它们体现了可续订安全性的属性。 确保定期进行更新有助于使设备 符合 7 属性 。 Azure Sphere 设备在打开电源或按下“重置”按钮后首次连接到 Internet 时检查更新。 此后,定期进行检查(目前为 20 小时)。
有三种类型的更新: 先决条件更新、 OS 更新和 部署更新。 先决条件更新用于确保更新过程本身所依赖的组件(当前受信任的密钥存储(TKS)和证书存储是最新的。 TKS 用于对要下载和安装的映像进行身份验证,而证书存储会验证 Internet 连接。 OS 更新面向设备上的Microsoft提供的软件,包括应用程序在其中运行的正常世界操作系统,但也面向较低级别的固件,例如 Pluton 子系统和安全监视器。 部署更新面向你自己的软件-高级且支持实时的应用程序和板配置映像(如果有)。 先决条件和 OS 更新由 Azure Sphere 管理;应用程序更新由 Azure Sphere 根据 组织创建的部署 进行协调。
若要使任何设备接收先决条件或 OS 更新:
- 它必须连接到 Internet。
- 必须适当配置网络要求 。
为了使任何设备更新其应用程序和板配置映像:
- 它不能具有应用程序开发功能。
- 租户必须 声明它。
- 它必须属于 设备组。
- 它所属的设备组必须由部署作为目标。
- 部署必须包含由组织或代表组织创建的应用程序映像(以及(可选)板配置映像。
- 设备组必须具有 UpdateAll 更新策略。 可以通过使用 azsphere device-group update 命令禁用特定设备组的应用程序更新。
对于给定设备组中的所有设备,针对该设备组的部署被视为映像这些设备的真相来源。 部署中不存在的任何映像都将从设备中删除。 从 Azure Sphere OS 21.04 起,一个例外是,除非板配置映像替换为新的板配置映像,否则不会删除板配置映像。
设备更新检查在对应于三种类型的更新的三个阶段中进行:
- 在第一阶段,Azure Sphere 获取清单,其中列出了当前版本的 TKS 和证书存储。 如果设备上的 TKS 和证书存储是最新的,则更新将继续执行第二阶段。 否则,将下载并安装当前映像。
- 在第二阶段,Azure Sphere 获取清单,其中列出了各种 OS 组件映像的当前版本。 如果设备上的任何映像已过期,则下载当前映像以及 回退映像 ,如果更新过程失败,则可用于将设备回滚到已知良好状态。 OS 和回滚映像将下载并存储在设备上的过渡区域中,然后安装 OS 映像并重新启动设备。
- 在第三阶段,如果设备组接受部署更新,Azure Sphere 会检查部署更新。 与 OS 更新一样,应用程序的回滚映像也根据需要暂存。 应用程序和回滚映像将下载并存储在暂存区域中,然后安装应用程序映像。
更新回滚
更新过程的每个部分都包含回滚选项。 在先决条件更新中,回滚映像只是预更新状态的备份。 如果更新失败,则还原更新前状态。
在任何级别回滚都强制在所有更高级别回滚:如果任何固件映像无法启动,则固件和应用程序分区都将回滚。
对于 OS 更新,签名验证失败或运行时困难都可能会触发回滚。 如果签名验证失败,则尝试更正映像;如果失败,则会触发完全回滚。 在完整回滚中,将为 OS 和应用程序安装暂存回滚映像。
OS 更新和部署具有独立的发布周期,因此可以在 OS 更新之间进行多个部署。 如果发生这种情况,请务必注意,部署的回滚目标不是最新的部署,而是在上次 OS 更新时部署。 这可确保 OS 和应用程序在回滚状态下协同工作。
中断的更新
如果更新中断(例如停电或连接丢失),则每种更新类型都有四种可能的方案:
- 如果成功下载并暂存了一组完整的映像,但尚未安装,则还原电源后,安装将完成。
- 如果部分但并非所有映像都已下载并暂存,更新将继续下载缺少的映像,然后继续安装。
- 如果在下载完成后安装期间中断更新,安装将在启动时重启。
- 如果未完全下载映像,则恢复电源后,更新过程将重新开始,因为安装没有任何准备。
关闭电源方案中的更新
Azure Sphere 支持低功率方案,使设备能够 长时间关闭 电源,以节省电池使用时间。 在这种情况下,必须允许设备定期检查更新。 Power Down 示例应用程序演示了如何正确降低能耗,同时仍确保设备定期保持清醒状态,以检查 OS 和应用更新。
延迟更新
为了防止关键任务被更新中断,高级应用程序可以合并 延迟更新。 此功能允许应用程序完成其关键任务,然后准备关闭,以允许更新继续。 DeferredUpdate 示例演示如何实现此类延迟更新。