第6章 Howto

6.1. リカバリイメージを使って Armadillo を復旧する

本章では、リカバリーイメージを使って Armadillo を復旧する手順を紹介します。

手順6.1 リカバリーイメージを使った Armadillo の復旧

  1. リカバリイメージで起動していることを確認する

    はじめに、node-eye コントロールパネルにログインします。

    リカバリイメージで起動した Armadillo は、接続状態が [切断中] で表示されるため、 [切断中] の Armadillo に対し ping を実行します。

    "状態" が [成功] となった場合は復旧作業ができます。Armaidllo はリカバリイメージで起動しているので、次の手順に進んでください。

    "状態" が [失敗] となった場合は復旧作業ができません。何らかの原因で Armadillo と SACM が接続できていないため、Armadillo を直接確認する必要があります。

  2. リカバリイメージからプライマリイメージを書き換える

    ping が成功した Armadillo に対しファームウェアアップデートを行います。入力するカーネルとユーザーランドのダウンロードURLは、起動できるものを入力してください。 ファームウェアアップデートには時間がかかる場合があるため、[アップデート完了時に再起動する] にチェックを入れてから、実行することをおすすめします。

  3. 書き込みを行ったイメージの確認

    ファームウェアアップデートが成功し、再起動すると、書き込んだイメージが起動します。 また、SACM と通信ができると接続状態が [接続中] になります。 これでファームウェアアップデートは完了です。

    再起動後、接続状態が [切断中] → [接続中] に切りわかるまでに時間がかかる場合があります。 10 分以上切り替わらない場合は、リカバリイメージで起動していることが考えられます。 この場合は、再び復旧作業を行ってください。

6.2. リカバリイメージの起動をテストする

本章では、Armadilloに書き込んだリカバリイメージが正常に起動するか確認する方法を説明します。

手順の中で、既にArmadillo に書き込まれているプライマリイメージを上書きします。リカバリイメージの起動を確認した後に、元に戻すための正常なプライマリイメージファイルを用意しておいてください。

手順6.2 リカバリーイメージの起動テスト

  1. 起動しないプライマリイメージファイルを作る

    正常に起動することができないイメージを書き込んだ状況を再現するため、サイズが1バイトのファイルをgzip圧縮して不正なプライマリイメージファイルとして用意します。次の手順をATDE5等のLinuxマシンで行ってください。

    [PC~]$ echo | gzip > dummy.gz && md5sum dummy.gz > dummy.gz.md5
    [PC~]$ ls dummy*
    dummy.gz  dummy.gz.md5
  2. 起動しないプライマリイメージを Armadillo から接続可能なwebサーバーに配置する

    作成した "dummy.gz" と "dummy.gz.md5" を対象となるArmadilloがアクセスすることのできる webサーバーに配置してください。

  3. node-eyeコントロールパネルから起動しないプライマリイメージを使ってファームウェアアップデートを実行する

    node-eye コントロールパネル で対象となる Armadillo を選択して、 不正なプライマリイメージファイル "dummy.gz" へのURLを [カーネル] に入力し、[アップデート完了後に再起動する] にチェックを入れた上で、 ファームウェアアップデートを実行してください。

    [ユーザーランド] のテキストボックスには何も入力する必要はありません。

    ファームウェアアップデート (node-eye コントロールパネル)

    図6.1 ファームウェアアップデート (node-eye コントロールパネル)


  4. リカバリイメージによってArmadilloが起動した事を確認する

    起動しないプライマリイメージファイルによるファームウェアアップデートに成功してArmadilloは再起動を実行します。 しかし、起動しないプライマリイメージによって起動が失敗するため、自動的にリカバリイメージで再起動します。

    リカバリイメージで再起動した Armadillo は node-eyeコントロールパネル または SACMコントロールパネルからは [切断中] として認識されますが、Ping、Traceroute、再起動、ファームウェアアップデートは実行することができます。

    起動しないプライマリイメージのアップデートによる再起動を実行してから15分以上経過した後に、 対象の Armadillo が node-eyeコントロールパネルから [切断中] として表示される事と、 Ping が実行できる事を確認してください。

    確認が終ったら正常なプライマリイメージを使ってファームウェアアップデートを実行してください。

