ソフトウェア仕様

12.1. SWUpdate

12.1.1. SWUpdateとは

SWUpdateは、デバイス上で実行されるプログラムで、 ネットワーク/ストレージ経由でデバイスのソフトウェアを更新することができます。 Stefano Babic, DENX software engineering, Germany によってオープンソースで開発が進められています。

Armadillo-IoT ゲートウェイ G4では、 SWUpdateを利用することで次のような機能を実現しています。

  • A/Bアップデート(アップデートの2面化)
  • リカバリーモード
  • ソフトウェアの圧縮、暗号化、署名付与
  • Web サーバー機能
  • hawkBit への対応
  • ダウングレードの禁止

12.1.2. swuパッケージ

swuパッケージは、SWUpdate独自のソフトウェアの配布フォーマットです。 SWUpdateでは、1回のアップデートは1つのswuパッケージで行われます。

swuパッケージには、次のような様々なものを含めることができます。

  • アップデート対象のイメージファイル
  • アップデート対象のイメージファイルのチェックサム
  • アップデート前後に実行するスクリプト
  • 書き込み先ストレージの情報
  • U-Boot 環境変数の書き換え情報
  • ソフトウェアのバージョン情報
  • etc…

12.1.3. A/Bアップデート(アップデートの2面化)

A/Bアップデートは、 Flash メモリにパーティションを2面確保し、 アップデート時には交互に利用する仕組みです。

常に使用していない方のパーティションを書き換えるため次の特徴を持ちます。

  • ○ アップデートによって動作中のソフトウェアは破壊されない
  • ○ 書き込みが電源断などで中断後しても、すぐに復帰出来る
  • ○ 機器が動作中に書き込みが出来る
  • × 使用Flashメモリ量が増える

12.1.4. リカバリーモード

リカバリーモードは、 不測の事態によりシステムが起動できなくなった際に、 A/Bアップデートの仕組みとは別のリカバリー用のシステムが起動するモードです。

万が一、システムが起動できなくなったとしても、 ネットワーク経由でのシステム復旧が可能です。

12.2. hawkBit

12.2.1. hawkBitとは

hawkBitは、サーバー上で実行されるプログラムで、 ネットワーク経由でデバイスのソフトウェアを更新(配信)することができます。

hawkBitは次のような機能を持っています。

  • ソフトウェアの管理
  • デバイスの管理

    • デバイス認証 (セキュリティトークン、証明書)
    • デバイスのグループ化
  • アップデート処理の管理

    • 進捗のモニタリング
    • スケジューリング、強制アップデート
  • RESTful APIでの直接操作

12.2.2. データ構造

hawkBitは、配信するソフトウェアを次のデータ構造で管理します。

images/hawkBit_data_structure.png

図12.1 hawkBitが扱うソフトウェアのデータ構造