node-eye マニュアル

バージョン 0.0.1: 初版発行(2016/01/25)

1. About node-eye

node-eye (ノード・アイ)は、IoTゲートウェイの稼働状況を確認するためのリソースの監視・管理機能、ファームウェア[^1]の機能追加やバグ修正に対応するリモートアップデート機能など、IoTゲートウェイの基本的な運用・管理機能を一括して提供するサービスです。node-eyeを使ったシステムのユースケース、サービスのオプションについては node-eye 概要 をご覧ください。

node-eye 概要

http://armadillo.atmark-techno.com/node-eye

[^1]: node-eye のドキュメント と WebUI では Armadillo のNORフラッシュメモリに書き込むイメージファイルのうち、kernel、 userland と recovery イメージファイルをファームウェアと総称しています。

node-eye は デバイス運用管理機能 のユーザーインターフェースとして、開発向けのSACMコントロールパネルと運用/保守向けのnode-eyeコントロールパネルという2種類のWebUIを用意しています。 WebUI に表示されるデバイスの状態表示や、ファームウェアの更新等の操作は、Armadilloにインストールされた armsd が SACM と相互に通信を行う事で実現しています。

armsd は、SACMとの間で通信を行うクライアントプログラムです。

参考:クライアント実装 - libarms 5.34 documentation

1.1. WebUI の概要

node-eye の デバイス運用管理サービス では node-eyeコントロールパネル と SACMコントロールパネル の2つの WebUI を用意しています。 node-eyeコントロールパネル は、デバイス状況の把握、ファームウェアアップデートなどが行える運用/保守向けのシンプルなUIとなっています。 SACMコントロールパネル は、モジュール[^2]のリモートコンフィグ、監視対象のデバイスの表示名の変更、電子メールによるネットワークからの接続/切断状態の通知を設定するのできる開発向けのUIとなっています。

- node-eye SACM
対象 運用/保守向け 開発向け
Ping/Traceroute/再起動
ログ(イベント/タスク)の表示
リソースグラフ表示
ファームウェアアップデート
電子メールによる接続状態通知
デバイスのラベル(表示名)の変更
モジュール[^2] のリモートコンフィグ

[^2]: node-eye では Armadillo で動作する監視対象のアプリケーションをモジュールという単位で管理します。

2. Getting started

Getting started では node-eye の WebUI を使って Armadillo-IoT ゲートウェイ スタンダードモデル G2 (以降、 Armadillo と表記)を対象に下記の基本的な機能を使う手順を説明します。

  • Armadilloの稼動状態の確認
  • ファームウェアのアップデート
  • ログの確認
  • オペレーターのアカウント追加/削除

2.1. node-eye を体験する

node-eyeの基本的な機能を体験するために、次のものを用意してください。

また、ArmadilloのNORフラッシュメモリの書き換えとシリアルコンソールを使ったブートローダーの操作を行うため、 Armadillo-IoT ゲートウェイ スタンダードモデル の スタートアップガイド製品マニュアル に記載された 操作を一通り確認する事をお勧めします。

Armadillo-IoT ドキュメント・ダウンロード

http://armadillo.atmark-techno.com/armadillo-iot/downloads

用意するもの チェック
Armadillo-IoT ゲートウェイ スタンダードモデル G2 開発セット
ATDE5
ライセンスファイル(squashfs-license-ne-[Distribution ID].img)
サービス登録完了通知書に記載のアカウント情報
DHCPサーバーが稼動している有線LANネットワーク

ライセンスファイルは、Armadilloの個体毎に対応したファイルを サービス登録完了通知書 と同時に提供しています。

2.1.1.1. Armadillo の準備

node-eye のサービスを利用する前に、管理対象の Armadillo の NORフラッシュメモリに node-eye に対応したイメージファイルが書き込まれている必要があります。

Armadilloにnode-eye対応イメージを書き込む際に、パーティション構成の変更を伴うため、イメージの書き換えは順を追って行う必要があります。 下記の順番でイメージを書き換えてください。

  1. bootloader 領域の書き換えと再起動
  2. recovery 領域の書き換え
  3. kernel 領域と userland 領域の書き換え
  4. license 領域の書き換え

また、イメージの書き換えは Hermit-At の保守モードで tftpdl を使用して行ってください。 license 領域用イメージのみ、Armadillo ごとに異なるイメージを書き込みます。ご注意ください。

ライセンスイメージファイル以外のイメージファイルは下記URLからダウンロードすることができます。

リージョン ファイル名
ブートローダー http://download.atmark-techno.com/node-eye/image/loader-armadillo-iotg-std-ne-v3.8.0-ne1.bin
リカバリ http://download.atmark-techno.com/node-eye/image/recovery-aiotg-std-ne1.img
カーネル http://download.atmark-techno.com/node-eye/image/linux-aiotg-std-v2.03-ne1.bin.gz
ユーザーランド http://download.atmark-techno.com/node-eye/image/romfs-aiotg-std-v2.06-ne1.img.gz
2.1.1.1.1. ブートローダーイメージの書き換え

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

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