6.3. SACMからネットワークインターフェースの設定を行う

本章では、アットマークテクノが提供するネットワークモジュールのコンフィグの仕様と、 各種ネットワークインターフェースを使うための設定例を紹介します。

ネットワークモジュールは モジュール0 に割り当てています。

[ティップ]

SACM の操作手順については、3章node-eye を体験する「リモートコンフィグを行う」 を参照してください。

6.3.1. ネットワークモジュール仕様

6.3.1.1. コンフィグの書式

ネットワークモジュール(モジュール0)のコンフィグの書式を以下に示します。

VERSION=[version]

[key]=[value]
[key]=[value]
     :
  • version

    • モジュール内の処理とコンフィグの内容を対応付けるために使用するバージョン番号です

    • Armadillo-IoT G2 の標準イメージ(node-eye対応)では "1" 固定となっています

  • key

    • コンフィグの変数名です

    • 同一の key を同じコンフィグ内に書くと、後に書かれたものが使用されます

    • key の前に#をつけることで、コメントアウトできます

  • value

    • key に対応する値です

6.3.1.2. 使用可能な key 一覧

6.3.1.2.1. eth0

ネットワークモジュールの eth0 に関する key 一覧です。 interface_eth0_から始まる変数の値は /etc/network/interfaces に書き込まれます。

表6.1 ネットワークモジュールの eth0 に関する key 一覧

keyvalue (参考例)説明
interface_eth0enableeth0 の有効/無効 (enable / disable)
interface_eth0_typestaticIPアドレスの設定方法 (dhcp / static)
interface_eth0_address192.168.10.1IPアドレス
interface_eth0_netmask255.255.0.0ネットマスク
interface_eth0_network192.168.0.0ネットワーク
interface_eth0_broadcast192.168.255.255ブロードキャストアドレス
interface_eth0_gateway192.168.0.1ゲートウェイ
interface_eth0_metric1メトリック値

6.3.1.2.2. umts0

ネットワークモジュールの umts0 に関する key 一覧です。 interface_umts0_から始まる変数の値は /etc/network/interfaces に書き込まれます。

表6.2 ネットワークモジュールの umts0 に関する key 一覧

keyvalue (参考例)説明
interface_umts0enableeth0 の有効/無効 (enable / disable)
interface_umts0_typedhcpIPアドレスの設定方法 (dhcp のみサポート)
interface_umts0_apnAPNアクセスポイント名 (APN)
interface_umts0_id"user name"認証ID(ユーザー名)
interface_umts0_auth_typeCHAP認証方式
interface_umts0_pass"password"パスワード
interface_umts0_pdp_typeIPPDPタイプ
interface_umts0_metric20メトリック値

6.3.1.2.3. awlan0

ネットワークモジュールの awlan0 に関する key 一覧です。 interface_awlan0_から始まる変数の値は /etc/network/interfaces に書き込まれます。

表6.3 ネットワークモジュールの awlan0 に関する key 一覧

keyvalue (参考例)説明
interface_awlan0enableenable または disable
interface_awlan0_typedhcpdhcp または static
interface_awlan0_address192.168.10.2IPアドレス
interface_awlan0_netmask255.255.0.0ネットマスク
interface_awlan0_network192.168.0.0ネットワーク
interface_awlan0_broadcast192.168.255.255ブロードキャストアドレス
interface_awlan0_gateway192.168.0.1ゲートウェイ
interface_awlan0_metric40メトリック値
interface_awlan0_passphrase"password"パスフレーズ
interface_awlan0_cryptmode"WPA2-AES"暗号化方式*1
interface_awlan0_essid"mywpa2aes"ESSID
interface_awlan0_channel1チャンネル(interface_awlan0_wireless_mode が master の時のみ設定可能)
interface_awlan0_wireless_modemanaged接続モード (ステーションモード(STA): managed / アクセスポイントモード(AP): master)

