...

USB上のLinux

by user

on
Category: Documents
3

views

Report

Comments

Transcript

USB上のLinux
NB100 + willcom dd で遠隔地のセンサデータにアクセス
佐々木 達也
株式会社シーエーシー技術研究グループ
[email protected]
概要
NB100 はセンサデータの蓄積・配信が行える小型の Linux マシンです。NB100 を LAN に接続できる
場合はその能力を最大限に引き出すことができます。
しかし、センサネットワークを展開したい場所で LAN が利用できない場合も多く、NB100 に無線通
信機能を付加すれば更に応用範囲を広げられます。無線 LAN 機器を使えば数十メートル程度なら
簡単に通信距離を拡大できますが、それよりも PHS 通信モジュールを用いれば広範囲に展開され
た無線通信インフラを利用できるようになります。特に、屋外に展開したセンサネットワークを
NB100 で管理する場合、データ閲覧用 PC から NB100 までの通信をどう実現するかが課題になるこ
とが多いと思いますが、PHS 通信インフラを利用すれば簡単にインターネット経由で遠隔地の
NB100 にアクセス出来るようになります。
本文書では、NB100 に willcom の PHS 通信ユニットである dd1を直接接続して、遠隔地に展開され
たセンサネットワークのデータにアクセスするための方法を解説します。
本文書の情報の多くは http://www.nslu2-linux.org/ を参考にしています。
注意
本作業は作業者自身の責任で行って下さい。サポートや結果についての保証はありません。
NB100 本体内や USB フラッシュメモリ内にあるソフトウェアの著作権は Crossbow Technology,
Inc. にあり、複製やこれらソフトをクロスボー株式会社が販売する NB100 以外で使用することは
禁止されています。
また、この作業は Linux の操作にある程度習熟した方が行って下さい。dd コマンドや ln コマンド
について操作経験がない方にはお勧めできません。
用意するもの
● NB100
● NB100 にアクセスする PC
● インターネットアクセス環境
2
● USB 二股ケーブル(バスパワード )
● willcom dd
● クロスケーブル(もしくはストレートケーブルとハブ)
はじめに
手順を以下に示します
1. 購入時の NB100 環境のバックアップ
2. Linux カーネルアップデート
3. ppp モジュールのインストール
4. USB デバイス認識方法変更
5. PHS 通信設定
1
2
http://www.willcom-inc.com/ja/lineup/ws/002in/index.html
バスパワー供給ができるケーブルでないと、PHS 通信モジュールを直接駆動することができません。AC アダプタを利
用した USB ハブを使う方法も可能ですが、機器や電源ケーブルが増えてしまうのでお勧め出来ません。
1
6. NB100 をスタンドアロン動作に変更
出順 1~5 までは NB100 が DHCP で IP アドレスを取得できる環境で作業を行います。
1. 購入時の NB100 環境のバックアップ
この作業では Linux カーネルのアップデートや設定ファイルの変更を伴うので、操作を誤ると
NB100 がブートしなくなることがあります。しかし以下の通りバックアップを行っておけば、ブー
トしなくなっても購入時の正常状態にいつでも戻すことができます。カーネルのアップデート作
業を行わない場合でも、バックアップファイルを保存しておくのは良い考えです。
1-1. NB100 本体内部フラッシュイメージの保存
Linux OS を起動するためのプログラムが NB100 の本体フラッシュメモリ3の中に書き込まれていま
す。まずはこれを保存します。
NB100 に PC から ssh でログインして以下のコマンドを実行します4。
$5 cat /dev/mtdblock* > image.bin
このコマンドで生成される 8MByte の image.bin が本体内フラッシュメモリのイメージファイルで
す。
1-2. USB フラッシュイメージの保存
次に Linux OS 本体や MoteExplorer プログラムなどが書き込まれている USB フラッシュメモリのイ
メージを保存します。windows のエクスプローラなどで USB メモリ内部のファイルをコピーしても
今回の作業の復旧には利用できません。
まず NB100 をシャットダウンし、USB フラッシュメモリを抜きます。これを別の Linux マシンに差
し込みます。ここでは /dev/sdb として USB フラッシュメモリが認識されたとします。root 権限で
# dd if=/dev/sdb of=usbflash.img
を実行すると約 2GByte の usbflash.img が生成されます6。
1-1 で生成した image.bin と 1-2 で生成した usbflash.img を安全な場所に退避させて保存してお
きます。これら二つのファイルがあれば、NB100 をいつでも購入時の状態に戻すことができます。
戻す方法は最後に解説します。
2. Linux カーネルアップデート
Linux のカーネルが 2.6.21 以降でないと willcom の dd を認識できません。2.6.21 より前のカーネ
ルがインストールされている場合はカーネルを新しくする必要があります。インストールされて
いるカーネルのバージョンは uname -r で確認できます。
まず、NB100 上で開発版カーネルのパッケージファイルをダウンロードします。
# wget http://ftp.jp.debian.org/debian/pool/main/l/linux-2.6/linux-image-2.6.24-1ixp4xx_2.6.24-7_arm.deb
筆者が動作を確認したカーネルはこのバージョンですが、これより新しいバージョンでも問題な
く動作すると思われます。
このパッケージを NB100 にインストールします。
3
4
5
6
USB ポートに挿してあるフラッシュメモリとは別に、NB100 本体内部に 8MByte のフラッシュメモリが実装されていま
す。
http://www.nslu2-linux.org/wiki/Debian/FAQ How do I get a copy of my currently flashed image ?
$は一般ユーザ権限のシェルプロンプト、#はルート権限のシェルプロンプトを意味します。
dd は危険を伴うコマンドです。if と of で指定されているファイルが逆になっていないかよく確認してから実行して
下さい。逆になっていると USB メモリの内容が全て消去されてしまいます。コピーが完了するまでには数分間かかり
ます。bs=1024 などと指定してもコピーの速度はあまり変化しませんでした。
2
# dpkg -i linux-image-2.6.24-1-ixp4xx_2.6.24-7_arm.deb
カーネルが更新されると、NB100 本体フラッシュメモリ内の内容も更新されます。
通常はインストール後にリブートを行いますが、今回はリブート前にネットワークの設定ファイ
ルを修正する必要があります。
/etc/network/interfaces
をエディタで開き、ファイル末尾に以下の記述を追加します。
# The Secondary network interface
allow-hotplug eth1
iface eth1 inet dhcp
これを追加しないと、リブート後に Ethernet が機能しなくなります。カーネルアップデート完了
後にリブートした際に、eth0 が eth1 として認識されるようになることへの対応です。もし誤って
ファイル修正前にリブートしてしまった場合は、一度 NB100 の電源を落としてから USB フラッシュ
メモリを抜きます。これを別の Linux マシンに挿してマウントしてから USB フラッシュメモリ内の
/etc/network/interfaces を上記の様に修正すれば Ethernet は正常に機能するようになります。
3. PPP モジュールインストール
無事新しいカーネルでリブートできたら、PHS 通信で用いるプログラムを NB100 にインストールし
ます。
# apt-get update
# apt-get install ppp
これで libpcap0.8 ppp pppconfig の三つのパッケージ7がインストールされます。
4. USB デバイス認識方法変更
二股のバスパワード USB ケーブルの一方に MIB5208、もう一方に willcom dd を接続し、NB100 に接
続します9。
この時点で少し困った問題が発生します。MIB520 も willcom dd も ttyUSB*にシリアルポートがマッ
ピングされますが、
● ttyUSB0 に mib520 のプログラム用ポート
● ttyUSB1 に mib520 の通信用ポート
● ttyUSB2 に willcom dd
がマッピングされる時と、
● ttyUSB0 に willcom dd
● ttyUSB1 に mib520 のプログラム用ポート
● ttyUSB2 に mib520 の通信用ポート
がマッピングされる時があり、リブートの度にこれらがランダムに入れ替わります 10。xserve ソフ
トウェアや PHS 通信用ソフトウェアは/dev/ttyUSB1 などと指定して接続しようとしますが、この
不定性によって各ソフトウェアが正常に実行できなくなる場合が生じます。この問題を解決する
ために、udev のルール11を利用します。
7
8
9
2008 年 6 月現在の libpcap のバージョンは 0.8。
mib520 ではなく BU2400J を接続した場合でも同様です。
NB100 の USB ポートは最大で 500mA までの電流供給が可能です。willdom dd の最大消費電流が 300mA なので、残りの
200mA で mib520 と MICAz は余裕で駆動できます。
10 ブート前に willcom dd を取り外し、ブート後に接続すれば常に ttyUSB2 に willcom dd がマップされますが、ブート
の度に毎回これをやるのは大変煩わしい作業です。
11 http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html
3
方針:
mib520 のプログラム用ポートが/dev/mib520_prog
mib520 の通信用ポートが/dev/mib520_comm
willcom dd が/dev/willcom_dd
でアクセスできるように設定します。
4-1. willcom dd 用の udev 設定
/etc/udev/
に
willcom_dd.rules
という名前のファイルを作り、内容を以下のようにします:
DRIVERS=="pl2303", NAME="ttyUSB%n", SYMLINK="willcom_dd"
こ れ は 、 willcom dd 内 蔵 の pl2303 チ ッ プ で 、 名 前 が ttyUSB* の デ バ イ ス フ ァ イ ル に 対 し て 、
willcom_dd というシンボリックリンクを張れ、という内容です。
この willcom_dd.rules に対して、/etc/udev/rules.d/ に z15-willcom_dd.rules
という名前のシンボリックリンクを作れば完了です。つまり
# ln -s /etc/udev/willcom_dd.rules
/etc/udev/rules.d/z15-willcom_dd.rules
を実行します。z15 などは読み込まれる順番を制御するための接頭語句です。
4-2. mib520 用の udev 設定
次に mib520 で、こちらはプログラム用と通信用で二つの ttyUSB*ができるのでやや複雑です。
/etc/udev/
に
mib520_prog.rules
という名前のファイルを作り、内容を
DRIVERS=="ftdi_sio", ATTRS{bInterfaceNumber}=="00", NAME="ttyUSB%n",
SYMLINK="mib520_prog"
とします。これは、mib520 内蔵の ftdi_sio チップで、bInterfaceNumber が 00 の、名前が ttyUSB*
であるデバイスファイルに対して、mib520_prog というプログラミング用のシンボリックリンクを
張れ、という内容です12。
同様に
mib520_comm.rules
を作り内容を
DRIVERS=="ftdi_sio", ATTRS{bInterfaceNumber}=="01", NAME="ttyUSB%n",
SYMLINK="mib520_comm"
とします。意味は上と同様ですが、bInterfaceNumber が 01 なら通信用のシンボリックリンクが張
られます。
これらに対して
/etc/udev/rules.d/
に
z10-mib520_comm.rules
12 udevinfo -a -p /sys/class/tty/ttyUSB0 を実行すると、ttyUSB0 に接続された USB デバイスの詳細な情報が表示さ
れます。mib520 の二つの ttyUSB*について udevinfo の出力結果を diff で比較した結果、bInterfaceNumber が識別子
として利用できることがわかりました。
4
と
z10-mib520_prog.rules
という名前でそれぞれシンボリックリンクを張ります。つまり
# ln -s /etc/udev/mib520_prog.rules /etc/udev/rules.d/z10-mib520_prog.rules
# ln -s /etc/udev/mib520_comm.rules /etc/udev/rules.d/z10-mib520_comm.rules
を実行すれば mib520 用の udev 設定は完了です。
これらを設定後に機器を接続してブートすると、/dev ディレクトリに willcom_dd と mib520_prog
と mib520_comm という名前のシンボリックリンクが生成されます。
4-3. xserve の設定変更
xserve が mib520 に接続するために、デフォルトでは/usr/xserve/xparams.args で
-c -d -l -x -u=user -s=/dev/ttyUSB1 –logtofile=backup
と指定されているので、これを
-c -d -l -x -u=user -s=/dev/mib520_comm –logtofile=backup
に変更します。
5. PHS 通信設定
PHS 通信用に pppconfig を実行します。
# pppconfig
各設定値は以下の値を参考にしてください。
Provider Name:
Nameservers:
Authentication method:
Username:
Password:
Speed:
Pulse or Tone:
Phone Number:
Modem Config Method:
Select Modem Port:
PRIN
Dynamic
PAP
prin
prin
230400
Tone
0570570711##64
Auto
Manual, /dev/willcom_dd
プロバイダ名やユーザネーム、パスワード、電話番号は適宜変更してください。これで生成され
た/etc/ppp/peers/PRIN に
lcp-echo-interval 0
lcp-echo-failure 0
の二行を追加します。
これで全ての設定は完了です。
# pon PRIN
で PHS 通信が開始され、
# poff
で通信が切断されます。NB100 を起動後、最初の pon が失敗するバグがありますが、二回目からは
正常に通信が開始できます 13。ifconfig コマンドで willcom dd に割り当てられたグローバル IP ア
13 このバグは RX420AL(赤耳)で発生しますが、RX420IN(青耳)では発生しません。
5
ドレスを確認し、別のマシンの web ブラウザなどでこのアドレスを指定して開くと MoteExplorer
の画面が表示されるはずです。
6. NB100 をスタンドアロン動作に変更14
PHS 通信が確認できたら、NB100 を DHCP サーバなしで単体で動作させるための設定を行います。
/etc/network/interfaces
をエディタで開き、eth1 の設定を以下の様に変更します。
#iface eth1 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.77
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
#この行を#でコメントアウト
#この行以下を追加
あえてデフォルトゲートウェイの設定は行いません。この状態で NB100 をリブートします。
NB100 にログインするための PC を一台用意し、NB100 と同一サブネットに居る設定にして NB100 に
ログインします。
# pon PRIN
を実行してから
# ifconfig
で ppp0 に割り振られたグローバル IP アドレスを確認します。このグローバル IP アドレスを指定
して web ブラウザや ssh クライアントで NB100 へのアクセスが可能です。設定用の PC は NB100 か
ら切り離しても OK です15。
上記のように、多くの場合はプロバイダが貸与するダイナミックな IP アドレスをグローバル IP ア
ドレスとして利用することになります。ダイナミックな IP アドレスを利用する場合、不定期に変
化する IP アドレス16を追跡する仕組みが必要になります。
例えば、無料で利用できる DDNS サイト17のサービスを利用すれば、NB100 の IP アドレスが変わっ
てもホスト名を指定してアクセスできるように構成できます。
NB100 がインターネット上に晒される形になるので、十分なセキュリティ対策を行ってください。
最低でも samba サービスと nfs-common サービスは立ち上がらないようにして18、各種パスワード
を長くて推測されにくいものに変える程度のことは必要です。iptables を利用して必要なポート
14 ここは使用例を提示するために書かれたセクションです。使用形態に応じて設定は変更してください。特にセキュ
リティに関してはここで書かれているものは最低限に近いので、より安全性の高い構成を考案してください。
15 eth1 の設定で gateway(デフォルトルート)を設定してしまうと PHS の通信に不具合が発生することがあります。ppp
インターフェースからのパケットへの応答も eth1 に流そうとすることがあるからです。理想的には pon で取得した
グローバル IP アドレスをデフォルトゲートウェイに設定するスクリプトを用意するべきですが、eth1 であえて
gateway の設定を行わないことでこの不具合が発生しなくなります。
16 筆者が実験で利用した willcom の「新つなぎ放題プラン」の場合、PHS 回線にデータが流れ続けていても最長で 25
時間程度で IP アドレスが別の新しいものに変化しました。データの流れがない場合は IP アドレスの更新頻度はもっ
と高く、30 分程度で更新されることもありました。
17 http://www.ieserver.net/ などが参考になります。そこで紹介されている ddns-update.pl スクリプトに手を加えて、
PHS 通信が切れていたら再接続コマンド pon を発行するようにすれば PHS 接続を(大まかには)維持できます。その際
には料金プランに注意してください。2008 年 8 月の現時点では willcom の「新つなぎ放題プラン」が最も安価に利
用できる常時接続サービスです。
18 保護された LAN の内部で NB100 を用いる場合、これらのサービスは大いに役に立ちますが、インターネット側にこれ
らのポートを解放するのは(特に必要がない限り)やめたほうが良いでしょう。
6
だけを開けて、特定のホストからの通信のみを許可する設定にすれば安全性が高まります。/etc/
hosts.allow と/etc/hosts.deny を用いたホスト制限も簡単で有効な手段です。
また、MoteExplorer の web ページにユーザ認証を設けるのも良い考えです。以下に設定例を記し
ます。
方針:
ユーザ名:admin
パスワード:xyz
として Digest 認証19を求めます。
1)etc/apache/modules.conf
に以下の一行を追加します。
LoadModule digest_auth_module /usr/lib/apache/1.3/mod_auth_digest.so
2)/etc/apache/httpd.conf
の中の
<Directory /usr/xserve/web >
に以下を追加します。
AuthType Digest
AuthName "Protected Zone"
AuthDigestDomain /
AuthDigestFile /etc/apache/.htdigest
Require user admin
3)ユーザ admin 用にパスワードを設定するために以下のコマンドを実行します。
# htdigest -c /etc/apache/.htdigest 'Protected Zone' admin
Adding password for admin in realm Protected Zone.
New password:xyz
Re-type new password:xyz
4)apache を再起動します。
# /etc/init.d/apache restart
7. NB100 環境の復旧
最後に、1.で保存したバックアップファイルを使って NB100 環境を元に戻す方法を説明します。
7-1. USB フラッシュイメージの復旧
NB100 から USB フラッシュメモリを抜いて、別の Linux マシンに挿します。USB フラッシュメモリ
が 1-2.と同様、/dev/sdb として認識されたとします。1-2.で保存した usbflash.img があるディレ
クトリに移動し、
# dd if=usbflash.img of=/dev/sdb
を実行すれば完了です。USB フラッシュメモリへの書き込みは遅いので、完了まで数十分かかるこ
ともあります。気長に待ちましょう。
19 Basic 認証は安全性に問題があるため用いるべきではありません。最近では携帯電話の簡易 web ブラウザでさえ
Digest 認証をサポートしたものが多くなっています。
7
7-2. NB100 本体内部フラッシュイメージの復旧
1)
まず windowsXP または windows2000 マシンを用意し、USB フラッシュメモリを抜いた NB100 と同じ
LAN セグメントに接続して作業を開始します。NB100 は電源を切っておきます。
windows マシンに、フラッシュ書き込みユーティリティ(all_router_utility)をインストールしま
す。
http://www.everbesthk.com/8-download/sercomm/firmware/all_router_utility.zip
をダウンロードし、解凍してできたフォルダ内の setup.exe を実行すればインストールは完了し
ます。
2)
NB100 を upgrade mode(本体内部フラッシュメモリ更新モード)で起動するために、以下の手順で
ブートします20。
1. USB ポートに何も挿さっていないことを確認します。
2. 本体背面にあるリセットボタンを細い棒などで押した状態で、本体前面の電源ボタンを押
した後、リセットボタンは押したまま電源ボタンだけ放します。
3. Ready/Status ランプを見ながら 10 秒程度待ち、オレンジ色から赤く変わった瞬間に素早く
リセットボタンを放します。
4. Ready/Status ランプがオレンジ色と緑色に交互に一秒ずつ点灯するようになれば upgrade
mode でブートできた証拠です。もし失敗しても、電源ケーブルを抜いてから接続し、何度
でも 2.からやり直すことができます。
3)
NB100 を upgrade mode で 起 動 で き た ら 、 同 一 LAN セ グ メ ン ト の windows マ シ ン で
all_router_utility を実行します。スタート→すべてのプログラム→Ugutil→Upgrade Utility で
起動できます。
Browse Target ボタンを押すと Browsed Devices on Network ウィンドウが開きます。Devices
List から復旧したい NB100 を選びます。二台以上を同時に upgrade mode にしない限り、一台しか
現れないはずです。二台以上見えた場合でも MAC アドレスで識別できます。Files ボタンを押し、
1-1.で保存しておいた image.bin を選び、Upgrade ボタンを押します。完了まで数分間かかります。
4)
Upgrade Utility が正常に完了したら、NB100 の電源ケーブルを抜き、復旧済みの USB フラッシュ
メモリを挿します。電源ケーブルを接続して電源ボタンを押せば、バックアップ時の環境で NB100
がブートします。
20 http://www.cyrius.com/debian/nslu2/install.html
8
Fly UP