第4章 Armadillo ソフトウェア仕様

4.1. NORフラッシュメモリのパーティション構成

node-eye に対応したNORフラッシュメモリのパーティション構成は、Armadillo-IoT ゲートウェイ G2の出荷時の構成と異なります。 Armadillo-IoT ゲートウェイ G2 の node-eye非対応構成node-eye対応構成、 それぞれを以下に示します。

表4.1 Armadillo-IoT ゲートウェイ スタンダードモデル G2 出荷時 (node-eye非対応)

物理アドレスパーティション名サイズソフトウェア

0xA0000000

0xA001FFFF

bootloader128kByteブートローダーイメージ

0xA0020000

0xA041FFFF

kernel4MByteLinuxカーネルイメージ

0xA0420000

0xA1EFFFFF

userland26.875Mbyteユーザーランドイメージ

0xA1F00000

0xA1FFFFFF

config1MByteアプリケーションの設定情報など

表4.2 node-eye対応

物理アドレスパーティション名サイズソフトウェア

0xA0000000

0xA001FFFF

bootloader128kBytenode-eye 対応ブートローダーイメージ

0xA0020000

0xA081FFFF

recovery8MByteリカバリイメージ

0xA0820000

0xA0C1FFFF

kernel4MByteLinuxカーネルイメージ(ユーザー作成)

0xA0C20000

0xA1EDFFFF

userland18.75Mbyteユーザーランドイメージ(ユーザー作成)

0xA1EE0000

0xA1EFFFFF

license128kByteハードウェア固有情報

0xA1F00000

0xA1FFFFFF

config1MByteアプリケーションの設定情報など

node-eye 対応のパーティション構成には、新たに recovery と license を追加しています。

recovery パーティションについて詳しくは本文 「リカバリイメージ」を参照してください。license パーティションには、Distribution ID に対応したSACMとの通信に使う認証キー(LS-SA key)が格納されます。

kernel、userland パーティションは、通常の Armadillo 利用時と同様、ユーザーが自由に変更可能です。

4.2. デフォルトでインストールされるアプリケーションの違い

node-eye 対応 パーティション構成では、userland パーティションのサイズは 18.75MB です。

容量制限のためnode-eye対応のユーザーランドには、Oracle Java SE Embedded 8、LUAインタプリタ はデフォルトで組み込まれないようになっています。

また、node-eye のデバイス運用管理サービスにいくつか必要なアプリケーションが追加されています。

4.3. リカバリイメージ

recovery 領域には、Linux カーネルとユーザーランド(atmark-dist)を一つにまとめたイメージを書き込みます。このイメージをリカバリイメージといいます。

4.3.1. リカバリイメージの目的

リカバリイメージの目的は、次のような人為的ミスによって正常に起動できなくなった Armadillo をnode-eyeコントロールパネルからの復旧ができるようにすることです。

  • ファームウェアアップデート機能を使ってLinux カーネルまたはユーザーランドに誤ったイメージを書き込んでしまった

  • ファームウェアアップデート機能を使ったイメージ書き込みの最中に、電源が遮断されて書き込みが完了せず再起動に失敗した

4.3.2. リカバリイメージの起動条件

リカバリイメージを使って Armadillo の起動する条件を次に示します。

  • ファームウェアアップデートが正常に完了していない状態で、Armadilloが再起動した

  • ファームウェアアップデートは完了したが、更新したイメージで起動できなかった

4.3.3. リカバリイメージの特徴

4.3.3.1. インストールされているアプリケーション

リカバリイメージは、Linux カーネルとユーザーランドを復旧するためにSACMに接続することのできる最小の構成となっています。そのため、インストールされているアプリケーションは標準イメージと比べ少なくなっています。

ユーザーランドにインストールされるアプリケーションの差分は以下のコマンドで確認することができます。

[PC ]$ cd atmark-dist/vendors/AtmarkTechno
             [PC ]$ diff Armadillo-IoTG-Std-NE/config.vendor Armadillo-IoTG-Std-NE.Recover/config.vendor

4.3.3.2. リカバリイメージ起動中のWebUI上の表示

リカバリイメージで Armadillo が起動すると、SACM コントロールパネル、node-eye コントロールパネル上では [切断中] と表示されます。ただし、Armadillo がリカバリイメージで起動し、SACM と通信できる場合は、SACM コントロールパネル, node-eye コントロールパネルから Ping と Traceroute を実行することができます。

4.4. 監視方法

Armadillo の接続/切断状態の監視は、Armadilloにインストールされたarmsdが SACM にHeartbeat パケットを送信することによって実現しています。

  • 送信間隔

    • 5分に1回 Heartbeatを Armadilloから送信

  • 状態変化

    • [切断中]のとき、1回Heartbeat が SACM に到達すると、接続状態を[接続中]に変化させる

    • [接続中]のとき、3回連続でHeartbeatが SACM に到達しなかった場合、 接続状態を[切断中]に変化させる

[ティップ]

リカバリーイメージは、Heartbeatを送信しません。従って、接続状態は[切断中]となりますが、Armadillo はSACMに接続可能なため復旧作業(ファームウェアアップデート等の)は実行できます。

4.5. リモートコンフィグ

