2016-11-16 99 views
5

我们使用Raspberry Pi嵌入式计算机将客户网络上的IP摄像机连接到基于云端的录制服务。 我们使用Raspbian,约有50%是Wheezy,50%是Jessie。远程更新Raspberry Pi软件'空中'

我们面临的挑战是如何远程更新这些IFU上运行的软件。

我们目前的方法涉及使用SSH和Ansible。我们有一个复杂的Ansible脚本,可以对Raspberry Pi进行所有更改,并且我们已经实现了一定程度的自动化,因此我们可以一次更新大量的Raspberry Pi。

但是,问题是这是一个非原子更新。根据更新的时间,Raspberry Pi不一定总是有完全相同的软件包版本。它也有可能升级失败中途等。

我知道有几种方法通过下载一个新的'软件镜像'并交换使用它来代替使用引导加载程序进行原子级升级。我认为OpenWRT可以做到这一点以及swupdate:https://github.com/sbabic/swupdate

有没有人曾经在Raspberry Pi之前做过这样的事情?

谢谢

+1

与Raspi一起使用SWUpdate没有问题,如果我记得我曾经为我的Raspi3测试做过一次。无论如何,你必须使用U-Boot作为引导程序(Yocto可以为你构建,但只是在-master中,-morty仍然是ols),因为SWUpdate目前不支持其他引导程序。 Stefano – sbabic

回答

8

作为这个问题的一个更新,我找到了一些这样做的方法。

首先要考虑的是,您不必像@ user3145836指出的那样坚持使用RPI的默认引导加载程序。 Uboot允许你翻转启动分区。

目前最好的选择似乎是https://mender.io,这是我们选择的选项。

如果你可以dockerize你的应用程序,https://resin.io/是一个很好的托管方式。