ブログ

Armadillo-IoT G3/G3L, Armadillo-X1: リモートアップデートの指針

at_syunya.ohshio
2018年9月20日 16時43分

Armadillo-IoT ゲートウェイ G3/G3L, Armadillo-X1(以下Armadilloと記載)でリモートアップデートを行う指針についてご紹介します。

概要

Armadilloを使用したシステムは普段、人の出入りしない場所で長期安定動作を必要とされることが多いです。 また場合によっては複数台のArmadilloを設置したり、人の出入りが困難な場所に設置したりすることも考えられます。 その場合、管理者がArmadilloに直接PCを接続して行う「手動アップデート」は費用がかかってしまいます。 そのため、Armadilloの現場に行かずともアップデートを行える「リモートアップデート」を想定した設計・開発を行うことを推奨します。

今回はリモートアップデートを視野に入れた設計・開発を行うために、指針として以下の内容をご紹介します。

  • アップデートの必要性
  • アップデートポリシー
  • リモートアップデート時のソフトウェア更新方法
  • リモートアップデートの注意点
  • リモートアップデート方法の一案

アップデートの必要性

アップデートの必要性について記載します。 長期的に運用するシステムを開発する場合、ソフトウェアに「運用中の不具合」「脆弱性」が発見されたとき、そのままでは運用しているシステムに不都合が発生してしまいます。 システム開発段階にてアップデートする方法を用意し、運用時に実行することで不具合の影響を最小限に抑えることができます。 そのためシステムはバージョンに依存しない内容で設計し、できるだけ最新版で運用することを推奨します。

Armadilloのアップデート可能ソフトウェア

Armadilloにはいくつかのソフトウェアが存在しており、それぞれアップデートが可能です。 以下に、主なアップデート可能ソフトウェアを記載します。

  • ブートローダー
  • Linuxカーネル
  • Device Tree
  • Debian GNU/Linuxパッケージ
  • 3G/LTEのファームウェア(ELS31-Jのみ)

ソフトウェアについては「ニュースフォーラム」等でアップデート情報を通知しています。 更新履歴等はこちらを参照してください。

アップデートポリシー

アットマークテクノでのアップデートポリシーを記載します。

Linuxカーネル

2018/09現在、アットマークテクノではLinux 4.9のご利用を推奨しています。 Linux 3.14のメンテナンス期限は決まっているため、可能な限りLinux 4.9へアップデートすることをお勧めします。

Linux 3.14 のメンテナンス期限については、以下の「ご利用製品の製品ソフトウェア(Linux 3.14)ダウンロードページ」をご確認ください。

Linux 4.9へのアップデート方法については、ご利用製品のマニュアル「イメージファイルの書き換え方法」を参考に[Linux 4.9]と[Debian GNU/Linux9(Stretch)]を書き込んでください。 また、必要ならばアップデート前に必ずデータバックアップを取り、データを退避したのちにアップデートを行ってください。

各ソフトウェア

各ソフトウェアについてはご利用製品の製品ソフトウェアダウンロードページから最新版をダウンロードし、更新することを推奨します。 各更新方法はご利用製品のマニュアル「イメージファイルの書き換え方法」を参照してください。 また、必要ならばアップデート前に必ずデータバックアップを取り、データを退避したのちにアップデートを行ってください。

Debian GNU/Linuxパッケージ

Debian GNU/Linuxのパッケージは、安易に[apt-get upgrade]を行うと依存関係や仕様の変更によってソフトウェアが正常に動作しなくなることもあります。 システムにて使用しているパッケージの依存関係や仕様をご確認の上、[apt-get install]で個別アップデートを行うと安全です。 数が膨大な場合は、依存関係や仕様をよくご確認の上[apt-get upgrade]を行ってください。

リモートアップデート時のソフトウェア更新方法

「アップデートの必要性」の「Armadilloのアップデート可能ソフトウェア」で記載した「主なアップデート可能ソフトウェア」について、リモートアップデート時のソフトウェア更新方法を記載します。

ブートローダー,Linuxカーネル,Device Tree

手動での書き換え方法と変更ありません。 ご利用製品のマニュアル「イメージファイルの書き換え方法」を参考に更新を行ってください。

Debian GNU/Linuxパッケージ

