物联网项目生命周期:大规模 OTA 更新的关键考虑因素
by Canonical on 7 March 2023
从信息娱乐到信息安全,如今自动化无处不在。智能设备在丰富我们生活的同时也在悄然改变我们的居家生活,使其变得更高效、更具价值、更加环保。
大多数嵌入式设备都采用 Linux 系统,且数量还在不断增长。当我们进入信息时代,屋内遍布存储个人信息,并配备摄像头和麦克风的智能设备,自由软件在推动这场信息革命中起到至关重要的作用。虽然我们坚信开源的力量可以释放创造力,但这一巨大的成功也给 Linux 社区带来了深远的责任。
传统的嵌入式系统基本上都互无连接,手动应用的更新最多仅包含功能修复。新一代的设备都已连接至网络,这使得黑客可利用漏洞攻破安全防线。当前的模式能否为现场的低功耗、不可访问且通常为远程管理的嵌入式 Linux 设备提供安全可靠的软件更新?
传统更新机制不适用于物联网设备
多数更新依赖于 tarball 和 shell 脚本,类似于早期 Linux 发行版的演变,tarball 中存在没有依赖关系的软件包。脚本化的更新并不稳健,因为其缺乏原子性,无法在原始闪存中更新内核 [1]。
像 dpkg 和 RPM 这样的现代工具和软件包管理器通过包含一组完整的依赖项来解决某些问题,但仍然提供非原子的增量更新。软件包管理器通常替换系统上现有的文件和二进制文件,这些文件常常处于相互依赖的长链中,可能会导致更新后的机器无法工作。如果手动选择软件包来搭建发行版,则需要特定的安装前/安装后脚本,可能导致系统不一致 [2]。
使用传统的更新机制时,错误的更新可能会导致物联网设备异常,修复它们需要通过工程师现场操作或召回设备来进行昂贵的人工干预
当需要恢复至先前的软件版本时,从软件包回收中下载旧版本并将其安装在损坏的系统上,可能需要软件包维护者提供一组复杂的脚本。开发人员通常获取较新或较旧版本的依赖软件包,来解决安装的库对特定软件具有依赖性的问题,这可能会进一步破坏兼容性,并将问题推向另一组软件包 [3]。
此外,尽管 apt-get update 适用于安全环境中的服务器,但是现场设备间歇性断电、网络中断意味着更新可能会中断。无论是软件错误、电力中断或是文件系统问题,系统都可能变得不一致,需要花费高昂费用请专家进行手动干预才能恢复。而与标准 Linux 发行版的发布节奏相比,下一代物联网创新的发展日新月异。
OTA 更新的关键考虑因素
物联网设备需要稳健的产品级软件分发机制,能够传输无人监管的空中下载无线(OTA,Over-the-air)更新。OTA 更新不仅需要通过修复错误来保护设备在现场的安全,而且还需要部署新功能以提高设备性能。
为 OTA 构建用于更新恢复的故障安全机制和可扩展的基础设施是非常昂贵且耗时的。此外,更新程序必须满足某些要求才能在规模上起效。首先,许多嵌入式设备的远程特性意味着:
- 它们需要回滚以防错误的更新
- 该服务需要提供稳健的自动更新
- 系统必须有足够的冗余来处理自动重构和无网络引导
提供关键更新也至关重要,因为设备可能需要在常规更新周期之外进行紧急错误修复和漏洞修补。此外,无人监管的更新必须为原子性,以防设备无法使用,并且它们需要保存用户数据。
解决物联网设备的软件更新问题
在 Canonical,我们如同站在巨人的肩膀上构建 Ubuntu。现在,我们正不断提高自由软件的可能性,同时确保以非凡的安全性进行交付。
通过 Ubuntu Core,我们为物联网设备构建了最简单、最安全的 Ubuntu 版本。由于 Ubuntu Core 是创新者首选的嵌入式 Linux 版本,因此我们致力于通过在第一天自动交付 OTA 更新来确保它的安全。
Ubuntu Core 的更新机制比基于软件包的传统物联网设备方法更快速、更高效且更可靠。Ubuntu Core 允许在系统中进行原子事务更新。内核、根文件系统和所有顶部应用程序都是事务性更新,可实现更快速、更可靠的更新。
系统尝试应用 OTA 增量差来节省带宽。它在成功时向前移动,失败时自动回滚。Ubuntu Core 可减少应用程序更新失败时的修改导致的数据损坏。它会在升级前维护原始数据,需要时允许进行无缝回滚。与替代或更传统的软件包管理器不同,失败的更新从不会让系统处于不可预测的状态。
此外,随着每个软件版本的发布,开发人员可将他们的物联网设备所需的所有内容捆绑到一个软件包中,消除了丢失依赖项的风险。
从最精简的设备到最繁重的 x86 服务器,开发人员现在可以制作原型、构建并发布可用于生产的设备,这些设备将自动更新至最新版本;以及带有所有他们期望从 Ubuntu 得到的安全补丁。Ubuntu Core 及其稳健 OTA 更新机制使得下一代安全、开放和可扩展的物联网设备成为可能,从机顶盒和家庭集线器再到机器人和无人机,推动一波新的创造力和创新浪潮。
延伸阅读
为什么 Linux 是物联网设备的首选操作系统?请参阅嵌入式应用 Linux 官方指南(中)。
阅读我们关于物联网生命周期管理的白皮书(英),获取更多见解。
加入物联网话语交流会,讨论与物联网和紧密嵌入式互连设备相关的一切话题。
订阅博客文章
查看更多内容
什么是 IoT 设备管理?
IoT 设备管理是指用于部署、监控和维护 IoT 设备的流程或实践。随着组织扩大其 IoT 工作,可靠的设备管理方法对于运行安全、简化的设备群至关重要。 全球联网设备的激增(预计 2024 年达到 188 亿台)意味着 IoT 设备管理变得越来越复杂,这一现实并没有被恶意行为者忽视。事实上, 2023 年平均每个组织每周遭受 60 次 IoT 攻击。这是因为设备以及它们之间的连接和您的管理系统构成了一个相当大的攻击面。 在这篇博客中,我们将通过关注您需要实现的 3 个目标来讲解 IoT 设备管理的基础:可见性、互操作性和安全性。我们将介绍开放式设备管理方法如何确保您在任何行业、任何规模的任何设备中实现这三个目标。 可统合并保护您设备的一把伞 您可以将自己的 IoT 管理 […]
Canonical Anbox Cloud 推出新的开发和测试功能,改善车载信息娱乐
对 AAOS(Android™ 汽车操作系统)的支持改善了测试和无缝可扩展性,使 Android 汽车开发更加容易。 我们很高兴地宣布,Canonical 云中传输应用程序的解决方案 Anbox Cloud 现已适用于 AAOS — Android 汽车操作系统。 AAOS(Android Automotive OS,Android 汽车操作系统)是专门设计的 Android 汽车信息娱乐版本,旨在解决车载信息娱乐操作系统日益增长的挑战和重要性。随着车辆的互联程度越来越高,对用于管理车内娱乐和功能的灵活操作系统的需求持续增长。专为汽车应用定制的 AAOS 提供了支持各种应用、功能和服务的全功能操作系统,同时保持了熟悉的 Android UI 和 UX。这使得原始设备制造 […]
分步指南:在 Ubuntu 上使用 Azure IoT Operations
简介 随着最近 Azure IoT Operations 的发布,Microsoft 为其客户提供了一个统一的数据平面,在节点数据捕获、基于边缘的遥测处理和云入口方面做出重大改进。 Azure IoT Operations 与 Ubuntu 的结合可谓是相得益彰,可以构建开箱即用的安全可靠的解决方案。 这篇博客是 Microsoft 的 Azure IoT Operations 入门的分步指南。最后,您会将 Azure IoT Operations 服务部署到本地支持 Azure Arc 的 microk8s Kubernetes 集群,并使用 X509 证书身份验证配置了与集群的 MQTT 代理的安全通信。为了实现这一点,您将执行命令、创建和编辑文件并发布自签名证书 […]