第5章 Howto

5.1. ネットワーク設定方法

本章では、ネットワークモジュール用いて各種ネットワークインターフェースを設定するための方法を紹介します。

node-eye においてネットワークの設定ファイルは2つあり、それぞれ用途と設定ファイルが使われるタイミングが異なります。タイミングについては 「ネットワークインターフェース設定シーケンス」 を参照してください。

表5.1 ネットワーク設定ファイル

設定ファイル用途
line.confSACM に接続するためのネットワーク設定を管理します。この設定ファイルは Armadillo 上に設定・保存します。
ネットワークモジュールコンフィグSACM と接続した後のネットワーク設定を管理します。この設定ファイルは SACM 上に設定・保存します。

5.1.1. line.conf

リモートコンフィグや死活監視などを行うためには、Armadillo と SACM が互いに通信できる環境を用意する必要があります。 line.conf は Armadillo と SACM が互いに通信できる環境を作るための設定ファイルです。

line.conf にはデフォルト設定が存在します。デフォルト設定ではネットワークインターフェースに eth0 を使い、DHCP によるIPアドレス取得を行って SACM と通信します。

そのため、下記の3つの条件が揃っている場合、line.conf を変更する必要ありません。

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

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

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

5.1.1.1. line.conf の設定方法

line.conf の設定にはテキストエディタを使用します。node-eye パッケージをインストールすると、line.conf は /etc/armsd/ に配置されます。

vi で line.conf を編集するには、下記のコマンドを実行してください。

[armadillo /]# vi /etc/armsd/line.conf
[ティップ]

line.conf の編集は 「line.conf コンフィグ一覧」「設定例」 を参考に行ってください。

line.conf のデフォルト設定を使用するには line.conf を空にするか、書き込んでいるコンフィグをすべてコメントアウトしてください。

line.conf を編集した後は、recovery パーティションに line.conf コピーしてください。

[armadillo /]# mount /dev/mmcblk2p3 /mnt
[armadillo /]# mkdir -p /mnt/etc/armsd/
[armadillo /]# cp /etc/armsd/line.conf /mnt/etc/armsd/line.conf
[armadillo /]# umount /mnt
[注記]

recovery パーテションにコピーした line.conf はリカバリーイメージが使用します。 ファームウェアアップデートの失敗などによりリカバリーイメージが起動した場合、SACM と通信を行うために line.conf が必要となります。

5.1.1.2. line.conf コンフィグ一覧

5.1.1.2.1. eth0 固定IP

表5.2 eth0 で 使用可能な key 一覧

key説明
STATIC_ADDRESSIPアドレス
STATIC_NETMASKネットマスク
STATIC_GATEWAYゲートウェイ

5.1.1.2.2. wwan

表5.3 wwan で使用可能な key 一覧

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

5.1.1.2.3. wlan0

表5.4 wlan0 で使用可能な key 一覧

key説明
WIRELESS_LAN_ENABLE無線LANの有効/無効 (true/false)
WIRELESS_LAN_ESSIDESSID
WIRELESS_LAN_PASSPHRASEパスフレーズ

[ティップ]

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

5.1.1.2.4. resolv

表5.5 resolv で使用可能な key 一覧

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

5.1.1.3. 設定例

5.1.1.3.1. 3Gモバイル回線を使う
MOBILE_ID="User name"
MOBILE_PASS="Password"
MOBILE_APN="APN"
MOBILE_AUTH_TYPE="PAP"
MOBILE_PDP_TYPE="IP"
5.1.1.3.2. 固定IPを使う
STATIC_ADDRESS="192.0.2.10"
STATIC_NETMASK="255.255.255.0"
STATIC_GATEWAY="192.0.2.1"

RESOLV_SEARCH="local-network"
RESOLV_NAMESERVER="192.168.10.1"
5.1.1.3.3. 無線LAN(wlan)を使う
WIRELESS_LAN_ENABLE=true
WIRELESS_LAN_ESSID="myessid"
WIRELESS_LAN_PASSPHRASE="mypresharedkey"
5.1.1.3.4. 無線LANで固定IPを使う
WIRELESS_LAN_ENABLE=true
WIRELESS_LAN_ESSID="myessid"
WIRELESS_LAN_PASSPHRASE="mypresharedkey"

STATIC_ADDRESS="192.0.2.10"
STATIC_NETMASK="255.255.255.0"
STATIC_GATEWAY="192.0.2.1"

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

5.1.2. ネットワークモジュールコンフィグ

ネットワークモジュールコンフィグを設定することで、リモートから Armadillo のネットワーク設定を管理できます。 ネットワークモジュールコンフィグにはデフォルト設定が無いため、必ず設定する必要があります。

5.1.2.1. 使用可能な key 一覧

ネットワークモジュールコンフィグに設定可能な key は、「ネットワークモジュールコンフィグ一覧」 を参照してください。

5.1.2.2. 設定例

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

5.1.2.2.1. 3Gモバイル回線を使う
VERSION=2

interface_wwan=enable
interface_wwan_type=dhcp
interface_wwan_id=user
interface_wwan_pass=password
interface_wwan_apn=apn
interface_wwan_auth_type=PAP
interface_wwan_pdp_type=IP
interface_wwan_metric=10
5.1.2.2.2. wlanを使う
VERSION=2

interface_wlan0=enable
interface_wlan0_type=dhcp
interface_wlan0_essid=my-wireless-network
interface_wlan0_passphrase=preshared-key
interface_wlan0_metric=20
5.1.2.2.3. 固定IPアドレスを使う

eth0 を使用する場合

VERSION=2

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_gateway=192.168.10.1

resolv_conf_search=local-network
resolv_conf_nameserver=192.168.10.100

wlan0 を使用する場合

VERSION=2

interface_wlan0=enable
interface_wlan0_type=static
interface_wlan0_address=192.168.10.10
interface_wlan0_netmask=255.255.255.0
interface_wlan0_gateway=192.168.10.1
interface_wlan0_essid=my-wireless-network
interface_wlan0_passphrase=preshared-key
interface_wlan0_metric=20

resolv_conf_search=local-network
resolv_conf_nameserver=192.168.10.100
5.1.2.2.4. 複数のインターフェースを同時に使う
VERSION=2

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_gateway=192.168.10.1

interface_wwan=enable
interface_wwan_type=dhcp
interface_wwan_id=user
interface_wwan_pass=password
interface_wwan_apn=apn
interface_wwan_auth_type=PAP
interface_wwan_pdp_type=IP
interface_wwan_metric=10

interface_wlan0=enable
interface_wlan0_type=dhcp
interface_wlan0_essid=my-wireless-network
interface_wlan0_passphrase=preshared-key
interface_wlan0_metric=20

resolv_conf_search=local-network
resolv_conf_nameserver=192.168.10.100

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    作成した2つのファイルをArmadilloがアクセスすることのできるWebサーバーに配置してください。

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

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

    [カーネル] のテキストボックスには何も入力する必要はありません。

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

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


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

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

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

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

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

5.4. モジュールの作成方法

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

モジュールを作成して Armadillo のユーザーランドに組込むためには、node-eye パッケージをインストールしておく必要があります。

5.4.1. モジュールの配置

モジュールはユーザーランドの下記のパスに配置します。

/etc/armsd/user_modules/

モジュール名はモジュール番号(ユーザー向けは4から15) + "_"で始まるファイル名で作成してください。

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

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

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

モジュールのサンプルは下記のパスに配置されています。

  • /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 を参考にしてください。

  • /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.4.3. モジュールのオペレーションの種類

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

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

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

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

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

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

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

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

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