Note: swupdate

目前萬物聯網攻擊不斷,對嵌入式應用來說可以線上更新變成一種必要功能,在Embedded Linux上目前有很多競爭方案,其中一個著名的方案是 swupdate

swupdate 它本身其實比較像是一個框架,它處理了跟OTA server 溝通與取得升級包的事情,但是在裝置端的升級它透過lua/shell script 去處理,並且也提供跟Bootloader 的環境變數界面。

透過lua/shell script 可以解耦合,讓跟裝置本身的更新方法與swupdate脫勾,不過它內部支援幾種常見的裝置更新方法,它對於更新的方法採用 Handler 處理,使用者可以自己新增Handler 去處理特殊的情況更新

而產生升級包的方法基本上是準備好要更新的檔案或是映像檔,然後透過cpio 工具把它整合成一個檔案,第一個檔案一定是名叫 sw-description 的描述檔,它用來描述這個升級包有那些內容跟支援的系統組態,常見的rootfs.ext4.gz 它就是把整個rootfs 不做差異化比較處理直接傳遞整個壓縮包,基本上它應該可以透過rdiff handler 去處理delta update


常見的dual(A/B) partition 主要是作防止系統變磚的設計,實際的功能要透過boot script/bootloader variables 去處理
透過安裝時候選擇要安裝的image 然後更新到非系統目前在用的區域更新完沒有問題的時候透過更新boot script/bootloader variables 然後讓系統重新開機切換到另外一個partitions, 不過如果是linux 如果需要不重新開機的功能也許也可以做chroot 然後重起某些應用

ref.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s