6.3.1.2.4. resolv.conf

ネットワークモジュールの resolv.conf に関する key 一覧です。 resolv_conf_から始まる変数の値は /etc/resolv.conf に書き込まれます。

表6.4 ネットワークモジュールの resolv.conf に関する key 一覧

key説明
resolv_conf_searchresolv.conf の search
resolv_conf_nameserverresolv.conf の nameserver

6.3.2. 設定例

以下はネットワークモジュールの設定例です。 必ず、VERSION=1, interface_***=enableが書かれていることに注目してください。

6.3.2.1. 3Gモバイル回線を使う

VERSION=1

interface_umts0=enable
interface_umts0_type=dhcp
interface_umts0_id="myid"
interface_umts0_pass="mypass"
interface_umts0_apn="myapn"
interface_umts0_auth_type="PAP"
interface_umts0_pdp_type="IP"
interface_umts0_metric=10

6.3.2.2. AWL13を使う

VERSION=1

interface_awlan0=enable
interface_awlan0_type=dhcp
interface_awlan0_essid="my-wireless-network"
interface_awlan0_passphrase="password"
interface_awlan0_wireless_mode="managed"
interface_awlan0_cryptmode="WPA2-AES"
interface_awlan0_metric=20

6.3.2.3. 固定IPアドレスを使う

eth0 を使用する場合

VERSION=1

interface_eth0=enable
interface_eth0_metric=1
interface_eth0_type=static
interface_eth0_address="192.168.10.10"
interface_eth0_netmask="255.255.255.0"
interface_eth0_network="192.168.10.0"
interface_eth0_broadcast="192.168.10.255"
interface_eth0_gateway="192.168.10.1"

resolv_conf_search="local-network"
resolv_conf_nameserver="192.168.10.100"

awlan0 を使用する場合

VERSION=1

interface_awlan0=enable
interface_awlan0_type=dhcp
interface_awlan0_address="192.168.10.10"
interface_awlan0_netmask="255.255.255.0"
interface_awlan0_network="192.168.10.0"
interface_awlan0_broadcast="192.168.10.255"
interface_awlan0_gateway="192.168.10.1"
interface_awlan0_essid="my-wireless-network"
interface_awlan0_passphrase="password"
interface_awlan0_wireless_mode="managed"
interface_awlan0_cryptmode="WPA2-AES"
interface_awlan0_metric=20

resolv_conf_search="local-network"
resolv_conf_nameserver="192.168.10.100"

6.3.2.4. 複数のインターフェースを同時に使う

VERSION=1

interface_eth0=enable
interface_eth0_metric=1
interface_eth0_type=static
interface_eth0_address="192.168.10.10"
interface_eth0_netmask="255.255.255.0"
interface_eth0_network="192.168.10.0"
interface_eth0_broadcast="192.168.10.255"
interface_eth0_gateway="192.168.10.1"

interface_umts0=enable
interface_umts0_type=dhcp
interface_umts0_id="myid"
interface_umts0_pass="mypass"
interface_umts0_apn="myapn"
interface_umts0_auth_type="PAP"
interface_umts0_pdp_type="IP"
interface_umts0_metric=10

interface_awlan0=enable
interface_awlan0_type=dhcp
interface_awlan0_essid="my-wireless-network"
interface_awlan0_passphrase="password"
interface_awlan0_wireless_mode="managed"
interface_awlan0_cryptmode="WPA2-AES"
interface_awlan0_metric=20

resolv_conf_search="local-network"
resolv_conf_nameserver="192.168.10.100"

6.3.3. SACMへ初めて接続する時のネットワーク設定を変更する