tftpdl コマンドの詳細はArmadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアル「12.4. TFTP を使用してフラッシュメモリを書き換える」を参照してください

一度 Armadillo の電源を一度切断し、再度保守モードで起動してください。memmap コマンドを実行し、下記のようなパーティション構成となっていればnode-eye対応のブートローダーが動作しています。

hermit> memmap
0xa0000000:0xa1ffffff FLA all bf:8K bl:4x32K/l,255x128K/l
0xa0000000:0xa001ffff FLA bootloader bf:8K bl:4x32K/l
0xa0020000:0xa081ffff FLA recovery bf:8K bl:64x128K/l
0xa0820000:0xa0c1ffff FLA kernel bf:8K bl:32x128K
0xa0c20000:0xa1edffff FLA userland bf:8K bl:150x128K
0xa1ee0000:0xa1efffff FLA license bf:8K bl:1x128K/l
0xa1f00000:0xa1ffffff FLA config bf:8K bl:8x128K
0x80000000:0x87ffffff RAM dram-1
2.1.1.1.2. リカバリイメージの書込み

続いて、リカバリイメージを書き込みます。下記のコマンドを実行してください。

hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024 --recovery=recovery-aiotg-std-ne[VERSION].img
2.1.1.1.3. プライマリイメージの書き込み

プライマリイメージを書き込みます。下記のコマンドを実行してください。

hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024 --kernel=linux-iotg-std-v[BASE_VERSION]-ne[VERSION].bin.gz --userland=romfs-aiotg-std-v[BASE_VERSION]-ne[VERSION].img.gz
2.1.1.1.4. license 領域の書き込み

ライセンス領域用イメージを書き込みます。下記のコマンドを実行してください。 複数の Armadilloで node-eye を評価される場合、それぞれの個体に別々のファイル を書き込んでください。

hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --license=squashfs-license-ne-[Distribution ID].img

license 領域用イメージのファイル名は、squashfs-license-ne-[Distribution ID].imgとなっています。 Distribution ID は、WebUI から操作するデバイスを識別するために必要になるので、 必ず Distribution ID と書き込んだArmadillo の対応関係を控えておいてください。

2.1.1.1.5. Armadillo のconfigを初期化する

次のように"boot"コマンドを実行してLinuxシステムを起動してください。

hermit> boot
Uncompressing kernel...........................................................
................................................................................
................................................................................
done.
Uncompressing ramdisk...........................................................
................................................................................
................................................................................
................................................................................

起動が完了するとログインプロンプトが表示されます。rootユーザーでログインしてください。 ユーザー名: root パスワード: root

armadillo-iotg login: root
Password:
[root@armadillo-iotg (ttymxc1) ~]#

ログインできたら、"flatfsd"コマンドを使ってコンフィグ領域を初期化します。 初期化時には、node-eye対応イメージの"/etc/default"ディレクトリ以下のファイルが コンフィグ領域に保存され、且つ"/etc/config"ディレクトリにファイルが複製されます。

[root@armadillo-iotg (ttymxc1) ~]# flatfsd -w

flatfsd: Nonexistent or bad flatfs (-1), creating new one...
flatfsd: saving fs to partition 0, tstamp=263
flatfsd: Wrote 5941 bytes to flash in 2 seconds
flatfsd: Created 14 configuration files (3795 bytes)

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

2.1.1.1.6. Armadillo を起動する

保守モードで"boot"コマンドを実行し、Linuxシステムを起動すると、 Armadillo は起動後に自動的に SACM へ接続を行います。

SACM への接続が成功すると、起動から10分以内にnode-eyeコントロールパネル、SACMコントロールパネル でデバイスの接続状態が [切断中]から[接続中]に切り替わります。

これで Armadillo の準備は終了しました。実際に WebUI を操作してみましょう。

2.1.1.2. node-eyeコントロールパネルを使う
2.1.1.2.1. node-eyeコントロールパネルにログインする

http://apps.node-eye.com/device-management/ にアクセスし、node-eye サービス登録完了通知書 に記載されている node-eyeコントロールパネルアカウントを使用してログインしてください。

node-eye サービス登録完了通知書 に記載しているアカウントは管理者(admin)権限です。 第3者に漏れることの無いよう厳重に保管してください。 アカウントの追加/削除権限を持たないオペレーターアカウントは、本文"アカウントの追加/変更/削除を行う"の手順で追加することができます。

2.1.1.2.2. 全体の稼働状況を見る

node-eyeコントロールパネル にアクセスするとダッシュボードが表示されます。

ダッシュボードのスクリーンショット

この画面ではnode-eyeに登録されているデバイスの接続状況の一覧、 直近5件のタスクおよびイベントが表示されます。

接続中/切断中の列に表示された台数をクリックすることで、それぞれの状態にあるデバイスの一覧を表示 することができます。