リモートアップデートでは、マニュアル「ルートファイルシステムの書き換え」はできません。 全体のパッケージ更新である[apt-get upgrade]または更新したい任意のパッケージに対して[apt-get install]を行ってください。 また、[overlayfs]使用時は「こちらのブログ」を参考に更新を行ってください。

3G/LTEのファームウェア(ELS31-Jのみ)

3G/LTEのファームウェアは「ELS31-J」(G3L)のみファームウェアが更新されています。 2018/09現在「PDS6-J」「EC25-J」のファームウェアは一種類しか存在しないため、更新する必要はありません。 「ELS31-J」の更新方法については「Armadillo-IoT G3L ダウンロードページ」の「Cinterion(R) ELS31-J ソフトウェア」からファームウェアアップデートツールをダウンロードし、使用することで更新が可能です。

リモートアップデート時の注意点

ソフトウェアのリモートアップデートを行う際に注意する点について記載します。

アップデート試験

リモートアップデート機能を実装する際、まずローカルでアップデートを行い問題がないかチェックしてください。 また、必ず試験用のサーバ,クライアントを用意し、「リモート」でアップデートが正常に動作するか確認してください。 これにより思わぬエラー発生を事前に把握することができます。

通信量の問題

リモートアップデートに3G/LTEを使用するとき、通信量に注意してください。 ご利用のSIM契約の通信量を超えてしまうとリモートアップデートが困難になります。

複数のデバイスアップデート

複数のデバイスをアップデートする必要がある場合、一斉にアップデートを行うとサーバーに負荷がかかります。 このとき、環境によってはサーバがダウンするなどの問題が発生する可能性があります。 上記のようにアップデート時の負荷が問題となるような場合、「アップデートタイミングをずらす」など実装による問題回避が可能です。

リモートアップデート失敗時の対策

リモートアップデートは大まかに以下の3段階の処理を行います。

  • 各アップデートファイルのダウンロード
  • ダウンロードしたファイルの適用
  • 機体の再起動、アップデート確認

これらが失敗してしまった場合、「再ダウンロードを実行し、複数回失敗するならばアップデート中止」「バックアップからアップデート前に戻す」等のエラー処理を行う必要があります。 予期せぬエラーが発生し、リモートで操作できなくなってしまうと管理者が機器を直接触らなくてはならなくなる場合もあります。 なるべくそのような事態に陥らないために、より多くのエラー対策を組み込んでおく必要があります。

実作業を必要としないアップデート方法の一案

推奨する「リモートアップデート」を想定した設計・開発を行うために「リモートアップデート」を行う方法の一案をご紹介します。

crontabを用いた自動定期アップデート

定期的にジョブを実行するようにスケジュールを設定するコマンド[crontab]コマンドを用いて、単純なリモートアップデート機能を実現することができます。 定期的にジョブを実行できることを利用し、例として以下の処理を行うアプリケーションを作成することができます。

1週間に1度、特定名で保存されたソフトウェアがサーバに設置されているかを確認
・ファイルが存在していれば、ファイルをダウンロードしてそのままアップデート処理を行う
・存在していなければ、そのままジョブ終了

詳細はmanページ「CRONTAB」を参照してください。 デメリットとしては、定期的にジョブを実行するため「任意のタイミング」等の複雑なアップデートには対応できないことが挙げられます。

クラウドを用いたリモートアップデート

[AWS IoT][Azure IoT]等、企業が提供しているクラウドサービスを用いることで、リモートアップデートを実現することができます。 上記にて紹介した「crontabを用いたリモートアップデート」と比べて「特定のArmadilloに対してアップデート命令を行う」や「任意のタイミングでアップデートを開始する」等、より複雑なアップデート管理が可能となっています。 ただし、クラウドサービスで行うリモートアップデートの仕組みについては必ずしも用意されているとは限りません。 そのため開発者が各クラウドサービスの制御方法を学習し、それに合わせたアップデートの仕組みを設計する必要があります。

アットマークテクノが提供しているサービス「デバイス遠隔管理サービス Node-eye」ではリモートアップデート機能が搭載されています。 また、別記事「Howto : Armadillo-X1, Armadillo-IoT G3/G3LにAWS Greengrass Coreをインストールする」にてAmazon Web Servicesが提供しているクラウドサービスもご紹介しています。 この方法を用いる場合はご参考ください。

参考

■製品ダウンロードページ