組み込みLinux向けOTAアップデート 第2部:既製アップデートプラットフォームの評価
第1部では組み込みLinux向けOTAアップデートシステムの基礎と実装を扱いました。今回は、今日プロジェクトに統合できる人気の既製オープンソースプラットフォームを評価します。
Mender
Menderは洗練された即戦力の体験を提供します。前回説明したのと同様のデュアルルートFS戦略を採用し、U-Bootと緊密に統合することで、イメージがブートに失敗した場合のシームレスなロールバックを可能にします。
明確なステップバイステップドキュメントのおかげで導入は簡単です。Raspberry PiとBeagleBone Black向けのリファレンスビルドが、自社ハードウェアへの適応に必要な労力を示しています。
私の経験では、統合に約3日かかりました。プロセスにはYocto(Morty)ビルドへの微調整と、OpenEmbeddedおよびU-Bootへの精通が必要で、デュアルブートメカニズムを正しく設定するためでした。
ビルド完了後、Menderはブートローダーとファイルシステムを含む「sdimg」ファイルを出力し、これをフラッシュに書き込みます。また、新しいファイルシステムイメージとメタデータをバンドルした「アーティファクト」も生成します。
アーティファクトはmenderCLIで手動インストール可能、またはWebインターフェース経由でバックエンドサーバにアップロードし、ターゲットユニットへ自動デプロイできます。
バックエンド管理コンソールはDockerベースで、初期導入を簡素化。Web UIでフィールド展開中のすべてのデバイスを監視し、個別ユニットやグループへアップデートをプッシュできます。
クリックで拡大
図1: MenderのカスタムWebインターフェースでアップデートをプッシュ(出典: Mender)
Menderの大部分はGoで書かれているため、長期メンテナンスにはある程度のGo知識が推奨されます。Goは組み込み開発ではまだ一般的ではありませんが、採用は拡大中です。
ただし、Menderは単一ブートデバイス(例:/dev/mmcblk0)にロックインされ、特定のブートローダーとカーネル設定(特定ファイルシステムサポートなど)を前提とします。またsystemdを必須とするため、代替initシステムを採用するプロジェクトでは除外される可能性があります。
SWUpdate
SWUpdateは高度に設定可能なフレームワークを提供します。設定にはおなじみのkconfig構文を使用し、開発者がニーズに合わせてシステムを調整できます。
主な機能には、複数ブートローダー対応(U-Boot、GRUB、EFI Boot Guard)、公開鍵によるイメージ署名と検証、オプションの対称鍵ペイロード暗号化が含まれます。

図2: SWUpdateの設定システム(出典: SWUpdate)
埋め込み
- モジュラー設計における組み込み技術のメリット
- 産業自動化ニーズに最適な3Dビジョンシステムの選び方
- 組み込みシステムにおけるデバッグ:種類、技法、信頼性向上のためのツール
- 組み込みシステムが牽引する現代自動車のイノベーション
- 組み込みシステム:定義、アーキテクチャ、実世界での応用
- IC技術とマイクロコントローラ:現代組み込みシステムの基盤
- STMicroelectronics、組み込みPCM搭載28nm FD-SOI MCUをパワートレイン/ADAS/電動化向けに展示
- Cervoz、超薄型M.2 NVMe SSD発表 - 産業用エッジアプリケーション向け高性能ストレージ
- 先進ロボットシステム向け精密モーター制御のエンジニアリング
- ビジネスに最適なAWSコンテナオーケストレーションサービスの選び方
- 2021年版:Windows/macOS/Linux対応C# IDEトップ10レビュー