Armadillo のリモートコンフィグと遠隔監視を行うためには、Armadillo と SACMサーバー が互いに通信できる環境を用意する必要があります。 デフォルトの設定では、Armadillo の Ethernetポート(eth0) を使って、DHCPによる設定を使って、通信を試みます。 それ以外の環境、例えば、3Gモバイル回線だけで Armadillo の遠隔監視を行う場合は、この章で説明する手順で設定をする必要があります。

本題に入る前に、SACM から Armadillo に対してリモートコンフィグを行うまでの流れを本文の 「ネットワークインターフェース設定シーケンス」 で確認してください。

シーケンス内で示すリモートコンフィグ前の/etc/network/interfacesの変更は /etc/armsd/scripts/line の設定ファイル(/etc/config/line.conf)を変更することで出来ることがわかります。

/etc/config/line.conf の変更は、以下のいずれかの手順で行うことができます。

  • 手順6.3「設定ファイルを変更し、コンフィグ領域に保存する」

    これは Armaidllo と PC を接続し Armadillo の端末を操作して設定する方法です。これは試作、開発時に向いています。 "イメージの書き換えが不要"というメリットはありますが、PC と Armadillo を何らかの方法で接続する必要があるため、複数台を同時に設定する場合などに向きません。 また、flatfsd -wでコンフィグ領域を初期化した場合に再設定が必要です。

  • 手順6.4「設定ファイルを変更し、イメージファイルを書き込む」

    これは、atmark-dist のソースコード内にある、/etc/armsd/scripts/line の設定ファイルを編集し、 ビルドしたイメージ書き込むことで、設定ファイルを変更する方法です。 手順6.3「設定ファイルを変更し、コンフィグ領域に保存する」の方法と比較して、作業は多くなってしまいますが、flatfsd -wを行っても、 atmark-dist ビルド時の /etc/armsd/scripts/line の設定が保持されるという特徴があります。

  • 手順6.5「設定ファイルをUSBメモリーに入れ、設定を取り込む」

    これは、node-eye 標準イメージの機能を使った方法です。 Armadillo にUSBメモリーを接続した状態で起動することによって、USBメモリー内の設定ファイルを Armadillo に取り込むことが可能です。 PCを使わずに設定することができるため、多数のArmadilloを連続してセットアップする場合に向いています。

    ただし、この方法もflatfsd -wでコンフィグ領域を初期化した場合は再設定が必要です。

[ティップ]

/etc/armsd/scripts/line が実行されるタイミングや、interfaces が生成されてからの処理については、前述の「ネットワークインターフェース設定シーケンス」を参照してください。

[ティップ]

ご使用の環境が、以下の条件をすべて満たしている場合、これらの設定を行う必要はありません。

  • Armadillo のネットワークインターフェースに 有線LAN を使用している

  • Armadillo が DHCP でアドレスを取得できる環境である

  • サービスアダプタの通信要件を満たしている

手順6.3 設定ファイルを変更し、コンフィグ領域に保存する

  1. line.conf の編集

    vi エディタなどで、Armadillo 上の /etc/armsd/scripts/line の設定ファイルを変更します。

    [Armadillo ~]# vi /etc/config/line.conf

    以下は、3Gモバイル回線とDHCPによる有線LAN接続を試行する設定例です。 先頭に#が付いた行はコメントなので、評価されません。 他の設定例については、本文 「SACMへ初めて接続する時のネットワーク設定を変更する」 に記載の設定例を参照してください。

    MOBILE_ID="example@example.jp"
    MOBILE_PASS="example_mobile_password"
    MOBILE_APN="example.jp"
    MOBILE_AUTH_TYPE="CHAP"
    MOBILE_PDP_TYPE="IP"
    
    #RESOLV_SEARCH="local-network"
    #RESOLV_NAMESERVER="192.168.10.1"
    #STATIC_ADDRESS="192.0.2.10"
    #STATIC_NETMASK="255.255.255.0"
    #STATIC_NETWORK="192.0.2.0"
    #STATIC_BROADCAST="192.0.2.255"
    #STATIC_GATEWAY="192.0.2.1"
  2. line.conf の保存と再起動

    まず、キャッシュファイルを削除し、編集した設定ファイルをフラッシュメモリに保存してから、再起動します。

    [Armadillo ~]# rm -f /etc/config/armsd.cache
    [Armadillo ~]# flatfsd -s
    [Armadillo ~]# reboot

    再起動後、先ほど書き込んだ設定ファイルを基に/etc/network/interfacesが生成され、SACMへの接続がおこなわれます。