2.1.1.2.3. 各デバイスの稼働状況を見る

メニューから[デバイス]をクリックするとデバイスの一覧を見ることができます。

デバイス一覧のスクリーンショット

この画面では、「グループ」「接続状態」「設定状態」「デバイス名/SAコード」で目的のデバイスを絞り込み、探すことができます。 目的のデバイスをクリックすることで、デバイスの詳細な情報を確認できます。

デバイスviewのスクリーンショット

また、複数のデバイスにチェックを入れ、一括で「ファームウェアアップデート」「再起動」「コマンド実行」「リソース表示」を行うことも可能です。

デバイス一覧で複数にチェックを入れているスクリーンショット

2.1.1.2.4. リソースモニタリングを行う

メニューから[デバイス]を選択します リソースを確認したいデバイスのチェックボックスを選択します。

デバイス一覧で複数にチェックを入れているスクリーンショット

画面下の[リソース表示]をクリックすると、 CPU使用率,転送量等のデバイスのリソースが表示されます。

リソース表示のスクリーンショット

2.1.1.2.5. ファームウェアアップデートを行う

本章では、node-eye コントロールパネルを使って Armadillo のファームウェアアップデートを実行する方法を説明します。

アップデートで書き込むファイルは、Armadillo が接続されているネットワーク経由でダウンロードする事が可能な Webサーバーに公開されている必要があります。ここでは、例としてアットマークテクノが公開しているnode-eye対応のイメージファイルを使います。

まず、メニューから[デバイス]を選択します

デバイス一覧のスクリーンショット

デバイスの中から[接続状態]が 接続中 になっているデバイスのチェックボックスを選択し、画面下の[ファームウェアアップデート]をクリックします。

ファームウェアアップデートのスクリーンショット

フォームに下記のイメージファイルのURLを入力してください。

リージョン ファイル名
カーネル http://download.atmark-techno.com/node-eye/image/linux-aiotg-std-v2.03-ne1.bin.gz
ユーザーランド http://download.atmark-techno.com/node-eye/image/romfs-aiotg-std-v2.06-ne1.img.gz
リカバリ http://download.atmark-techno.com/node-eye/image/recovery-aiotg-std-ne1.img

「アップデート完了時に再起動する」 にチェックを入れて [実行]をクリックしファームウェアアップデートを開始します。

ファームウェアのアップデートはnode-eyeコントロールパネルから与えたURLを使って、Armadilloがダウンロードを行います。上記以外の新たにビルドしたイメージファイルを使う場合は、ArmadilloからアクセスすることのできるHTTPサーバーにファイルを配置してください。

ファイルをHTTPサーバーに配置する際には、ファイルのMD5チェックサムを "~.md5" という拡張子を付けて同階層からダウンロードできるようにしてください。MD5チェックサムはファームウェアアップデートの際にファイルの破損を検知するために同時にダウンロードされます。

「アップデート完了時に再起動する」 にチェックを入れない場合は、Armadillo が再起動するまで古いファームウェアで稼動し続けます。

2.1.1.2.6. ログを見る

ログにはタスク、イベントの2つがあり、それぞれ、表示される内容が異なります。

[タスク]ではデバイスに対して再起動やコマンド実行を行った結果を参照することができます。 [イベント]では「デバイスの状態が接続中から切断中に変化した」など、デバイスに関するイベントを参照することができます。

[タスク]の一覧を見るには、メニューから[ログ]->[タスク]をクリックしてください。

タスクのスクリーンショット

[イベント]の一覧を見るには、メニューから[ログ]->[イベント]をクリックしてください。

イベントのスクリーンショット

2.1.1.2.7. アカウントの追加/変更/削除を行う

メニューから[アカウント]をクリックします。 この画面から、オペレーター向けのアカウント作成を行います。

管理者権限のアカウントのみ、この操作が行えます オペレーター権限ではメニューに[アカウント]が表示されません

  • アカウントの作成
    • [新規アカウント]をクリック 新規アカウントボタンを囲んだスクリーンショット
    • 項目を入力し[作成]をクリック 必要項目を入力して、作成ボタンを囲んだスクリーンショット
    • 作成したアカウントの詳細画面が表示されます。 作成したアカウントの詳細画面のスクリーンショット
    • メニューの[アカウント]をクリックしてユーザー一覧を表示すると、作成したユーザーが増えていることがわかります。 アカウント一覧のスクリーンショット
  • アカウントの編集
    • ユーザーをクリック "アカウントの作成"で作成したアカウントを囲んだスクリーンショット
    • [編集]をクリック 編集ボタンを囲んだスクリーンショット
    • "名前"を変更し[保存]をクリック 名前を変更し保存ボタンを囲んだスクリーンショット
  • アカウントの削除
    • ユーザーをクリック "アカウントの作成"で作成したアカウントを囲んだスクリーンショット
    • [削除]をクリックし、[OK]をクリック 削除を囲み、ポップアップしたOKをクリックするスクリーンショット
    • [OK]をクリックした後に、ユーザー一覧から選択したユーザーが消えていることが確認できます アカウント一覧のスクリーンショット
