关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
嵌入式Linux的OTA更新,现有更新系统的比较
[复制链接]
作者:
「selina」
版块:
›
嵌入式操作系统
›
linux
发布时间:
2020-5-13 12:57:33
972
0
返回列表
「selina」
当前离线
中级会员
中级会员, 积分 327, 距离下一级还需 173 积分
中级会员
中级会员, 积分 327, 距离下一级还需 173 积分
积分
327
发消息
楼主
电梯直达
「selina」
发表于 2020-5-13 12:57:33
|
只看该作者
|
倒序浏览
|
阅读模式
在基本原理和实现文章中,我们讨论了嵌入式Linux更新系统的基础和实现。在这里,我们讨论了一些现成的开源更新系统,这些系统现在可以与您的Embedded Linux项目集成。
此更新系统非常专业,可以立即使用。它使用的双rootfs更新系统与上一篇文章中描述的系统非常相似。它与U-Boot紧密集成,以便在非引导映像的情况下进行回退。
Mender入门非常容易,因为关于如何设置和集成各种组件的良好分步文档非常清晰。它们在Raspberry Pi和BeagleBone Black等流行平台上提供参考实现,它们可以使您了解使其在平台上工作所需的工作量。
我发现整合和工作大约花了三天时间。为了使其与我的Yocto构建设置(基于Morty)一起使用,进行了许多小的更改。它需要一些OpenEmbedded专业知识来解决这些问题。需要U-Boot专业知识才能正确集成双启动机制。
最后,它输出一个“ sdimg”,其中包含引导加载程序和文件系统,需要以某种方式将其写入闪存。如何执行此操作取决于您的目标硬件。它还输出所谓的“工件”,其中包含新的文件系统映像和各种元数据。
可以通过Mender命令行工具进行人工安装,以进行手动安装(理论上可以从USB记忆棒扩展到自动安装)。工件也可以通过Web界面上传到后端更新Web服务上,并可以从此处下推到各个单元。
控制后端更新服务器的Web界面设计合理,易于使用。设置是通过Docker完成的,这使得初始设置非常简单。完整的生产就绪系统将需要Docker专业知识。在此Web界面中,您可以在该字段中查看所有当前已部署的设备,并分别或按组向其推送更新。
图1:Mender包含一个定制的Web界面,用于将更新推送到设备
Mender的大多数都是用Go编程语言编写的。Go的一些专业知识对于长期采用和生产发布将是必需的。尽管在嵌入式世界中这仍然是一种罕见的语言,但在将来它可能会变得越来越广泛。
您被绑定到单个硬编码的引导设备(例如:/ dev / mmcblk0),因此没有直接的方法允许从多种介质引导。它还对您的系统做出了许多假设,例如引导程序和内核中的各种选项(例如:包括对某些文件系统的支持)。至关重要的是,它要求使用systemd,这可能使其不适用于某些项目。
更新
此更新系统是高度可配置的。您可以使用大多数嵌入式Linux开发人员都熟悉的“ kconfig”系统对其进行配置。有关配置选项的一些示例:它支持多个引导加载程序(U-Boot,GRUB,EFI Boot Guard);它可以根据给定的公钥对签名的图像进行签名和验证;它可以支持使用对称密钥加密的图像加密。
图2:SWUpdate的配置系统
每次更新都包含一个CPIO存档,其中包含以“ sw-description”文件和执行该更新所需的实际数据文件形式的元数据。通常将包含文件系统列表以及应将文件系统放置在哪些块设备中。更新文件必须由用户手动创建。它不会脱离构建系统。
与Mender不同,SWUpdate不会介入并处理有关如何设置系统的详细信息。Mender将为您修补u-boot环境,SWUpdate将需要您自己制定“乒乓” AB双重rootfs的底层实现细节。
SWUpdate可以提供命令行安装。它还提供了类似于Mender的后端更新系统,该系统基于Eclipse hawkBit,它与在名为“ Suricatta”的目标上运行的守护程序一起运行,该守护程序处理对SWUpdate的调用。它还可以在设备本身上运行嵌入式http服务器,从中可以上传和安装更新。
默认情况下,它提供精简的映像配方,旨在作为initramfs恢复映像运行。从到目前为止的经验来看,该系统似乎是为通过双重rootfs更新进行恢复分区更新而设计的(在上一篇文章中已讨论了它们的优缺点)。将双重rootfs更新与后台OTA更新守护程序“ Suricatta”集成在一起似乎是不可能的,或者至少是非常困难的。
大多数SWUpdate用C编写,因此大多数嵌入式Linux开发人员可以轻松地进行修改或执行调试。开发人员还将“处理程序”的思想纳入了应用程序,以允许其他编码人员轻松扩展。这些可以实现额外的更新功能,例如将固件下载到板上的其他芯片。
像Mender一样,SWUpdate对用户提出了一些要求,但由于系统的可配置性,这些要求受到限制,有些甚至是可选的。
RAUC
RAUC被设计为比前两个更新系统更轻巧的更新系统,主要二进制文件仅约2个。512K与SWUpdate的130万和Mender的690万相比(这些是基于Yocto的输出进行的粗略计算,未考虑依赖关系,不同的构建目标等)。
它从构建系统输出所谓的“捆绑包”。这些捆绑软件包含压缩的文件系统和元数据。它们始终需要进行数字签名,这是RAUC的核心设计理念。它将文件系统映像编程到各种“插槽”中,然后可以将它们标记为正在工作或损坏或准备进行更新。它将与引导加载程序环境交互以决定是否
RAUC在内核中需要某些选项(例如:对SQUASHFS的支持),并且在根文件系统中也具有某些软件依赖性。RAUC与SWUpdate一样,也是用C编写的。它没有实现Mender和SWUpdate可以做到的流传输。
与SWUpdate一样,它支持使用Eclipse hawkBit作为后端更新系统,从而使您可以从Web界面下推对设备的更新。
图3:Eclipse hawkBit可以用作将更新推送到设备的Web界面,可以与RAUC和SWUpd
结束语
在此未提及基于文件的更新系统(如上一篇文章中所述)。为简洁起见,其他人则错过了。
使用哪种系统的决定实际上取决于项目。看来Mender可能更容易入门,而SWUpdate可能对于与已经部分内部开发的更新系统集成很有用,并且RAUC可以用作SWUpdate的替代方法。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
说说鸿蒙操作系统
•
Linux操作系统应用试题
•
2021最新100GJava学习资料,从入门到精通!
•
缅怀那些年盗版XP系统:不仅埋葬了我的青春,还弄坏了我的电脑
•
Linux5.14内核主线预计可与RaspberryPi400兼容
•
INTEWELL案例为智慧风电保驾护航
•
怎样参与鸿蒙?
•
风河正在引领RTOS进入“现代化”创新期
•
Android面试必备:System、App、Activity启动过程
•
麒麟操作系统什么来头?为什么可随中国航天“上天”
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表