バージョン 0.0.1: 初版発行(2016/01/25)
node-eye (ノード・アイ)は、IoTゲートウェイの稼働状況を確認するためのリソースの監視・管理機能、ファームウェア[^1]の機能追加やバグ修正に対応するリモートアップデート機能など、IoTゲートウェイの基本的な運用・管理機能を一括して提供するサービスです。node-eyeを使ったシステムのユースケース、サービスのオプションについては node-eye 概要 をご覧ください。
node-eye 概要
[^1]: node-eye のドキュメント と WebUI では Armadillo のNORフラッシュメモリに書き込むイメージファイルのうち、kernel、 userland と recovery イメージファイルをファームウェアと総称しています。
node-eye は デバイス運用管理機能 のユーザーインターフェースとして、開発向けのSACMコントロールパネルと運用/保守向けのnode-eyeコントロールパネルという2種類のWebUIを用意しています。 WebUI に表示されるデバイスの状態表示や、ファームウェアの更新等の操作は、Armadilloにインストールされた armsd が SACM と相互に通信を行う事で実現しています。
armsd は、SACMとの間で通信を行うクライアントプログラムです。
node-eye の デバイス運用管理サービス では node-eyeコントロールパネル と SACMコントロールパネル の2つの WebUI を用意しています。 node-eyeコントロールパネル は、デバイス状況の把握、ファームウェアアップデートなどが行える運用/保守向けのシンプルなUIとなっています。 SACMコントロールパネル は、モジュール[^2]のリモートコンフィグ、監視対象のデバイスの表示名の変更、電子メールによるネットワークからの接続/切断状態の通知を設定するのできる開発向けのUIとなっています。
- | node-eye | SACM |
---|---|---|
対象 | 運用/保守向け | 開発向け |
Ping/Traceroute/再起動 | ✔ | ✔ |
ログ(イベント/タスク)の表示 | ✔ | ✔ |
リソースグラフ表示 | ✔ | ✔ |
ファームウェアアップデート | ✔ | |
電子メールによる接続状態通知 | ✔ | |
デバイスのラベル(表示名)の変更 | ✔ | |
モジュール[^2] のリモートコンフィグ | ✔ |
[^2]: node-eye では Armadillo で動作する監視対象のアプリケーションをモジュールという単位で管理します。
Getting started では node-eye の WebUI を使って Armadillo-IoT ゲートウェイ スタンダードモデル G2 (以降、 Armadillo と表記)を対象に下記の基本的な機能を使う手順を説明します。
node-eyeの基本的な機能を体験するために、次のものを用意してください。
また、ArmadilloのNORフラッシュメモリの書き換えとシリアルコンソールを使ったブートローダーの操作を行うため、 Armadillo-IoT ゲートウェイ スタンダードモデル の スタートアップガイド と 製品マニュアル に記載された 操作を一通り確認する事をお勧めします。
Armadillo-IoT ドキュメント・ダウンロード
用意するもの | チェック |
---|---|
Armadillo-IoT ゲートウェイ スタンダードモデル G2 開発セット | |
ATDE5 | |
ライセンスファイル(squashfs-license-ne-[Distribution ID].img) | |
サービス登録完了通知書に記載のアカウント情報 | |
DHCPサーバーが稼動している有線LANネットワーク |
ライセンスファイルは、Armadilloの個体毎に対応したファイルを サービス登録完了通知書 と同時に提供しています。
node-eye のサービスを利用する前に、管理対象の Armadillo の NORフラッシュメモリに node-eye に対応したイメージファイルが書き込まれている必要があります。
Armadilloにnode-eye対応イメージを書き込む際に、パーティション構成の変更を伴うため、イメージの書き換えは順を追って行う必要があります。 下記の順番でイメージを書き換えてください。
また、イメージの書き換えは Hermit-At の保守モードで tftpdl を使用して行ってください。 license 領域用イメージのみ、Armadillo ごとに異なるイメージを書き込みます。ご注意ください。
ライセンスイメージファイル以外のイメージファイルは下記URLからダウンロードすることができます。
最初に、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
続いて、リカバリイメージを書き込みます。下記のコマンドを実行してください。
hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024 --recovery=recovery-aiotg-std-ne[VERSION].img
プライマリイメージを書き込みます。下記のコマンドを実行してください。
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
ライセンス領域用イメージを書き込みます。下記のコマンドを実行してください。 複数の 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 の対応関係を控えておいてください。
次のように"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の電源を入れなおして再起動してください。
保守モードで"boot"コマンドを実行し、Linuxシステムを起動すると、 Armadillo は起動後に自動的に SACM へ接続を行います。
SACM への接続が成功すると、起動から10分以内にnode-eyeコントロールパネル、SACMコントロールパネル でデバイスの接続状態が [切断中]から[接続中]に切り替わります。
これで Armadillo の準備は終了しました。実際に WebUI を操作してみましょう。
http://apps.node-eye.com/device-management/ にアクセスし、node-eye サービス登録完了通知書 に記載されている node-eyeコントロールパネルアカウントを使用してログインしてください。
node-eye サービス登録完了通知書 に記載しているアカウントは管理者(admin)権限です。 第3者に漏れることの無いよう厳重に保管してください。 アカウントの追加/削除権限を持たないオペレーターアカウントは、本文"アカウントの追加/変更/削除を行う"の手順で追加することができます。
node-eyeコントロールパネル にアクセスするとダッシュボードが表示されます。
この画面ではnode-eyeに登録されているデバイスの接続状況の一覧、 直近5件のタスクおよびイベントが表示されます。
接続中/切断中の列に表示された台数をクリックすることで、それぞれの状態にあるデバイスの一覧を表示 することができます。
メニューから[デバイス]をクリックするとデバイスの一覧を見ることができます。
この画面では、「グループ」「接続状態」「設定状態」「デバイス名/SAコード」で目的のデバイスを絞り込み、探すことができます。 目的のデバイスをクリックすることで、デバイスの詳細な情報を確認できます。
また、複数のデバイスにチェックを入れ、一括で「ファームウェアアップデート」「再起動」「コマンド実行」「リソース表示」を行うことも可能です。
メニューから[デバイス]を選択します リソースを確認したいデバイスのチェックボックスを選択します。
画面下の[リソース表示]をクリックすると、 CPU使用率,転送量等のデバイスのリソースが表示されます。
本章では、node-eye コントロールパネルを使って Armadillo のファームウェアアップデートを実行する方法を説明します。
アップデートで書き込むファイルは、Armadillo が接続されているネットワーク経由でダウンロードする事が可能な Webサーバーに公開されている必要があります。ここでは、例としてアットマークテクノが公開しているnode-eye対応のイメージファイルを使います。
まず、メニューから[デバイス]を選択します
デバイスの中から[接続状態]が 接続中 になっているデバイスのチェックボックスを選択し、画面下の[ファームウェアアップデート]をクリックします。
フォームに下記のイメージファイルのURLを入力してください。
「アップデート完了時に再起動する」 にチェックを入れて [実行]をクリックしファームウェアアップデートを開始します。
ファームウェアのアップデートはnode-eyeコントロールパネルから与えたURLを使って、Armadilloがダウンロードを行います。上記以外の新たにビルドしたイメージファイルを使う場合は、ArmadilloからアクセスすることのできるHTTPサーバーにファイルを配置してください。
ファイルをHTTPサーバーに配置する際には、ファイルのMD5チェックサムを "~.md5" という拡張子を付けて同階層からダウンロードできるようにしてください。MD5チェックサムはファームウェアアップデートの際にファイルの破損を検知するために同時にダウンロードされます。
「アップデート完了時に再起動する」 にチェックを入れない場合は、Armadillo が再起動するまで古いファームウェアで稼動し続けます。
ログにはタスク、イベントの2つがあり、それぞれ、表示される内容が異なります。
[タスク]ではデバイスに対して再起動やコマンド実行を行った結果を参照することができます。 [イベント]では「デバイスの状態が接続中から切断中に変化した」など、デバイスに関するイベントを参照することができます。
[タスク]の一覧を見るには、メニューから[ログ]->[タスク]をクリックしてください。
[イベント]の一覧を見るには、メニューから[ログ]->[イベント]をクリックしてください。
メニューから[アカウント]をクリックします。 この画面から、オペレーター向けのアカウント作成を行います。
管理者権限のアカウントのみ、この操作が行えます オペレーター権限ではメニューに[アカウント]が表示されません
https://atmark-techno.sacm.jp/user/ にアクセスし、登録完了通知書 に記載されている SACM コントロールパネルアカウント を使用してログインしてください。
本章では、DHCP で稼働してる Armadillo を固定IPにする方法を例に、リモートコンフィグ機能の使い方を紹介します。 その他の設定方法については 本文 "Howto" の "SACMからネットワークインターフェースの設定を行う" を参照してください。
メニューから[SA]をクリックし、[接続中]になっている Armadillo をクリック
SAのメニューから[コンフィグ]をクリックして、ページ下部の[コンフィグ変更]をクリック
モジュール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分後にコンフィグ反映直前の設定に戻します。
Armadillo の数が多い場合や拠点ごとに管理を行いたい場合に便利なフォルダ機能を紹介します。 フォルダ分けすることにより、フォルダ単位でコマンドが実行できるようになったり、コンフィグの一斉反映がより簡単に行なえるようになります。
メニューから[フォルダ]をクリックし、[フォルダ追加]をクリック
任意のフォルダ名を入力し[フォルダ追加]をクリック
フォルダ一覧から、先ほど入力したフォルダ名をクリック
フォルダにArmadilloを登録するため、[所属SA変更]をクリック
任意のSAにチェックを入れ、[所属SA変更]をクリック
チェックを入れたSAが表示されます。
SACMコントロールパネルでは、Armadilloと SACM の接続状態が変化した時に、電子メールを送信する機能を設定する事ができます。
接続状態が変化するのは以下のようなことが考えられます。
[接続中] → [切断中] の接続状態の変化には実際に通信が途絶してから、最大で15分程度かかります
[切断中] → [接続中] の接続状態の変化には実際に通信が確立してから、最大で10分程度かかります
通知先の設定には SACMコントロールパネル の 監視グループ を使います。 監視グループ には複数の Armadillo と、通知先のメールアドレスを登録することができます。
まず、監視グループの作成を行います。 メニューから[監視]をクリックし、[監視グループ追加]をクリック
任意の監視グループ名を入力し、[監視グループ追加]をクリック
これで監視グループの作成は完了です。次に監視グループに電子メールの送信先を設定します。 監視グループ一覧から、先ほど入力した監視グループ名をクリック
[通知先メールアドレス変更]をクリック
任意の通知先メールアドレスを入力し、[通知先メールアドレス変更]をクリック
これでArmadilloの動作状況が変化した時の通知先を設定することができました。
最後に、監視グループにArmadilloを登録します [監視対象変更]をクリック
監視グループに追加したいArmadilloにチェックを入れ[監視対象変更]をクリック
これで監視グループに登録したArmadilloの動作状況が変わった時に、電子メールが送信されるようになりました。
電子メールが送信されることを確認するには、登録したArmadilloのEthernetケーブルを外すか、 その時点で[切断中]となっているArmadilloを起動し、SACMと接続する必要があります。
SACM は一時的なネットワーク障害と区別するため、[接続中]から[切断中]に状態の表示を 変更するまでに15分の猶予期間を設けています。 そのため、Ethernetケーブルを外す等の方法で SACMとの接続を遮断した場合は15分後に、 電子メールの送信 と node-eyeコントロールパネル、SACMコントロールパネル の表示が変化します。
この他の使い方や、詳しい情報は http://manual.sacm.jp/ を参照してください
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 利用時と同様、ユーザーが自由に変更可能です。
node-eye 対応 パーティション構成では、userland パーティションのサイズは 18.75MB です。
容量制限のためnode-eye対応のユーザーランドには、Oracle Java SE Embedded 8、LUAインタプリタ はデフォルトで組み込まれないようになっています。
また、node-eye のデバイス運用管理サービスにいくつか必要なアプリケーションが追加されています。
recovery 領域には、Linux カーネルとユーザーランド(atmark-dist)を一つにまとめたイメージを書き込みます。このイメージをリカバリイメージといいます。
リカバリイメージによる Armadillo の起動が起きる条件を次に示します。
リカバリイメージの目的は、ファームウェアアップデート機能を使ってLinux カーネルまたはユーザーランドに誤ったイメージを書き込んだり、書き込みのの最中に電源が遮断されて書き込みが完了せず再起動に失敗した場合、リカバリイメージによる再起動が実行されてnode-eyeコントロールパネルからの復旧ができるようにすることです。
リカバリイメージは、Linux カーネルとユーザーランドを復旧するためにSACMに接続することのできる最小の構成となっています。 そのため、インストールされているアプリケーションは標準イメージと比べ少なくなっています。
ユーザーランドにインストールされるアプリケーションの差分は以下のコマンドで確認することができます。
[PC ]$ cd atmark-dist/vendors/AtmarkTechno [PC ]$ diff Armadillo-IoTG-Std-NE/config.vendor Armadillo-IoTG-Std-NE.Recover/config.vendor
リカバリイメージで Armadillo が起動すると、SACM、node-eye コントロールパネル上では [切断中] と表示されます。 [切断中] という表示でも、リカバリイメージで Armadillo が起動し、SACM と通信できる場合は、 SACM, node-eye コントロールパネルから Ping と Traceroute を実行することができます。
Armadillo の接続/切断状態の監視は、Armadilloにインストールされたarmsdが SACM にHeartbeat パケットを送信することによって 実現しています。
送信間隔
状態変化
リカバリーイメージは、Heartbeatを送信しません。従って、接続状態は[切断中]となりますが、ファームウェアアップデート等の復旧作業は実行することができます。
node-eyeのリモートコンフィグ機能は、SACMのモジュールを使用しています。 そのため、この章では "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 モジュールの概念を参照してください。
node-eye 対応イメージでは armsd がネットワーク設定を管理します。
Armadillo起動直後は、armsd が/etc/network/interfaces
を生成してネットワーク接続を行います。
SACM からコンフィグを取得できたら、一度、すべてのネットワークインターフェースをダウンした後、
取得したコンフィグを元に/etc/network/interfaces
を生成し、再度ネットワークインターフェースをアップします。
コンフィグの管理はネットワークモジュールが行っています。
armsd のネットワーク設定の詳細は、本文「リモートコンフィグ機能について」を参照してください。
Armadilloが起動してから、SACM上に設定したネットワークインターフェース設定が反映されるまでのシーケンスを説明します。 下記のシーケンスはSACM 動作シーケンス Pull動作に沿った動作です。
/etc/armsd/scripts/line
が実行されます。 /etc/armsd/scripts/line
は /etc/config/line.conf
を元に /etc/network/interfaces
(以下、interfaces
と表記します)を生成します。
生成されるinterfaces
はUSBメモリーを使うことによって変更することができます。interfaces
を使用してLS(Location Server)に接続します。/etc/config/armsd.cache
として保存されます)
Location-Configがある場合、LS Pullをスキップします。interfaces
を生成し、これを用いてRSへ接続します。
ここで生成されるinterfaces
は、Armadilloが起動した時と同じものが生成されます。post-pull script
がinterfaces
を生成します。interfaces
でSACMと接続できるかを確認します。
接続は5回試行しますが、5回とも接続できなかった場合、新たに設定する前のService-Cofingにロールバックします。本章では node-eyeコントロールパネル の ファームウェアアップデート機能 の仕様について説明します。 ファームウェアアップデート機能の使い方は Getting Started を参照してください。
ファームウェアアップデートにより書き込むことのできる領域は以下の3つです。
※ただし、同時に書き込めるのは kernel と userland の組み合わせのみ
また、ファームウェアアップデートの際には、Armadillo がHTTPプロトコルでアクセス可能なwebサーバーに イメージファイルを置き、そのURLを指定する必要があります。
本章では、ATDE5を使って node-eye対応のイメージファイルをビルドする方法を説明します。
以下の手順は「リカバリイメージを作成する場合」を例に書かれていますが、kernel/userland領域に書き込む、標準Linuxカーネル イメージ/標準ユーザーランドイメージを作成する場合も [5. ベンダー/プロダクト名の選択] を除いて同様の手順となります。
ATDE5での操作は全てrootユーザーではなく、一般ユーザーで行ってください。
下記URLからソースコードをダウンロードします。
各ソースコードアーカイブを展開します。
[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
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
以降のコマンド入力例では、各ファイルからバージョンを省略した表記を用います。
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 > |
+-------------------------------------------------------------------------+
メニュー項目は、上下キーで移動することができます。下部の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 > |
+-------------------------------------------------------------------------+
前のメニューに戻るには、"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 > |
+-------------------------------------------------------------------------+
前のメニューに戻るため、"Exit"に移動してEnterキーを押下します。コンフィギュレーションを抜けるためにもう一度"Exit"に移動してEnterキーを押下します。
コンフィギュレーションを確定させるために"Yes"に移動してEnterキーを押下します。
atmark-dist v1.45.0 Configuration
------------------------------------------------------------------------------
+----------------------------------------------------------+
| Do you wish to save your new kernel configuration? |
+----------------------------------------------------------+
| < Yes > < No > |
+----------------------------------------------------------+
コンフィギュレーションが完了するので、続いてビルドを行います。 ビルドは"make"コマンドを実行します。
[ATDE ~/atmark-dist]$ make
ビルドログが表示されます。ビルドするPCのスペックにもよりますが、数分から十数分程度かかります。
ビルドが終了すると、atmark-dist/images/ディレクトリ以下にイメージファイルが作成されています。Armadillo-IoT では圧縮済みのイメージ(拡張子が".gz"のもの)を利用します。
[ATDE ~/atmark-dist]$ ls images/ linux.bin linux.bin.gz romfs.img romfs.img.gz
復旧を行うための手順は以下の通りです。
はじめに、node-eye コントロールパネルにログインします。
リカバリイメージで起動した Armadillo は、接続状態が [切断中] で表示されるため、 [切断中] の Armadillo に対し ping コマンドを実行します。
"状態" が [成功] となった場合は 復旧作業ができます "状態" が [失敗] となった場合は 復旧作業ができません
[成功] と表示された場合には、リカバリイメージで起動していることが確認されたので次の手順に進んでください。 [失敗] と表示された場合には、何らかの原因で Armadillo と SACM が接続されていないため、Armadillo を直接確認する必要があります。
ping が成功した Armadillo に対しファームウェアアップデートを行います。 入力するカーネルとユーザーランドのダウンロードURLは、起動できるものを入力してください。 ファームウェアアップデートには時間がかかる場合があるため、 [アップデート完了時に再起動する] にチェックを入れてから、実行することをおすすめします。
ファームウェアアップデートが成功し、再起動すると、書き込んだイメージが起動します。 また、SACM と通信ができると接続状態が [接続中] になります。 これでファームウェアアップデートは完了です。
再起動後、接続状態が [切断中] → [接続中] に切りわかるまでに時間がかかる場合があります。 10 分以上切り替わらない場合は、リカバリイメージで起動していることが考えられます。 この場合は、再び復旧作業を行ってください。
本章では、Armadilloに書き込んだリカバリイメージが正常に起動するか確認する方法を説明します。
手順の中で、既にArmadillo に書き込まれているプライマリイメージを上書きします。リカバリイメージの起動を確認した後に、元に戻すための正常なプライマリイメージファイルを用意しておいてください。
正常に起動することができないイメージを書き込んだ状況を再現するため、サイズが1バイトのファイルをgzip圧縮して不正なプライマリイメージファイルとして用意します。次の手順をATDE5等のLinuxマシンで行ってください。
[PC~]$ echo | gzip > dummy.gz && md5sum dummy.gz > dummy.gz.md5 [PC~]$ ls dummy* dummy.gz dummy.gz.md5
作成した "dummy.gz" と "dummy.gz.md5" を対象となるArmadilloがアクセスすることのできる webサーバーに配置してください。
node-eye コントロールパネル で対象となる Armadillo を選択して、 不正なプライマリイメージファイル "dummy.gz" へのURLを [カーネル] に入力し、[アップデート完了後に再起動する] にチェックを入れた上で、 ファームウェアアップデートを実行してください。
[ユーザーランド] のテキストボックスには何も入力する必要はありません。
起動しないプライマリイメージファイルによるファームウェアアップデートに成功してArmadilloは再起動を実行します。 しかし、起動しないプライマリイメージによって起動が失敗するため、自動的にリカバリイメージで再起動します。
リカバリイメージで再起動した Armadillo は node-eyeコントロールパネル または SACMコントロールパネルからは [切断中] として認識されますが、Ping、Traceroute、再起動、ファームウェアアップデートは実行することができます。
起動しないプライマリイメージのアップデートによる再起動を実行してから15分以上経過した後に、 対象の Armadillo が node-eyeコントロールパネルから [切断中] として表示される事と、 Ping が実行できる事を確認してください。
確認が終ったら正常なプライマリイメージを使ってファームウェアアップデートを実行してください。
本章では、アットマークテクノが提供するネットワークモジュールのコンフィグの仕様と、 各種ネットワークインターフェースを使うための設定例を紹介します。
ネットワークモジュールは モジュール0 に割り当てています。
SACM の操作手順については、Getting started の "リモートコンフィグを行う" を参照してください。
ネットワークモジュール(モジュール0)のコンフィグの書式を以下に示します。
VERSION=[version]
[key]=[value]
[key]=[value]
:
#
をつけることで、コメントアウトできますネットワークモジュールの 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 | メトリック値 |
ネットワークモジュールの 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 | メトリック値 |
ネットワークモジュールの 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) |
ネットワークモジュールの resolv.conf に関する key 一覧です。
resolv_conf_
から始まる変数の値は /etc/resolv.conf
に書き込まれます。
key | 説明 |
---|---|
resolv_conf_search | resolv.conf の search |
resolv_conf_nameserver | resolv.conf の nameserver |
以下はネットワークモジュールの設定例です。
必ず、VERSION=1
, interface_***=enable
が書かれていることに注目してください。
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
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
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"
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"
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 の設定ファイルは、以下のいずれかの方法で変更できます。
/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
でコンフィグ領域を初期化した場合は再設定が必要です。
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への接続がおこなわれます。
作業用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
Armadillo にUSBメモリーに入れた設定ファイルを取り込ませる方法を紹介します。 設定ファイルは「特定のディレクトリ」に「特定の名前」で、USBメモリーに保存しておく必要があります。
USBメモリーは FAT32 でフォーマットしてください。
設定ファイルは、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
の名前でコピーされます。
key | 説明 |
---|---|
STATIC_ADDRESS | |
STATIC_NETMASK | |
STATIC_NETWORK | |
STATIC_BROADCAST | |
STATIC_GATEWAY |
key | 説明 |
---|---|
MOBILE_ID | |
MOBILE_PASS | |
MOBILE_APN | |
MOBILE_AUTH_TYPE | |
MOBILE_PDP_TYPE |
現在、line.confでは awlan0 を使うことはできません。SACMとの通信確立network.confで有効にしてください。
key | 説明 |
---|---|
RESOLV_SEARCH | |
RESOLV_NAMESERVER |
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"
本章では、Armadillo に独自のモジュールを組込む手順について説明します。
モジュールを作成して Armadillo のユーザーランドに組込むためには、 本文 「イメージファイルのビルド手順」 でビルドする Atmark Distの ソースコードに変更を加えて、イメージをビルドしなおす必要があります。
モジュールの実体となるファイルは展開したAtmark Distのソースコードの下記のパスに 配置します。
モジュールは基本的にシェルクスリプトとして、ファイル名がモジュール番号(ユーザー向けは4から15) + "_"で で始まるファイル名で作成してください。
例えば、5_mymodule.sh というファイル名でモジュールを作成した場合、モジュール5 として実行されます。
ファイル名のモジュール番号は重複しないようにしてください。同じ番号が複数ある場合、ファイル名をasciiで ソートして若い方の1つだけがモジュールの実装として機能します。
モジュールのサンプルは node-eye対応 の Atmark Distのソースコード内の下記のパスに配置されています。
下記にその内容を記載します。
#! /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 を参考にしてください。
#! /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コントロールパネル から操作する事ができるようになります。
各モジュールの case文に書く事のできる オペレーション の種類と、実行される条件は下記の通りです。
オペレーション | 実行タイミング |
---|---|
start | armsdが SACM に接続を確立した直後 |
stop | SACM または node-eye コントロールパネルで 再起動 を実行 |
reconfig | SACMコントロールパネルで コンフィグ反映 を実行 |
status | SACMコントロールパネルで ステータス取得 を実行 |
command | SACMコントロールパネルで 任意コマンド を実行 |
モジュールを作る場合は、必ずしも全ての オペレーション に対応するcase文を書く必要はありません。 SACMコントロールパネルからの各オペレーションの実行方法については SACM マニュアル の 「オペレーション」タブ を参照してください。
個々のモジュールのタイムアウト時間は 180秒 です。 start/stop/command 等の オペレーション を呼び出してから、180秒以内に実行が終了しない 場合はモジュールの実行が中断されます。
モジュールの返り値はモジュールへのオペレーションの成功/失敗の判定に影響することはありません。 スクリプトのテスト等の用途で自由に設定することができます。
SACMコントロールパネルではテンプレートセットという仕組みを使って 複数のArmadilloに対して、同時にモジュールのコンフィグを実行することができます。 使い方は SACM service manual の テンプレートセットについてを参照してください。
本章では 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 を使用して行ってください。
最初に、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 を使用してフラッシュメモリを書き換える」を参照
Armadillo の電源を入れなおして、再起動してください。
続いて、カーネルの書き換えを行います。下記のコマンドを実行してください。
hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024 --kernel=linux-aiotg-std-[version].bin.gz
ユーザーランドの書き換えを行います。下記のコマンドを実行してください。
hermit> tftpdl [ArmadilloのIPアドレス] [ATDE5のIPアドレス] --blksize=1024 --userland=romfs-aiotg-std-[version].img.gz
開発中のnode-eyeの実装には次の制限があります。
バージョン | 年月日 | 改訂内容 |
---|---|---|
0.0.1 | 2016/01/25 | 初版発行 |