2.1.1.3. SACMを使う
2.1.1.3.1. SACMへログインする

https://atmark-techno.sacm.jp/user/ にアクセスし、登録完了通知書 に記載されている SACM コントロールパネルアカウント を使用してログインしてください。

2.1.1.3.2. リモートコンフィグを行う

本章では、DHCP で稼働してる Armadillo を固定IPにする方法を例に、リモートコンフィグ機能の使い方を紹介します。 その他の設定方法については 本文 "Howto" の "SACMからネットワークインターフェースの設定を行う" を参照してください。

  • メニューから[SA]をクリックし、[接続中]になっている Armadillo をクリック SA一覧で接続中のSAをクリックするスクリーンショット

  • SAのメニューから[コンフィグ]をクリックして、ページ下部の[コンフィグ変更]をクリック SAのviewからコンフィグをクリックし、コンフィグ変更を押すスクリーンショット

モジュール0のコンフィグを以下のように書き換えます。 モジュール0のコンフィグを編集するスクリーンショット

モジュール0の設定項目は Armadillo の /etc/network/interfaces に反映されます。 実際のネットワークの構成にあわせて値を決めてください。

VERSION=1
interface_eth0=enable
interface_eth0_metric=1
interface_eth0_type=static
interface_eth0_address="192.0.2.10"
interface_eth0_netmask="255.255.255.0"
interface_eth0_network="192.0.2.0"
interface_eth0_broadcast="192.0.2.255"
interface_eth0_gateway="192.0.2.1"

[コンフィグ変更]をクリックし、[コンフィグ反映]をクリックします。

コンフィグ変更 -> コンフィグ反映

反映スケジュールを[即時反映]にチェックを入れて、[コンフィグ反映]をクリックします。

コンフィグ反映をクリックするスクリーンショット

反映が完了した後に、Armadillo に接続したシリアルコンソールでifconfigを実行すると、ネットワークインターフェースにモジュール0のコンフィグが反映されている事を確認することができます。

