RAUC ドキュメントへようこそ!

Contents:

更新の必要性

組み込みシステムの更新は、組み込みハードウェア製品のライフサイクルにおいて常に重要なステップです。 更新は、システムのバグを修正したり、セキュリティの問題を解決したり、プラットフォームに新しい機能を追加したりするために重要です。

組み込みハードウェアは、ボード自体へのアクセスが困難またはコストがかかる場所に配置されることが多いため、更新は無人で実行する必要があります。 たとえば、特別な USB スティックを接続するか、何らかのネットワーク ロールアウト戦略を使用します。

組み込みシステムの更新は危険です。 アップデートに互換性がない、手順がクラッシュする、基礎となるストレージが書き込みエラーで失敗する、または誰かが誤って電源をオフにするなどの可能性があります。 これらはすべて発生する可能性がありますが、最終的にハードウェアが起動不能になることはありません。

安全なアップグレード以外のもう 1 つのポイントは、セキュリティに関する考慮事項です。 承認されていない誰かが、変更されたファームウェアをシステムにロードできないようにしたいと考えています。

RAUC とは?

RAUC は、組み込みデバイスで実行される軽量の更新クライアントであり、新しいファームウェア リビジョンでデバイスを更新する手順を確実に制御します。 RAUC は、デバイスの更新アーティファクトを作成、検査、および変更できるホスト システム上のツールでもあります。

さまざまなプロジェクトのカスタム アップデート ソリューションに何度も取り組み、以前は考慮されていなかったさまざまな問題や予想外の癖や落とし穴に常に直面した後、設計を決定しました。

したがって、RAUC の目的は、特定のプラットフォームの更新の概念が対処しなければならないさまざまなカスタム要件と制限に対して、十分にテストされた堅牢で一般的な基盤を提供することです。

RAUC 更新ツールを設計する際には、これらすべての要件が考慮されました。 以下では、RAUC が組み込みシステムを更新するために提供する基本的な概念、原理、およびソリューションの概要を簡単に説明します。

And What Not?

RAUC は本格的な更新アプリケーションまたは GUI ではありません。 テスト用の CLI を提供しますが、主に D-Bus インターフェイスを提供することで、個々のアプリケーションとインフラストラクチャにシームレスに統合できるように設計されています。

RAUC は、起動する適切なターゲットの選択を担当するブートローダーを置き換えることはできませんが、すべての一般的なブートローダーに組み込むための明確に定義されたインターフェイスを提供します。

RAUC does NOT intend to be a deployment server. On your host side, it only creates the update artifacts. You may want to have a look at rauc-hawkbit-updater for interfacing with the hawkBit deployment server.

RAUC bundles are NOT a general purpose transport container. This means that on your target side you should not use rauc extract. Instead use rauc install or the D-Bus API to trigger an installation. Any necessary customization should be done using hooks and handlers.

And finally, factory bring up of your device, i.e. initial partitioning etc. is also out of scope for an update tool like RAUC. While you may use it for initially filling your slot contents during factory bring up, the partitioning or volume creation must be made manually or by a separate factory bring up tool (such as systemd-repart).

Key Features of RAUC

  • フェイルセーフ & アトミック:

    • 更新は、実行中のシステムを中断することなく、いつでも中断できます。

    • 更新の互換性チェック

    • ブートを成功/失敗としてマークする

  • Cryptographic signing and verification of updates using OpenSSL (signatures based on x.509 certificates)

    _images/rauc_safety_security.png
    • Keys and certificates on PKCS#11 tokens (HSMs) are supported

  • Built-In HTTP(S) streaming support for updates

    • No intermediate storage on target required.

  • Optional encryption of update bundles

    • Encryption for a single or multiple recipients (public keys) supported

  • Flexible and customizable redundancy/storage setup

    _images/rauc_update_cases.svg
    • Symmetric setup (Root-FS A & B)

    • Asymmetric setup (recovery & normal)

    • Application partition, data partitions, …

    • Allows grouping of multiple slots (rootfs, appfs) as update targets

  • Bootloader interface supports common bootloaders

    _images/bootloader_interface.svg
  • Storage support:

    • ext4 filesystem

    • eMMC boot partitions (atomic update)

    • vfat filesystem

    • UBI volumes

    • UBIFS

    • JFFS2

    • raw NAND flash (using nandwrite)

    • raw NOR flash (using flashcp)

    • squashfs

    • MBR partition table

    • GPT partition table

  • Independent from update sources

    • USB Stick

    • Software provisioning server (e.g. Hawkbit)

  • Controllable via D-Bus interface

  • Supports data migration

  • Several layers of update customization

    • Update-specific extensions (hooks)

    • System-specific extensions (handlers)

    • Fully custom update script

  • Build-system support

    yocto_logo

    ptxdist_logo

    buildroot_logo

    Yocto support in meta-rauc

    PTXdist support since 2017.04.0.

    Buildroot support since 2017.08