2016-05-13 165 views
2

我们为我们的项目使用Variscite VAR-SOM-AM33平台,软件平台基于OpenEmbedded/Yocto基于OpenEmbedded/Yocto的系统的强大软件更新解决方案

为确保硬件与当前软件一起运行,设备已连接到互联网。到目前为止,我们一直在关注OE配方并生成ipk并通过opkg应用软件更新。

但是,该过程并不令人满意,因为一些配方写得不好(在升级过程中无法卸载/安装)。什么强大的技术/解决方案可用于基于OE/Yocto的系统?

在此先感谢。

+1

在附加到swupd建议,有没有人有https://mender.io/的经验吗? – Charles

+0

也找到https://resin.io/ today。但是它似乎需要一个定制的resinOS。任何有经验的人? – Charles

+2

还发现这篇白皮书比较了为汽车级Linux编写的各种更新解决方案:https://lists.linuxfoundation.org/pipermail/automotive-discussions/2016-May/002061.html – Charles

回答

5

我正在研究一个元数据层,将Clear Linux的Software Updater(swupd)与Yocto Project/OpenEmbedded Core集成在一起。

swupd执行整个操作系统更新,而不是基于软件包的更新,使用二进制增量只更新那些以有效方式进行更改和更改的文件。

我最近编写了一些文档(在meta swupd回购的docs/Guide.md文件中)关于采用“Clear Linux Way”来利用来自基于OE/YP的发行版的meta swupd。 Yocto项目wiki提供了该指南的wikified版本,包括指向图层git存储库的链接: https://wiki.yoctoproject.org/wiki/Meta-swupd

我也在Github上有一个示例图层,它演示了图层的使用(这也是发行版我测试了很多meta-swupd): https://github.com/incandescant/meta-myhouse

+1

@joshuagi,感谢您提出swupd,我也来了跨https://mender.io/。你有任何经验吗?它如何比较? – Charles

+0

@Charles我之前从未听说过mender.io。根据你的描述(谢谢),我会指出swupd的两个优点:a)它是开源的b)完全由发行版构建者控制(根据你的观点,这可能是一个优势或劣势)。幸运的是,一旦产生了swupd文物,所需的唯一基础设施就是通过http提供文件的能力。 – joshuagl

+0

@joshuagi感谢您的反馈。 swupd似乎比mender.io更成熟。我正在浏览swupd(需要一些工作)和你的wiki链接的官方文档。在我有了更好的理解之后,会试试看。 :) – Charles

3

那么,你可以使用基于软件包的升级,就像你一样。在这种情况下,在将任何更新推送到该字段之前,您需要在本地测试和验证所有内容。显然,你可能需要改进一些食谱。 (我假设你在上游那些改进,对吧?)

另一种方法是使用基于图像的升级。无论是全图像,请参阅例如在Stackoverflow: Embedded Linux mechanism for deloying firmware updatesswupd

注意的讨论:在写这个答案我被分心,所以看从joshuagi答案;他解释了更多的swupd。

+0

谢谢@Anders。感谢您的SO链接。很好地讨论这两种方法的优点。 – Charles

5

关于mender.io,我最近跟他们对他们的开源更新

目前,。他们已经开发了客户端,并且正在服务器端工作,他们使用HTTP和JSON,这是他们的​​,它目前仅支持Beaglebone和QEMU。

mender.io的工作方式是:他们将有一个持久性数据和uboot。和2个rootfs(活动和备份)进行更新。所以,当服务器上有更新时,用户将被通知将其关闭。给出mender -rootfs image更新命令。如果升级成功,则用户给出另一个mender -commit命令。如果没有mender -commit,则rootfs将在下次重新引导时回滚到以前的rootfs。 Mender目前仅支持内核和rootfs的更新。

mender.io的主要作用是确保批量分布式映像升级过程可从错误中恢复。在服务器端,mender.io使用UUID为批量分布式设备开发了一个管理服务器。

不做广告,但请试试mender.io并提供反馈意见,以便软件更加成熟。

Mender Introduction pdf

4

我想补充SWUpdate到,你应该考虑的包的列表。汽车级Linux的2016 paper by the Konsulko Group被推荐。该文提到了其他一些选择,并提供了各种工具的分析,因此可能值得一读。从纸张引用:

我们建议参考AGL软件更新策略在双副本配置中使用SWUpdate并集成OSTree支持。这允许从异常情况的损坏分区中恢复,但也可以优化常见情况,可以根据需要快速应用或回滚小的增量更新,以便[符合] OEM策略。

我并不完全同意这篇论文。例如,他们忘记了Mender.io,因为它缺乏社区支持,但是IMO的Automotive-Grade Linux团队足够具有影响力,可以从头开始创建流行度。尽管如此,这是一篇很好的论文,而且他们决定采用SWUpdate的事实对我来说很有意思。我已经倾向于它,因为作者sbabic参与U-Boot软件开发,我们使用U-Boot将新图像刻录到我们的设备中。

目前我对所有当前选项都不满意,但主要是因为我想要额外的功能。我可能会定制一个定制系统,其中包含一个或多个上述软件包。不幸的是,这不是那种SO更喜欢的明确答案,但我希望它有帮助。

0

meta-updater为基于OSTree的OE系统更新提供支持。 OSTree很有意思,因为它提供了一个完整图像更新(这是正确处理的大和棘手)和基于软件包的更新(这是棘手的,使健壮)之间的中途之家。它具有根文件系统的“类似git”的对象表示,并使用chroot和硬链接在文件系统映像之间自动切换。

(披露:我是一个贡献者元更新)

相关问题