SWUpdateは、デバイス上で実行されるプログラムで、
ネットワーク/ストレージ経由でデバイスのソフトウェアを更新することができます。
Stefano Babic, DENX software engineering, Germany
によってオープンソースで開発が進められています。
Armadillo-IoT ゲートウェイ G4では、
SWUpdateを利用することで次のような機能を実現しています。
-
A/Bアップデート(アップデートの2面化)
-
リカバリーモード
-
ソフトウェアの圧縮、暗号化、署名付与
-
Web サーバー機能
-
hawkBit への対応
-
ダウングレードの禁止
swuパッケージは、SWUpdate独自のソフトウェアの配布フォーマットです。
SWUpdateでは、1回のアップデートは1つのswuパッケージで行われます。
swuパッケージには、次のような様々なものを含めることができます。
-
アップデート対象のイメージファイル
-
アップデート対象のイメージファイルのチェックサム
-
アップデート前後に実行するスクリプト
-
書き込み先ストレージの情報
-
U-Boot 環境変数の書き換え情報
-
ソフトウェアのバージョン情報
-
etc…
12.1.3. A/Bアップデート(アップデートの2面化)
A/B アップデートは、
Flash メモリにパーティションを2面確保し、
アップデート時には交互に利用する仕組みです。
常に使用していない方のパーティションを書き換えるため次の特徴を持ちます。
-
○ アップデートによって動作中のソフトウェアは破壊されない
-
○ 書き込みが電源断などで中断後しても、すぐに復帰出来る
-
○ 機器が動作中に書き込みが出来る
-
× 使用Flashメモリ量が増える
システムが起動できなくなった際に、自動的にアップデート前のシステムにロールバックします。
ロールバック状態の確認は 「ロールバック状態の確認」 を参照してください。
ロールバックする条件は次の通りです:
ロールバックが実行されると /var/at-log/atlog
にログが残ります。