手順6.4 設定ファイルを変更し、イメージファイルを書き込む

  1. ソースコードの用意

    作業用PC上に node-eye 対応の atmark-dist のソースコードを用意します。

  2. line.conf の編集

    /etc/armsd/scripts/line の設定ファイルは、プライマリ、リカバリそれぞれにあります。 そのため、どちらも同じ設定にしたい場合は両方編集する必要があります。

    • プライマリ

      • atmark-dist/vendors/AtmarkTechno/Armadillo-IoTG-Std-NE/etc/default/line.conf

    • リカバリ

      • atmark-dist/vendors/AtmarkTechno/Armadillo-IoTG-Std-NE.Recover/etc/default/line.conf

    編集内容は 「設定例」 で紹介しているものを参考にしてください。

  3. イメージの書き込み

    編集後、ユーザーランドをビルドし、Armadillo へ書き込みを行ってください。 ユーザーランドのビルド方法は Armadillo-IoT ゲートウェイ スタンダードモデル製品マニュアルの 11.1. Linuxカーネル/ユーザーランドをビルドする を参照してください。 Armadillo へのイメージの書き込み方法は、同マニュアルの 第12章 フラッシュメモリの書き換え方法 を参照してください。

  4. コンフィグ領域の初期化

    書き込みが完了し、Armadilloが再起動した後はログイン後に "flatfsd"コマンドを使ってコンフィグ領域を初期化してください。 初期化時には、新たに書き込んだnode-eye対応イメージの"/etc/default"ディレクトリ以下のファイルがコンフィグ領域に保存され、且つ"/etc/config"ディレクトリにファイルが複製されます。

    [Armadillo ~]# flatfsd -w

手順6.5 設定ファイルをUSBメモリーに入れ、設定を取り込む

