組み込みLinux製品にOTA(Over-The-Air)更新が必要な時代になった。セキュリティパッチの適用、EU CRAの脆弱性対応義務、フィールドでのバグ修正——出荷後にソフトウェアを更新できない製品は、もはやリスクだ。
Yoctoエコシステムで実績のあるOSSのOTA更新ツールは3つ。SWUpdate、Mender、RAUC だ。この記事では、3ツールをアーキテクチャ・ライセンス・Yocto統合の観点から比較し、プロジェクトに合った選択を助ける。
なぜOTA更新が必須になっているか
組み込み機器のOTA更新は「あると便利」から「必須」に変わりつつある。
セキュリティ: CVEは毎日公開される。フィールドの機器にパッチを当てる手段がなければ、脆弱性が放置される。SBOM/CVE管理でCVEを検出しても、更新手段がなければ意味がない。
規制: EU CRAは2027年から、製品のセキュリティ更新能力を求める。FDAは医療機器のソフトウェア更新計画を審査する。
コスト: 物理的な回収・再書き込みは、OTA更新の数百倍のコストがかかる。
この3ツールはいずれもA/Bパーティション方式(デュアルコピー)をサポートし、更新失敗時に自動ロールバックできる。これが手動書き込みとの最大の違いだ。
3ツール早見表
| 項目 | SWUpdate | Mender | RAUC |
|---|---|---|---|
| ライセンス | GPL-2.0 | Apache-2.0(クライアント) | LGPL-2.1 |
| 最新バージョン | 2025.12 | 5.0.4 | v1.15.1 |
| 実装言語 | C | Go / C++ | C (GLib) |
| 更新形式 | .swu(cpioアーカイブ) | .mender(Artifact) | .raucb(バンドル) |
| サーバー | hawkBit(OSS) | Mender Server(OSS/SaaS) | なし(自前構築) |
| デルタ更新 | OSS(rdiff) | Enterprise限定 | OSS(casync) |
| 署名 | オプション | オプション | 必須 |
| Scarthgap対応 | meta-swupdate | meta-mender | meta-rauc |
| フットプリント | 小 | 大 | 最小 |
アーキテクチャ比較
SWUpdate — 柔軟性重視
SWUpdateは「何でもできる」タイプのツールだ。
更新の仕組み: .swu ファイル(cpio形式)をストリーミング処理する。先頭の sw-description ファイルに更新手順が記述されており、ハンドラが各コンポーネントを処理する。
強み:
- Luaスクリプトでカスタムハンドラを書ける(FPGA、MCUファーム、個別ファイルなど)
- hawkBitサーバー(Eclipse IoT)との連携が組み込み済み(Suricattaデーモン)
- イメージ更新だけでなく、個別ファイル更新にも対応
- デルタ更新がOSS(rdiffハンドラ)
弱み:
- 設定の自由度が高い分、初期構築の学習コストが高い
sw-descriptionの記法に独自形式(libconfig)を使う- サーバーサイドは自分で構築する必要がある(hawkBitは別プロジェクト)
Mender — SaaS一体型
Menderはクライアントとサーバーが一体設計されたツールだ。
更新の仕組み: .mender Artifact形式を使い、A/Bパーティションにイメージを書き込む。4パーティション構成(boot / rootfs-A / rootfs-B / data)が標準。
強み:
- Hosted Mender(SaaS)を使えば、サーバー構築なしで即座にOTA環境が手に入る
- Web UIでデバイス管理・更新配信・ログ確認が完結する
- Update Modulesで.deb/.rpm/Docker/単一ファイルなどの更新にも対応
- ドキュメントが充実しており、チュートリアルが手厚い
弱み:
- デルタ更新はEnterprise/Professionalプランのみ(OSSでは使えない)
- 4パーティション固定レイアウトの制約がある
- Go実装のため、他の2ツールよりフットプリントが大きい
- SaaS利用は月額$34〜(50デバイス Basic)。大規模運用はEnterprise(要問い合わせ)
RAUC — セキュリティ重視・最軽量
RAUCは署名を設計の中心に据えたツールだ。Steam Deckでも採用されている。
更新の仕組み: .raucb バンドル(squashfs形式)をD-Bus経由でインストールする。署名検証は必須であり、署名なしのバンドルは受け付けない設計だ。
強み:
- 署名が必須なので、セキュリティが設計レベルで保証される
- フットプリントが3ツール中最小
- D-Bus + systemd との統合が深い
- Adaptive Updates(v1.8〜)でOSSのデルタ更新に対応
- LGPL-2.1なので、プロプライエタリ製品に組み込みやすい
弱み:
- 公式の管理サーバーがない。サーバーサイドは自前で構築する
- Web UIやデバイス管理ダッシュボードがない
- 個別ファイル更新はイメージベースほどスムーズではない
- 日本語の情報が少ない
Yocto統合の実際
3ツールそれぞれの、Scarthgapでの統合手順を比較する。
SWUpdate + meta-swupdate
# bblayers.conf
BBLAYERS += "/path/to/meta-swupdate"
# conf/local.conf
IMAGE_INSTALL:append = " swupdate"
sw-description ファイルと更新イメージの構成を自分で定義する。柔軟だが、最初のセットアップに時間がかかる。
hawkBitサーバーとの連携を有効にする場合:
# conf/local.conf
IMAGE_INSTALL:append = " swupdate-www"
SRC_URI:append:pn-swupdate = " file://defconfig"
Mender + meta-mender
# bblayers.conf
BBLAYERS += "/path/to/meta-mender/meta-mender-core"
# conf/local.conf
INHERIT += "mender-full"
MENDER_ARTIFACT_NAME = "release-1.0"
INHERIT += "mender-full" を追加するだけで、パーティションレイアウト・ブートローダー統合・クライアントインストールが一括で設定される。Hosted Menderとの接続にはテナントトークンが必要。
RAUC + meta-rauc
# bblayers.conf
BBLAYERS += "/path/to/meta-rauc"
# conf/local.conf
IMAGE_INSTALL:append = " rauc"
Scarthgapでは、プラットフォーム設定(system.conf、キーリングなど)が rauc-conf.bb レシピに分離された。bbappendを使って自分のシステム設定を上書きするのが標準的なやり方だ。
# system.conf の設定例
[system]
compatible=my-product
bootloader=uboot
[slot.rootfs.0]
device=/dev/mmcblk0p2
type=ext4
[slot.rootfs.1]
device=/dev/mmcblk0p3
type=ext4
どのツールを選ぶべきか
プロジェクトの条件に応じた選択フローを示す。
ライセンスで絞る
| 条件 | 推奨 |
|---|---|
| プロプライエタリ製品に組み込む | RAUC(LGPL-2.1)またはMender(Apache-2.0) |
| GPL汚染を避けたい | RAUC > Mender > SWUpdate |
| ライセンスは問題にならない | 3ツールとも候補 |
SWUpdateはGPL-2.0だ。ツール自体をリンクしない限り問題にはならないが、法務部門の判断が必要な場合がある。
サーバー要件で絞る
| 条件 | 推奨 |
|---|---|
| サーバー構築の余裕がない | Mender(Hosted Mender) |
| 既存のhawkBitを使いたい | SWUpdate |
| サーバーは自前で構築できる | RAUC / SWUpdate |
| サーバー不要(USBやローカル配信) | 3ツールとも可能 |
チーム・製品特性で絞る
| 条件 | 推奨 |
|---|---|
| とにかく早くOTAを導入したい | Mender(SaaS + ドキュメント充実) |
| セキュリティが最優先 | RAUC(署名必須設計) |
| FPGA/MCUなど多様なコンポーネントを更新 | SWUpdate(Luaハンドラ) |
| フットプリントを最小化したい | RAUC |
| デルタ更新をOSSで使いたい | SWUpdate(rdiff)/ RAUC(casync) |
| Web UIでデバイス管理したい | Mender |
まとめ
3ツールの特徴を一言でまとめると:
| ツール | 一言で | 向いているチーム |
|---|---|---|
| SWUpdate | 柔軟な万能型 | カスタム要件が多い・hawkBitを使いたい |
| Mender | SaaS一体型 | 早く導入したい・サーバー運用を避けたい |
| RAUC | 軽量・署名必須 | セキュリティ重視・フットプリント最小化 |
3ツールともYocto Scarthgapで成熟しており、「どれを選んでも大きな間違いはない」レベルだ。差がつくのはライセンス、サーバー要件、チームの得意分野。
OTAの導入は、SBOM/CVE管理と組み合わせることで真価を発揮する。CVEを検出し、パッチを作り、OTAでフィールドに配信する——この一連のフローが、これからの組み込み製品の標準になる。