node-eyeのリモートコンフィグ機能は、SACMのモジュールを使用しています。そのため、この章では "node-eye におけるモジュールについて" 説明します。

4.5.1. node-eye におけるモジュールについて

モジュールは Armadillo のユーザーランドに配置された start/stop/reconfig/command といった オペレーション を受け付けるスクリプトとして実装されています。

モジュールにはバイナリモジュール(BIN module)、コマンドラインインターフェースモジュール(CLI module)の2種類あります。 Armadillo-IoT ゲートウェイ スタンダードモデル G2 では、16個のモジュールが用意されています。

表4.3 モジュールのタイプとその用途

No.Module type用途
0 - 3CLI moduleアットマークテクノが提供する機能に使用
4 - 7CLI moduleお客様が自由に使用
8 - 11BIN moduleお客様が自由に使用
12 - 15CLI moduleお客様が自由に使用

CLI moduleは、SACM上で直接、モジュールのコンフィグを編集、参照することができます。 バイナリモジュールは、SACM上でコンフィグの内容を直接参照することはできず、ダウンロードとアップロードのみが可能です。

また、コマンドラインインターフェースモジュールのコンフィグで扱えるのは、US-ASCII のテキストのみに限られます。 日本語などのマルチバイト文字が含まれる場合、バイナリモジュールで取り扱う必要があります。

モジュールのコンフィグについては SACM コンフィグの概念 を参照してください。

モジュール0 ~ 3はアットマークテクノが提供する機能(ネットワーク設定、ファームウェア管理など)に使用しています。 モジュール0 ~ 3に変更を加えることは可能ですが、変更を加えた場合にはアットマークテクノから提供する機能(サービス等)を受けられなくなる場合があります。

現在、アットマークテクノから提供しているモジュールを表に示します。

表4.4 アットマークテクノが提供しているモジュール一覧

No.Module typeModule name用途
0CLI moduleネットワークモジュールネットワークインターフェースの設定に使用
1CLI moduleファームウェアモジュールファームウェアアップデートに使用

モジュールに関する詳細な情報は、別途 SACM モジュールの概念 を参照してください。

4.6. ネットワーク設定

node-eye 対応イメージでは armsd がネットワーク設定を管理します。

Armadillo起動直後は、armsd が/etc/network/interfacesを生成してネットワーク接続を行います。 SACM からコンフィグを取得できたら、一度、すべてのネットワークインターフェースをダウンした後、 取得したコンフィグを元に/etc/network/interfacesを生成し、再度ネットワークインターフェースをアップします。 コンフィグの管理はネットワークモジュールが行っています。

armsd のネットワーク設定の詳細は、本文「「リモートコンフィグを行う」」を参照してください。

4.6.1. ネットワークインターフェース設定シーケンス

Armadilloが起動してから、SACM上に設定したネットワークインターフェース設定が反映されるまでのシーケンスを説明します。 下記のシーケンスは SACM 動作シーケンス Pull動作 に沿った動作です。

  1. Armadilloが起動し、armsd が起動すると/etc/armsd/scripts/lineが実行されます。 /etc/armsd/scripts/line/etc/config/line.conf を元に /etc/network/interfaces(以下、interfacesと表記します)を生成します。 生成されるinterfacesはUSBメモリーを使うことによって変更することができます。

  2. 次に、生成されたinterfacesを使用してLS(Location Server)に接続します。

  3. 接続が確立すると、LSからRS(Resource Server)へ接続するために必要な情報(Location-Config)を取得します。※これをLS Pullといいます ArmadilloはLS Pullに成功すると、Location-Configをキャッシュします。(/etc/config/armsd.cache として保存されます) Location-Configがある場合、LS Pullをスキップします。

  4. 次に、再び/etc/armsd/scripts/lineでinterfacesを生成し、これを用いてRSへ接続します。 ここで生成されるinterfacesは、Armadilloが起動した時と同じものが生成されます。

  5. 接続が確立すると、RSからSACMのモジュールNに設定されたコンフィグ(Service-Config)を取得します。 ※これをRS Pullといいます

  6. 取得したService-Configを用いて、post-pull scriptinterfacesを生成します。

  7. こうして、Service-Configの設定でネットワークインターフェースがアップします。

  8. 最後に接続性の確認を行います。

    • Service-Configにより設定したinterfacesでSACMと接続できるかを確認します。 接続は5回試行しますが、5回とも接続できなかった場合、新たに設定する前のService-Cofingにロールバックします。

  9. SACMとの接続が確認されると、ネットワーク設定のシーケンスは終了となります。

4.7. ファームウェアアップデート

本章では node-eyeコントロールパネル の ファームウェアアップデート機能 の仕様について説明します。 ファームウェアアップデート機能の使い方は 3章node-eye を体験する を参照してください。

ファームウェアアップデートにより書き込むことのできる領域は以下の3つです。

  • kernel 領域

  • userland 領域

  • recovery 領域

※ただし、同時に書き込めるのは kernel と userland の組み合わせのみ

また、ファームウェアアップデートの際には、Armadillo がHTTPプロトコルでアクセス可能なwebサーバーに イメージファイルを置き、そのURLを指定する必要があります。