[Armadillo ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:11:0C:18:10:83
          inet addr:192.0.2.10  Bcast:192.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::211:cff:fe18:1083/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17608 errors:0 dropped:1 overruns:0 frame:0
          TX packets:1488 errors:3 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2584712 (2.4 MiB)  TX bytes:194540 (189.9 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:60 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5280 (5.1 KiB)  TX bytes:5280 (5.1 KiB)

リモートコンフィグ機能によるネットワーク設定の内容に問題があり、SACM と接続できなくなった場合、 Armadillo で動作している armsd が 約5分後にコンフィグ反映直前の設定に戻します。

2.1.1.3.3. フォルダ機能を使う

Armadillo の数が多い場合や拠点ごとに管理を行いたい場合に便利なフォルダ機能を紹介します。 フォルダ分けすることにより、フォルダ単位でコマンドが実行できるようになったり、コンフィグの一斉反映がより簡単に行なえるようになります。

メニューから[フォルダ]をクリックし、[フォルダ追加]をクリック

フォルダのviewのスクリーンショット

任意のフォルダ名を入力し[フォルダ追加]をクリック

入力画面のスクリーンショット

フォルダ一覧から、先ほど入力したフォルダ名をクリック

フォルダ一覧のSS

フォルダにArmadilloを登録するため、[所属SA変更]をクリック

所属SA変更をクリックするSS

任意のSAにチェックを入れ、[所属SA変更]をクリック

SAにチェックを入れるSS

チェックを入れたSAが表示されます。

フォルダのviewのSS

2.1.1.3.4. 接続状態が変化した時の通知先を設定する

SACMコントロールパネルでは、Armadilloと SACM の接続状態が変化した時に、電子メールを送信する機能を設定する事ができます。

接続状態が変化するのは以下のようなことが考えられます。

  • [接続中] → [切断中]: Armadilloがリカバリイメージで起動した
  • [接続中] → [切断中]: Armadilloと SACM 間のネットワークに障害が発生し通信できなくなった
  • [切断中] → [接続中]: Armadilloが SACM 間のネットワークに障害が解消され通信できるようになった

[接続中] → [切断中] の接続状態の変化には実際に通信が途絶してから、最大で15分程度かかります

[切断中] → [接続中] の接続状態の変化には実際に通信が確立してから、最大で10分程度かかります

通知先の設定には SACMコントロールパネル の 監視グループ を使います。 監視グループ には複数の Armadillo と、通知先のメールアドレスを登録することができます。

まず、監視グループの作成を行います。 メニューから[監視]をクリックし、[監視グループ追加]をクリック

監視タブのviewのスクリーンショット

任意の監視グループ名を入力し、[監視グループ追加]をクリック

入力画面のスクリーンショット

これで監視グループの作成は完了です。次に監視グループに電子メールの送信先を設定します。 監視グループ一覧から、先ほど入力した監視グループ名をクリック

監視タブのviewのスクリーンショット

[通知先メールアドレス変更]をクリック

監視グループのviewのスクリーンショット

任意の通知先メールアドレスを入力し、[通知先メールアドレス変更]をクリック

監視グループのeditのスクリーンショット

これでArmadilloの動作状況が変化した時の通知先を設定することができました。

監視グループのviewのスクリーンショット2

最後に、監視グループにArmadilloを登録します [監視対象変更]をクリック

監視タブのviewで*監視対象変更*が囲まれたスクリーンショット

監視グループに追加したいArmadilloにチェックを入れ[監視対象変更]をクリック

Armadilloにチェックが入ったスクリーンショット

これで監視グループに登録したArmadilloの動作状況が変わった時に、電子メールが送信されるようになりました。 監視タブのviewのスクリーンショット3

電子メールが送信されることを確認するには、登録したArmadilloのEthernetケーブルを外すか、 その時点で[切断中]となっているArmadilloを起動し、SACMと接続する必要があります。

SACM は一時的なネットワーク障害と区別するため、[接続中]から[切断中]に状態の表示を 変更するまでに15分の猶予期間を設けています。 そのため、Ethernetケーブルを外す等の方法で SACMとの接続を遮断した場合は15分後に、 電子メールの送信 と node-eyeコントロールパネル、SACMコントロールパネル の表示が変化します。

2.1.1.3.5. その他

この他の使い方や、詳しい情報は http://manual.sacm.jp/ を参照してください

3. For developers

3.1. ソフトウェア仕様

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

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

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

物理アドレス パーティション名 サイズ ソフトウェア
0xA0000000 - 0xA001FFFF bootloader 128kByte ブートローダーイメージ
0xA0020000 - 0xA041FFFF kernel 4MByte Linuxカーネルイメージ
0xA0420000 - 0xA1EFFFFF userland 26.875Mbyte ユーザーランドイメージ
0xA1F00000 - 0xA1FFFFFF config 1MByte アプリケーションの設定情報など




node-eye対応

物理アドレス パーティション名 サイズ ソフトウェア
0xA0000000 - 0xA001FFFF bootloader 128kByte node-eye 対応ブートローダーイメージ
0xA0020000 - 0xA081FFFF recovery 8MByte リカバリイメージ
0xA0820000 - 0xA0C1FFFF kernel 4MByte Linuxカーネルイメージ(ユーザー作成)
0xA0C20000 - 0xA1EDFFFF userland 18.75Mbyte ユーザーランドイメージ(ユーザー作成)
0xA1EE0000 - 0xA1EFFFFF license 128kByte ハードウェア固有情報
0xA1F00000 - 0xA1FFFFFF config 1MByte アプリケーションの設定情報など




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

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

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

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

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

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

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

3.1.3. リカバリイメージ

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

リカバリイメージによる Armadillo の起動が起きる条件を次に示します。

  • ファームウェアアップデートが正常に完了していない状態で、Armadilloが再起動した
  • ファームウェアアップデートは完了したが、更新したイメージで起動できなかった
3.1.3.1. リカバリイメージの目的

リカバリイメージの目的は、ファームウェアアップデート機能を使ってLinux カーネルまたはユーザーランドに誤ったイメージを書き込んだり、書き込みのの最中に電源が遮断されて書き込みが完了せず再起動に失敗した場合、リカバリイメージによる再起動が実行されてnode-eyeコントロールパネルからの復旧ができるようにすることです。

3.1.3.2. リカバリイメージの特徴
3.1.3.2.1. インストールされているアプリケーション

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

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

[PC ]$ cd atmark-dist/vendors/AtmarkTechno
[PC ]$ diff Armadillo-IoTG-Std-NE/config.vendor Armadillo-IoTG-Std-NE.Recover/config.vendor
3.1.3.2.2. SACMコントロールパネル, node-eye コントロールパネル上の表示

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

3.1.4. 監視方法

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

  • 送信間隔

    • 5分に1回 Heartbeatを Armadilloから送信
  • 状態変化

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

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

3.1.5. リモートコンフィグ

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

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

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

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

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

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

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

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

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

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

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

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

3.1.6. ネットワーク設定

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

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

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

3.1.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との接続が確認されると、ネットワーク設定のシーケンスは終了となります。

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

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

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

  • kernel 領域
  • userland 領域
  • recovery 領域

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

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

3.2. イメージファイルのビルド手順

本章では、ATDE5を使って node-eye対応のイメージファイルをビルドする方法を説明します。

以下の手順は「リカバリイメージを作成する場合」を例に書かれていますが、kernel/userland領域に書き込む、標準Linuxカーネル イメージ/標準ユーザーランドイメージを作成する場合も [5. ベンダー/プロダクト名の選択] を除いて同様の手順となります。

ATDE5での操作は全てrootユーザーではなく、一般ユーザーで行ってください。

3.2.1. ソースコードの準備

下記URLからソースコードをダウンロードします。

ファイル名 説明
http://download.atmark-techno.com/node-eye/source/linux-3.14-at4-ne1.tar.gz Linux カーネル
http://download.atmark-techno.com/node-eye/source/atmark-dist-20151218-ne1.tar.gz Atmark-dist(ユーザーランド)
http://armadillo.atmark-techno.com/files/downloads/armadillo-wlan/source/driver/AWL13/awl13-3.0.2-3.tar.gz AWL13デバイスドライバ

3.2.2. アーカイブの展開

各ソースコードアーカイブを展開します。

[ATDE ~]$ ls
atmark-dist-[version]-ne[version].tar.gz    awl13-[version].tar.gz linux-3.14-at[version]-ne[version].tar.gz
[ATDE ~]$ tar zxf atmark-dist-[version].t ar.gz
[ATDE ~]$ tar zxf awl13-[version].tar.gz
[ATDE ~]$ tar zxf linux-3.14-at[version].tar.gz
[ATDE ~]$ ls
atmark-dist-[version]-ne[version]           awl13-[version]        linux-3.14-at[version]-ne[version]
atmark-dist-[version]-ne[version].tar.gz    awl13-[version].tar.gz linux-3.14-at[version]-ne[version].tar.gz

3.2.3. シンボリックリンクの作成

Atmark Distに、AWL13、Linuxカーネルのシンボリックリンクを作成します。

[ATDE ~]$ cd atmark-dist-[version]-ne[version]
[ATDE ~/atmark-dist-[version]-ne[version]]$ ln -s ../awl13-[version] awl13
[ATDE ~/atmark-dist-[version]-ne[version]]$ ln -s ../linux-3.14-at[version]-ne[version] linux-3.x

以降のコマンド入力例では、各ファイルからバージョンを省略した表記を用います。

3.2.4. コンフィギュレーションの開始

Atmark Distディレクトリに入り、コンフィギュレーションを行います。ここでは、menuconfigを利用します。

[ATDE ~]$ cd atmark-dist
[ATDE ~/atmark-dist]$ make menuconfig
 atmark-dist v1.45.0 Configuration
 ------------------------------------------------------------------------------
  +------------------------------- Main Menu -------------------------------+
  |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
  |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
  |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.     |
  |  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable     |
  | +---------------------------------------------------------------------+ |
  | |              Vendor/Product Selection  --->                         | |
  | |              Kernel/Library/Defaults Selection  --->                | |
  | |              ---                                                    | |
  | |              Load an Alternate Configuration File                   | |
  | |              Save Configuration to an Alternate File                | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | +---------------------------------------------------------------------+ |
  +-------------------------------------------------------------------------+
  |                    <Select>    < Exit >    < Help >                     |
  +-------------------------------------------------------------------------+

3.2.5. ベンダー/プロダクト名の選択

メニュー項目は、上下キーで移動することができます。下部のSelect/Exit/Helpは左右キーで移動することができます。選択するにはEnterキーを押下します。 "Vendor/Product Selection --->"に移動してEnterキーを押下します。 Vendorには "AtmarkTechno" を選択し、AtmarkTechno Productsには "Armadillo-IoTG-Std-NE.Recover" を選択します。

 atmark-dist v1.45.0 Configuration
 ------------------------------------------------------------------------------
  +----------------------- Vendor/Product Selection ------------------------+
  |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
  |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
  |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.     |
  |  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable     |
  | +---------------------------------------------------------------------+ |
  | |       --- Select the Vendor you wish to target                      | |
  | |       (AtmarkTechno) Vendor                                         | |
  | |       --- Select the Product you wish to target                     | |
  | |       (Armadillo-IoTG-Std-NE.Recover) AtmarkTechno Products         | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | +---------------------------------------------------------------------+ |
  +-------------------------------------------------------------------------+
  |                    <Select>    < Exit >    < Help >                     |
  +-------------------------------------------------------------------------+

3.2.6. デフォルトコンフィギュレーションの適用

前のメニューに戻るには、"Exit"に移動してEnterキーを押下します。 続いて、"Kernel/Library/Defaults Selection --->"に移動してEnterキーを押下します。"Default all settings (lose changes)"に移動して"Y"キーを押下します。押下すると"[*]"のように選択状態となります。

 atmark-dist v1.45.0 Configuration
 ------------------------------------------------------------------------------
  +------------------- Kernel/Library/Defaults Selection -------------------+
  |  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
  |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
  |  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.     |
  |  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable     |
  | +---------------------------------------------------------------------+ |
  | |              --- Kernel is linux-3.x                                | |
  | |              (default) Cross-dev                                    | |
  | |              (None) Libc Version                                    | |
  | |              [*] Default all settings (lose changes)                | |
  | |              [ ] Customize Kernel Settings                          | |
  | |              [ ] Customize Vendor/User Settings                     | |
  | |              [ ] Update Default Vendor Settings                     | |
  | |                                                                     | |
  | |                                                                     | |
  | |                                                                     | |
  | +---------------------------------------------------------------------+ |
  +-------------------------------------------------------------------------+
  |                    <Select>    < Exit >    < Help >                     |
  +-------------------------------------------------------------------------+

3.2.7. コンフィギュレーションの終了

前のメニューに戻るため、"Exit"に移動してEnterキーを押下します。コンフィギュレーションを抜けるためにもう一度"Exit"に移動してEnterキーを押下します。

3.2.8. コンフィギュレーションの確定

コンフィギュレーションを確定させるために"Yes"に移動してEnterキーを押下します。

 atmark-dist v1.45.0 Configuration
 ------------------------------------------------------------------------------



          +----------------------------------------------------------+
          |   Do you wish to save your new kernel configuration?     |
          +----------------------------------------------------------+
          |                   < Yes >      <  No  >                  |
          +----------------------------------------------------------+

3.2.9. ビルド

コンフィギュレーションが完了するので、続いてビルドを行います。 ビルドは"make"コマンドを実行します。

[ATDE ~/atmark-dist]$ make

ビルドログが表示されます。ビルドするPCのスペックにもよりますが、数分から十数分程度かかります。

3.2.10. イメージファルの生成確認

ビルドが終了すると、atmark-dist/images/ディレクトリ以下にイメージファイルが作成されています。Armadillo-IoT では圧縮済みのイメージ(拡張子が".gz"のもの)を利用します。

[ATDE ~/atmark-dist]$ ls images/
linux.bin  linux.bin.gz  romfs.img  romfs.img.gz

4. Howto

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

復旧を行うための手順は以下の通りです。

  1. リカバリイメージで起動していることを確認する
  2. リカバリイメージからプライマリイメージを書き換える
  3. 書き込みを行ったイメージの確認

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

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

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

"状態" が [成功] となった場合は 復旧作業ができます "状態" が [失敗] となった場合は 復旧作業ができません

[成功] と表示された場合には、リカバリイメージで起動していることが確認されたので次の手順に進んでください。 [失敗] と表示された場合には、何らかの原因で Armadillo と SACM が接続されていないため、Armadillo を直接確認する必要があります。

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

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

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

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

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

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

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

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

4.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

4.2.2. 起動しないプライマリイメージを Armadillo から接続可能なwebサーバーに配置する

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

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

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

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

ファームウェアアップデートの画面

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

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

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

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

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

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

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

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

SACM の操作手順については、Getting started の "リモートコンフィグを行う" を参照してください。

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

4.3.1.1. コンフィグの書式

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

VERSION=[version]

[key]=[value]
[key]=[value]
     :
  • version
    • モジュール内の処理とコンフィグの内容を対応付けるために使用するバージョン番号です
    • Armadillo-IoT G2 の標準イメージ(node-eye対応)では "1" 固定となっています
  • key
    • コンフィグの変数名です
    • 同一の key を同じコンフィグ内に書くと、後に書かれたものが使用されます
    • key の前に#をつけることで、コメントアウトできます
  • value
    • key に対応する値です
4.3.1.2. 使用可能な key 一覧
4.3.1.2.1. eth0

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

key value (参考例) 説明
interface_eth0 enable eth0 の有効/無効 (enable / disable)
interface_eth0_type static IPアドレスの設定方法 (dhcp / static)
interface_eth0_address 192.168.10.1 IPアドレス
interface_eth0_netmask 255.255.0.0 ネットマスク
interface_eth0_network 192.168.0.0 ネットワーク
interface_eth0_broadcast 192.168.255.255 ブロードキャストアドレス
interface_eth0_gateway 192.168.0.1 ゲートウェイ
interface_eth0_metric 1 メトリック値
4.3.1.2.2. umts0

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

key value (参考例) 説明
interface_umts0 enable eth0 の有効/無効 (enable / disable)
interface_umts0_type dhcp IPアドレスの設定方法 (dhcp のみサポート)
interface_umts0_apn APN アクセスポイント名 (APN)
interface_umts0_id "user name" 認証ID (ユーザー名)
interface_umts0_auth_type CHAP 認証方式
interface_umts0_pass "password" パスワード
interface_umts0_pdp_type IP PDPタイプ
interface_umts0_metric 20 メトリック値
4.3.1.2.3. awlan0

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

key value (参考例) 説明
interface_awlan0 enable enable または disable
interface_awlan0_type dhcp dhcp または static
interface_awlan0_address 192.168.10.2 IPアドレス
interface_awlan0_netmask 255.255.0.0 ネットマスク
interface_awlan0_network 192.168.0.0 ネットワーク
interface_awlan0_broadcast 192.168.255.255 ブロードキャストアドレス
interface_awlan0_gateway 192.168.0.1 ゲートウェイ
interface_awlan0_metric 40 メトリック値
interface_awlan0_passphrase "password" パスフレーズ
interface_awlan0_cryptmode "WPA2-AES" 暗号化方式 *1
interface_awlan0_essid "mywpa2aes" ESSID
interface_awlan0_channel 1 チャンネル (interface_awlan0_wireless_mode が master の時のみ設定可能)
interface_awlan0_wireless_mode managed 接続モード (ステーションモード(STA): managed / アクセスポイントモード(AP): master)
4.3.1.2.4. resolv.conf

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

key 説明
resolv_conf_search resolv.conf の search
resolv_conf_nameserver resolv.conf の nameserver

4.3.2. 設定例

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

4.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
4.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
4.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"
4.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"

4.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/armsd/scripts/line の設定ファイルは、以下のいずれかの方法で変更できます。

  • [A] コンフィグ領域の設定ファイルを変更する
  • [B] ユーザーランドの(デフォルトの)設定ファイルを変更する
  • [C] USBメモリーに入れた設定ファイルを取り込む

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

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

  • Armadillo のネットワークインターフェースに 有線LAN を使用している
  • Armadillo が DHCP でアドレスを取得できる環境である
  • サービスアダプタの通信要件を満たしている

それぞれの方法の特徴を簡単に紹介します。

[A] コンフィグ領域の設定ファイルを変更する

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

[B] ユーザーランドの(デフォルトの)設定ファイルを変更する

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

[C] USBメモリーに入れた設定ファイルを取り込む

USBメモリー を Armadillo に接続して起動することで、自動的に設定を保存する使い方です。 PCを使わずに設定することができるので、多数のArmadilloを連続してセットアップする場合に 向いています。

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

4.3.3.1. [A] 設定ファイルを変更し、コンフィグ領域に保存する

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"

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

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

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

4.3.3.2. [B] 設定ファイルを変更し、イメージファイルを書き込む

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

/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

編集内容は [A] で紹介しているものを参考にしてください。

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

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

[Armadillo ~]# flatfsd -w
4.3.3.3. [C] 設定ファイルをUSBメモリーに入れ、設定を取り込む

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

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

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

4.3.3.3.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]

表:ディレクトリの用途

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

4.3.3.4. 使用可能な key 一覧
4.3.3.4.1. eth0 固定IP
key 説明
STATIC_ADDRESS
STATIC_NETMASK
STATIC_NETWORK
STATIC_BROADCAST
STATIC_GATEWAY
4.3.3.4.2. umts0
key 説明
MOBILE_ID
MOBILE_PASS
MOBILE_APN
MOBILE_AUTH_TYPE
MOBILE_PDP_TYPE
4.3.3.4.3. awlan0

現在、line.confでは awlan0 を使うことはできません。SACMとの通信確立network.confで有効にしてください。

4.3.3.4.4. resolv
key 説明
RESOLV_SEARCH
RESOLV_NAMESERVER
4.3.3.5. 設定例

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"

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

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

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

4.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つだけがモジュールの実装として機能します。

4.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:    "
    ;;
  stop)
    syslog_debug "STOP: "
    ;;
  reconfig)
    syslog_debug "RECONFIG:    "
    ;;
  status)
    syslog_debug "STATUS:   "
    syslog_debug "request: $(cat ${2})"
    echo "STATUS RESULT" > ${3}
    ;;
  command)
    syslog_debug "COMMAND:   "
    syslog_debug "request: $(cat ${2})"
    echo "COMMAND RESULT" > ${3}
    ;;
  *)
    exit 1
    ;;
