OTA(Over The Air)によるソフトウェア更新を実現するソリューションの1つ。Menderをご紹介します。
  • 調べてみた
Menderというオープンソースのプロジェクトを知りました。簡単にいうと組込IoTデバイスのソフトウェアアップデートを簡単に実現するマネジメントシステムです。TOPページのコメントを引用しましたが、OTA(Over The Air)とは、スマホなどが無線経由でUPDATEされることを意味します。アーキテクチャとしてはクライアントサーバ型みたい。
Enable over-the-air software updates with the only open source client-server update manager.The solution you need to easily integrate, manage, and deploy IoT products at scale.
What Is Mender?を読みました。Our goal is to enable OTA updates with Mender on every board and operating system!私たちの目標は、すべてのボードとオペレーティングシステムでMenderによるOTAアップデートを可能にすることです!)というメッセージがシビれますね。ライセンスはApache2.0。たしかアパッチライセンスって特許放棄とかの条項があったような気がするので、気を付けて使わねばなりません。(Androidをメーカーが採用すると特許を放棄させられる???
What is Mender?
Mender is the only client-server open source solution for deployment of secure and robust over-the-air (OTA) software updates.It includes two components - a client and a management server, which are both open source and licensed under Apache 2.0.Mender provides a complete set of tools and support for building, deploying, and managing embedded devices with full control and customizability over how a software is installed. This makes Mender unique for providing both robust system- and application-level updates and this combination enables Mender to solve all your OTA updates needs.Targeted application-level updates, which can be just a few kilobytes in size (compared to potentially hundreds of megabytes for system-level updates), enables much lower bandwidth usage, faster updates and more frequent deployments.Embedded and system developers find that building a software update mechanism to remotely deploy updates to devices in the field is time consuming, costly, and outside of their core competency. The majority of homegrown solutions lack the key elements for a successful implementation:Built-in securityCommunity-backedRobust update processFleet managementServer managementThe software update process for connected devices is complex, with many requirements to ensure a secure and robust process. Users report that average development effort can be as high as 6 months to a full year when a homegrown solution is implemented with varying cost implications. Luckily, we have a solution that fits your needs! Our tools can work together as a platform, or tailored to your specific project and use case needs with different hardware and operating system.Above all, there is a community called Mender Hub that you can become part of, get support, discuss and contribute. Our goal is to enable OTA updates with Mender on every board and operating system!

(Google翻訳)
メンダーとは何ですか?
    Menderは、安全で堅牢なOTA(Over-The-Air)ソフトウェアアップデートを展開するための唯一のクライアント/サーバーオープンソースソリューションです。2つのコンポーネント - クライアントと管理サーバー - オープンソースでApache 2.0でライセンスされています。 Menderは、ソフトウェアのインストール方法を完全に制御およびカスタマイズできるようにして、組み込みデバイスの構築、配置、および管理のための完全なツールセットとサポートを提供します。これにより、Menderは堅牢なシステムレベルとアプリケーションレベルの両方のアップデートを提供することができます。この組み合わせにより、MenderはすべてのOTAアップデートニーズを解決できます。ターゲットレベルのアプリケーションレベルアップデートは、わずか数キロバイトになります。組込みおよびシステム開発者は、現場でデバイスにアップデートをリモートで展開するためのソフトウェアアップデートメカニズムの構築は、時間がかかり、コストがかかり、彼らの外で行うことに気付きます。コアコンピテンシー自社開発ソリューションの大部分には、実装を成功させるための重要な要素が欠けています。組み込みセキュリティコミュニティによるロバストアップデートプロセスフリート管理サーバ管理安全で堅牢なプロセスを保証するための多くの要件があります。ユーザーは、自社開発のソリューションをさまざまなコストで実装した場合、平均的な開発作業は1年から6ヶ月にもなると報告しています。幸いなことに、私たちはあなたのニーズに合った解決策を持っています!私たちのツールは、プラットフォームとして一緒に機能することも、特定のプロジェクトに合わせて調整することも、さまざまなハードウェアやオペレーティングシステムでユースケースのニーズに合わせて作成することもできます。私たちの目標は、すべてのボードとオペレーティングシステムでMenderによるOTAアップデートを可能にすることです!

Solutionを読みました。HTTPSポーリングで定期的にサーバを参照するため、組込デバイス側でポートを開けなくて良い。またUPDATEイメージ(バイナリ)にコード署名を付けられるので改ざん検知もできる。またUPDATEをA面、B面で管理してるのでUPDATE失敗しても、片側の面が壊れてなければ起動できるみたい。色々考えられてます。

Solution

With Mender, it is easy to customize the install process while providing client-server management security and robustness. The deployment is done securely using HTTPS polling, so no ports are open on the device. Mender also supports code signing for added confidence that your devices will be updated by a trusted party. Mender supports both robust system level updates as well as application updates.

You have several options to run Mender: open source on-premise, Mender Enterprise where you can manage your own server with customized updates, or sign up for Hosted Mender where we host the server for you, or in standalone mode with only the Mender client when you do not have sufficient network connectivity. The server stores and controls the deployment of OTA software updates to devices. The Mender client runs on the device and reports to the server periodically to check for updates; as soon as an update is scheduled it is downloaded and installed. Mender supports full image updates with A/B partitioning and automatic rollback functionality, and new types such as application, containers, packages, files, bootloaders and proxy deployment for attached peripherals.

You can read more on our FAQ. Our customer case studies also detail why Mender is chosen for secure and robust OTA updates.
Architecture

Mender is a client-server application, where the client is installed in embedded devices running Linux. The Mender client regularly checks with the Mender server over HTTPS to check if it has an image update available for deployment, and deploys it if there is. For system level updates, a dual A/B rootfs partition layout ensures robustness, so that the embedded device can recover even during incomplete or corrupted deployment installations, e.g. due to power loss during the update process.

Architecture

The Mender management server is now published on GitHub for on-premise installations. It is licensed under the Apache 2.0 license.
Partition layout and robustness

For robustness during system update processes, Mender uses a dual A/B rootfs partition layout. The Mender client daemon runs in user space in the currently booted rootfs partition.

Installation

During the update process, the Mender client writes the updated image to the rootfs partition that is not running and configures U-Boot to boot from the updated rootfs partition. The device is then rebooted. If booting the updated partition fails, the partition that was running is booted instead, ensuring that the device does not get bricked. If the boot succeeds, Mender sets the updated partition to boot permanently when Mender starts as part of the boot process. As Mender downloads and installs the image, other applications on the device continue to run as normal. The only time the device has downtime is during the reboot into the updated partition, which typically takes a minute, depending on the device configuration. Persistent data can be stored in the data partition, which is left unchanged during the update process.
Extensibility of update types

Mender introduces a framework called Update Modules that enables the Mender client to extend support for installing new types of software packages such as application, containers, package managers, bootloaders and proxy deployment for attached peripherals. An Update Module can be tailored to a specific device or environment (e.g. update a proprietary bootloader), or be more general-purpose (e.g. install a set of .deb packages.).

Update Module

When new software is downloaded from the server, the Mender client will run the Update Module executable associated with the software type. The Update Module is responsible for carrying out the steps needed to install the software of this type. An Update Module can also support more advanced functionality such as rolling back a failed update.

In addition to enabling support for new types of software updates, Update Modules also gives full control and customizability over how a software type is installed. For example, the Docker Update Module can be adjusted to include the container data itself if you do not want to rely on remote docker registries. An existing Update Module can be used as a starting point and adjusted to fit your exact needs.

Since Update Modules are independent executables, they can be written in any programming language. Due to their simple nature, Update Modules are typically written in a scripting language like shell or Python. Read more about Update Modules.

Mender is unique for providing both robust system- and application level updates and it is this combination that enables Mender to solve all your needs for OTA updates. Mender enables fleet owners to deploy updates when needed and at the level it is targeted. For example, a common pattern is to deploy quarterly OS level updates and weekly application level updates.
Device deployment and management

Device and deployment management can be done with the Mender Web UI or REST APIs. The Mender Management APIs are used by the Mender Web UI and can be used to integrate Mender with your environment, such as automatically uploading build output from your CI system to the Mender server and creating test deployments. There are APIs for all aspects of the Mender server, including user and device authentication, inventory and deployment. The Device Inventory enables the users to list, search, and use the results to create and manage device groups for the purpose of deployment scheduling.

(Google翻訳)
溶液

Menderを使用すると、クライアントサーバー管理のセキュリティと堅牢性を提供しながら、インストールプロセスを簡単にカスタマイズできます。展開はHTTPSポーリングを使用して安全に行われるため、デバイス上のポートは開かれません。 Menderはまたあなたのデバイスが信頼できる団体によって更新されるという追加の確信のためにコード署名をサポートします。 Menderは、堅牢なシステムレベルのアップデートとアプリケーションのアップデートの両方をサポートしています。

Menderを実行するには、オープンソースのオンプレミス、カスタマイズしたアップデートで独自のサーバを管理できるMender Enterprise、サーバをホストするHosted Menderへのサインアップ、またはMenderクライアントのみを使用するスタンドアロンモードの2つの選択肢があります。十分なネットワーク接続がない場合サーバーは、OTAソフトウェアアップデートのデバイスへの展開を保存および管理します。 Menderクライアントはデバイス上で実行され、アップデートを確認するために定期的にサーバーに報告します。アップデートがスケジュールされるとすぐにダウンロードされ、インストールされます。 Menderは、A / Bパーティショニングおよび自動ロールバック機能によるフルイメージの更新、およびアプリケーション、コンテナ、パッケージ、ファイル、ブートローダ、および接続されている周辺機器のプロキシデプロイメントなどの新しいタイプをサポートしています。

あなたは私たちのFAQでもっと読むことができます。 Menderが安全で堅牢なOTAアップデートに選ばれる理由は、当社の顧客事例研究でも詳しく説明されています。
建築

Menderは、Linuxを実行している組み込みデバイスにクライアントがインストールされているクライアントサーバーアプリケーションです。 Menderクライアントは、HTTPSを介してMenderサーバに定期的にチェックして、展開に使用できるイメージの更新があるかどうかを確認し、ある場合は展開します。システムレベルの更新では、デュアルA / B rootfsパーティションレイアウトによって堅牢性が保証されるため、組み込みデバイスは不完全または破損した展開インストール(例:アップデートプロセス中の電力損失によるものです。

建築

Mender管理サーバーは、オンプレミスインストール用にGitHubに公開されました。これはApache 2.0ライセンスの下でライセンスされています。
パーティションレイアウトと堅牢性

システム更新プロセス中の堅牢性のために、MenderはデュアルA / B rootfsパーティションレイアウトを使用します。 Menderクライアントデーモンは、現在起動されているrootfsパーティションのユーザー空間で動作します。

インストール

更新プロセス中に、Menderクライアントは実行されていないrootfsパーティションに更新されたイメージを書き込み、更新されたrootfsパーティションから起動するようにU-Bootを設定します。その後、デバイスが再起動されます。更新されたパーティションの起動に失敗した場合は、実行中のパーティションが代わりに起動され、デバイスが破損しないようにします。起動が成功した場合、Menderは起動プロセスの一部として起動したときに更新されたパーティションを永続的に起動するように設定します。 Menderがイメージをダウンロードしてインストールしても、デバイス上の他のアプリケーションは通常どおりに動作し続けます。デバイスにダウンタイムが発生するのは、更新されたパーティションへの再起動中だけです。デバイスの構成によっては、通常1分かかります。永続データはデータパーティションに格納でき、更新プロセス中は変更されません。
更新タイプの拡張性

Menderは、Menderクライアントがアプリケーション、コンテナ、パッケージマネージャ、ブートローダ、および接続された周辺機器用のプロキシ展開などの新しいタイプのソフトウェアパッケージのインストールのサポートを拡張することを可能にするアップデートモジュールと呼ばれるフレームワークを導入します。アップデートモジュールは、特定のデバイスや環境に合わせて調整する(たとえば独自のブートローダをアップデートする)か、またはより汎用的にする(たとえば一連の.debパッケージをインストールする)ことができます。

更新モジュール

新しいソフトウェアがサーバーからダウンロードされると、Menderクライアントはそのソフトウェアの種類に関連付けられたアップデートモジュールの実行ファイルを実行します。アップデートモジュールは、このタイプのソフトウェアをインストールするために必要な手順を実行する責任があります。アップデートモジュールは、失敗したアップデートのロールバックなど、より高度な機能もサポートできます。

新しいタイプのソフトウェアアップデートのサポートを有効にすることに加えて、アップデートモジュールはまた、ソフトウェアタイプのインストール方法を完全に制御しカスタマイズすることができます。たとえば、リモートDockerレジストリに依存したくない場合は、Docker更新モジュールを調整してコンテナデータ自体を含めることができます。既存のアップデートモジュールを出発点として使用して、正確なニーズに合わせて調整することができます。

アップデートモジュールは独立した実行ファイルなので、任意のプログラミング言語で書くことができます。それらの単純な性質のために、アップデートモジュールは通常シェルやPythonのようなスクリプト言語で書かれています。アップデートモジュールについてもっと読む。

Menderは、堅牢なシステムレベルとアプリケーションレベルの両方のアップデートを提供するという点で独自のものであり、MenderがOTAアップデートに対するすべてのニーズを解決できるのはこの組み合わせです。メンダーは、艦隊の所有者が必要なときに、それが目標とするレベルでアップデートを展開することを可能にします。たとえば、一般的なパターンは、四半期ごとのOSレベルの更新と週ごとのアプリケーションレベルの更新を展開することです。
デバイスの展開と管理

デバイスと展開の管理は、Mender Web UIまたはREST APIを使用して実行できます。私は

協賛企業はこんな感じ。
1

手をつけると厄介な感じなので、一旦保留。そのうち試してみます。

続く
IMG_20190804_182320



スポンサードリンク