2016-05-13 164 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和硬鏈接在文件系統映像之間自動切換。

(披露:我是一個貢獻者元更新)

相關問題