esac

exit 0

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

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

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

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

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

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

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

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

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

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

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

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

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

パーティション イメージファイル名
bootloader loader-armadillo-iotg-std-[version].bin
kernel linux-aiotg-std-[version].bin.gz
userland romfs-aiotg-std-[version].img.gz

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

Armadillo-IoT ドキュメント・ダウンロード

http://armadillo.atmark-techno.com/armadillo-iot/downloads

Armadillo-IoT ユーザーランド イメージファイル

https://users.atmark-techno.com/armadillo-iot/userland-image/license_agreement

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)

4.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

[1]: tftpdl コマンドの詳細はArmadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアル「12.4. TFTP を使用してフラッシュメモリを書き換える」を参照

4.6.2. 再起動

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

4.6.3. kernel 領域の書き換え

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

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

4.6.4. userland 領域の書き換え

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

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

5. 機能制限

開発中のnode-eyeの実装には次の制限があります。

  • 複数のネットワークインターフェースをDHCPで設定した場合に、resolve.confの上書きによりSACMに接続できない場合がある
  • 複数のネットワークインターフェースをDHCPで設定した場合に、インターネットにルーティングしないネットワークセグメントに接続したネットワークインターフェースが含まれる場合、SACMに接続できない場合がある
  • /etc/armasd/line.confで無線LAN(AWL13)を有効にしても使用されない

6. 改訂履歴

バージョン 年月日 改訂内容
0.0.1 2016/01/25 初版発行