Armadillo にUSBメモリーに入れた設定ファイルを取り込ませる方法を紹介します。 設定ファイルは「特定のディレクトリ」に「特定の名前」で、USBメモリーに保存しておく必要があります。

  1. USBメモリーをフォーマットする

    USBメモリーは FAT32 でフォーマットしてください。

  2. 設定ファイルを作成する

    設定ファイルは、USBメモリーに以下のように配置します。

    USB_ROOT
    `-- config
        |-- attached
        |   |-- 0001-0000-000D-0001-0000-0000-XXXX-0001.conf
        |   `-- 0001-0000-000D-0001-0000-0000-XXXX-0002.conf
        |-- pool
        |   |-- 1.conf
        |   |-- 2.conf
        |   `-- 3.conf
        `-- fixed
            `-- default.conf

    3つのディレクトリ(attached, pool, fixed)の用途を下記の表に示します。目的に合ったディレクトリに設定ファイルを置いてください。

    /mnt/config/[directory_name]

    表6.5 ディレクトリの用途

    directory_name説明
    attachedDistribution-IDとネットワーク設定を1対1で対応させたい場合に使うファイル名は [Distribution-ID].conf のフォーマットが有効
    pool設定する台数分のファイルを用意して、Distribution-IDとは無関係に順次設定を適用する場合に使うファイル名の昇順でUSBメモリーの接続毎に設定が適用され、適用済みの設定はattachedに[Distribution-ID].conf として移動される任意のファイル名が有効
    fixedDistribution-IDに関係なく1つのネットワーク設定を使いまわしたい場合に使うファイル名は default.conf のみ有効

    ※ ディレクトリごとに設定ファイル名の書式が異なります。注意して下さい。

    設定ファイルは、以下の優先順位で Armadillo に読み込まれます。

    [first] attached -> pool -> fixed [last]

    設定ファイルは attached/ のものが最優先で読み込まれます。 Armadillo は attached/ 以下に、自らの Distribution-ID に一致する設定ファイル([Distribution-ID].conf)が 見つかった場合、これを取り込みます。 設定ファイルは、1つ見つかると、その時点で、 pool/ , fiexed/ のコンフィグは使われません。

    pool に入っているコンフィグはArmadilloにコンフィグが書かれた後、 attached/ に{Distribution-ID}.confの名前で移動されます。

    fixed に入っているコンフィグはArmadilloにコンフィグが書かれた後、 attached/ に{Distribution-ID}.confの名前でコピーされます。

6.3.3.1. 使用可能な key 一覧

6.3.3.1.1. eth0 固定IP

表6.6 eth0 で 使用可能な key の説明

key説明
STATIC_ADDRESSIPアドレス
STATIC_NETMASKネットマスク
STATIC_NETWORKネットワークアドレス
STATIC_BROADCASTブロードキャストアドレス
STATIC_GATEWAYゲートウェイ

6.3.3.1.2. umts0

表6.7 umts0 で使用可能な key の説明

key説明
MOBILE_ID認証 ID(ユーザー名)
MOBILE_PASSパスワード
MOBILE_APNアクセスポイント名(APN)
MOBILE_AUTH_TYPE認証方式
MOBILE_PDP_TYPEPDPタイプ

6.3.3.1.3. awlan0

表6.8 awlan0 で使用可能な key の説明

key説明
WIRELESS_LAN_ENABLE無線LANの有効/無効 (true/false)
WIRELESS_LAN_ESSIDESSID
WIRELESS_LAN_PASSPHRASEパスフレーズ
WIRELESS_LAN_CRYPTMODE暗号化方式
WIRELESS_LAN_WIRELESS_MODE接続モード

[ティップ]

LS Pull における eth0 と awlan0 は排他になっているため、WIRELESS_LAN_ENABLE=trueに設定した場合は eth0 による LS Pull はできません。

6.3.3.1.4. resolv

表6.9 resolv で使用可能な key の説明

key説明
RESOLV_SEARCHresolv.conf の search
RESOLV_NAMESERVERresolv.conf の nameserver

6.3.3.2. 設定例

3G モバイル回線を使う

MOBILE_ID="User name"
MOBILE_PASS="Password"
MOBILE_APN="APN"
MOBILE_AUTH_TYPE="NON, PAP or CHAP"
MOBILE_PDP_TYPE="IP or PPP"

固定IPを使う

STATIC_ADDRESS="192.0.2.10"
STATIC_NETMASK="255.255.255.0"
STATIC_NETWORK="192.0.2.0"
STATIC_BROADCAST="192.0.2.255"
STATIC_GATEWAY="192.0.2.1"

RESOLV_SEARCH="local-network"
RESOLV_NAMESERVER="192.168.10.1"

無線LAN(awl13)を使う

WIRELESS_LAN_ENABLE=true
WIRELESS_LAN_ESSID="myessid"
WIRELESS_LAN_PASSPHRASE="mypresharedkey"
WIRELESS_LAN_CRYPTMODE="WPA2-AES"
WIRELESS_LAN_WIRELESS_MODE="managed"

無線LANで固定IPを使う

WIRELESS_LAN_ENABLE=true
WIRELESS_LAN_ESSID="myessid"
WIRELESS_LAN_PASSPHRASE="mypresharedkey"
WIRELESS_LAN_CRYPTMODE="WPA2-AES"
WIRELESS_LAN_WIRELESS_MODE="managed"

STATIC_ADDRESS="192.0.2.10"
STATIC_NETMASK="255.255.255.0"
STATIC_NETWORK="192.0.2.0"
STATIC_BROADCAST="192.0.2.255"
STATIC_GATEWAY="192.0.2.1"

RESOLV_SEARCH="local-network"
RESOLV_NAMESERVER="192.168.10.1"

6.4. Armadillo: モジュールの作成方法

本章では、Armadillo に独自のモジュールを組込む手順について説明します。

モジュールを作成して Armadillo のユーザーランドに組込むためには、 本文 「5章イメージファイルのビルド手順」 でビルドする Atmark Distの ソースコードに変更を加えて、イメージをビルドしなおす必要があります。

6.4.1. モジュールの配置

モジュールの実体となるファイルは展開したAtmark Distのソースコードの下記のパスに 配置します。

  • プライマリ用: atmark-dist/vendors/AtmarkTechno/Armadillo-IoTG-Std-NE/etc/armsd/user_modules/

  • リカバリ用: atmark-dist/vendors/AtmarkTechno/Armadillo-IoTG-Std-NE.Recover/etc/armsd/user_modules/

モジュールは基本的にシェルクスリプトとして、ファイル名がモジュール番号(ユーザー向けは4から15) + "_"で で始まるファイル名で作成してください。

例えば、5_mymodule.sh というファイル名でモジュールを作成した場合、モジュール5 として実行されます。

ファイル名のモジュール番号は重複しないようにしてください。同じ番号が複数ある場合、ファイル名をasciiで ソートして若い方の1つだけがモジュールの実装として機能します。

6.4.2. モジュールのサンプル

モジュールのサンプルは node-eye対応 の Atmark Distのソースコード内の下記のパスに配置されています。

  • atmark-dist/vendors/AtmarkTechno/Armadillo-IoTG-Std-NE/etc/armsd/user_modules/4_command

下記にその内容を記載します。

#! /bin/sh

# This modele is a sample.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
OPS=${1}
shift

case ${OPS} in
  command)
      sh ${2} > ${3} 2>&1
      ;;
  *)
      exit 1
      ;;
esac

exit 0

このモジュールは SACMコントロールパネル から モジュール4 として操作することができ、 任意コマンド実行 で与えるパラメーターを sh の引数として、Armadillo上で実行することができます。

文中のcase文で分岐する条件の OPS にはモジュールの オペレーション が文字列として代入されます。 実装することのできる オペレーション は下記のサンプルコード N_sample を参考にしてください。

  • atmark-dist/vendors/AtmarkTechno/Armadillo-IoTG-Std-NE/etc/armsd/user_modules/N_sample

#! /bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
OPS=${1}
shift

syslog_debug() {
    logger -t armsd.module.$(basename ${0}) ${1}
}

case ${OPS} in
  start)
    syslog_debug "START: <id=${1}> <version=${2}> <info=${3}> <configure=${4}>"
    ;;
  stop)
    syslog_debug "STOP: <id=${1}>"
    ;;
  reconfig)
    syslog_debug "RECONFIG: <id=${1}> <version=${2}> <info=${3}> <configure=${4}>"
    ;;
  status)
    syslog_debug "STATUS: <id=${1}> <requestfile=${2}> <resultfile=${3}>"
    syslog_debug "request: $(cat ${2})"
    echo "STATUS RESULT" > ${3}
    ;;
  command)
    syslog_debug "COMMAND: <id=${1}> <requestfile=${2}> <resultfile=${3}>"
    syslog_debug "request: $(cat ${2})"
    echo "COMMAND RESULT" > ${3}
    ;;
  *)
    exit 1
    ;;
esac

exit 0

作成したモジュールはサンプルコードと同じディレクトリに配置して、「5章イメージファイルのビルド手順」 に沿ってユーザーランドイメージをビルドしてください。 ビルドが完了したイメージファイルは node-eyeコントロールパネル からファームウェア更新機能を使って 書き込み、再起動が完了すると SACMコントロールパネル から操作する事ができるようになります。

6.4.3. モジュールのオペレーションの種類

各モジュールの case文に書く事のできる オペレーション の種類と、実行される条件は下記の通りです。

表6.10 各モジュールの case 文に書く事のできるオペレーションの種類と実行条件

オペレーション実行タイミング
startarmsdが SACM に接続を確立した直後
stopSACM または node-eye コントロールパネルで 再起動 を実行
reconfigSACMコントロールパネルで コンフィグ反映 を実行
statusSACMコントロールパネルで ステータス取得 を実行
commandSACMコントロールパネルで 任意コマンド を実行

モジュールを作る場合は、必ずしも全ての オペレーション に対応するcase文を書く必要はありません。 SACMコントロールパネルからの各オペレーションの実行方法については SACM マニュアル「オペレーション」タブ を参照してください。

6.4.4. モジュールの設計の注意点

個々のモジュールのタイムアウト時間は 180秒 です。 start/stop/command 等の オペレーション を呼び出してから、180秒以内に実行が終了しない 場合はモジュールの実行が中断されます。

モジュールの返り値はモジュールへのオペレーションの成功/失敗の判定に影響することはありません。 スクリプトのテスト等の用途で自由に設定することができます。

6.5. テンプレートセットを活用した複数Armadilloの一括設定

SACMコントロールパネルではテンプレートセットという仕組みを使って 複数のArmadilloに対して、同時にモジュールのコンフィグを実行することができます。 使い方は SACM service manual の テンプレートセットについてを参照してください。

6.6. Armadillo をnode-eye非対応の標準イメージに戻す

本章では node-eye 対応のイメージが書かれた Armadillo を、Armadillo-IoT ゲートウェイ G2の工場出荷状態にする方法を紹介します。 再び Armadillo に node-eye 対応のイメージを書き込む方法については 3章node-eye を体験する の 「「Armadillo の準備」」を参照してください。

Armadillo-IoT ゲートウェイ G2の工場出荷状態に戻すため使用するイメージファイルを下記に示します。

表6.11 工場出荷状態に戻すため使用するイメージファイル一覧

パーティションイメージファイル名
bootloaderloader-armadillo-iotg-std-[version].bin
kernellinux-aiotg-std-[version].bin.gz
userlandromfs-aiotg-std-[version].img.gz

[ティップ]

最新版のブートローダー、Linuxカーネルイメージファイルは Armadillo サイトから、 ユーザーランドイメージファイルはユーザーズサイトからダウンロード可能です。

node-eye非対応の標準イメージに戻すにはパーティション構成の変更を伴うため、イメージの書き換えは順を追って行う必要があります。 下記の順番でイメージを書き換えてください。また、書き換えは Hermit-At の保守モードで tftpdl を使用して行ってください。

  1. bootloader 領域の書き換え (loader-armadillo-iotg-std-[version].bin)

  2. 再起動

  3. kernel 領域の書き換え (linux-aiotg-std-[version].bin.gz)

  4. userland 領域の書き換え (romfs-aiotg-std-[version].img.gz)

6.6.1. bootloader 領域の書き換え

最初に、node-eye 対応ブートローダーイメージを書き込みます。 tftp を使用してイメージを書き換えるため、事前に、Armadillo からアクセスすることのできる有線LAN に接続できるようATDE5を起動して、ATDE5 の /var/lib/tftpboot/ ディレクトリにイメージファイルをコピーしておいてください。 Armadillo を保守モードで起動し、下記コマンドを実行してください。

hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --bootloader=loader-armadillo-iotg-std-[version].bin

6.6.2. 再起動

Armadillo の電源を入れなおして、再起動してください。

6.6.3. kernel 領域の書き換え

続いて、カーネルの書き換えを行います。下記のコマンドを実行してください。

hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024 --kernel=linux-aiotg-std-[version].bin.gz

6.6.4. userland 領域の書き換え

ユーザーランドの書き換えを行います。下記のコマンドを実行してください。

hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024  --userland=romfs-aiotg-std-[version].img.gz