Raspberry Pi をワイヤレスなコンソールサーバにする
Lantronix 社 の xDirect シリーズはイーサネット経由でシリアルポート(RS232)にアクセス出来る製品だそうです。「簡易コンソールサーバ」とも表現出来ると思います。
- xDirect 232
- PoE 非対応。$99.95。
- xDirect PoE
- PoE 対応。$129.95。
ただ、Amazon.co.jp や NTT-X ストアには基本的に在庫が無くて入手まで時間がかかると予想される上、NTT-X ストアで PoE 対応版の価格は約 21,000 円と、かなり高価な価格設定になっていました… そこで今回は Raspberry Pi をコンソールサーバにしてみようと思います。Raspberry Pi はワイヤレスに対応させ、一般的なコンソールサーバ製品と差別化してみます。
構成¶
今回は以下を組み合わせます。
- Raspberry Pi 2 Model B
- I-O DATA WN-G150U
- RATOC Systems REX-USB60F
- Jerminal version 0.8096
- Supervisor
Raspberry Pi2 は Raspbian OS(2015-05-05-raspbian-wheezy.img)をインストールしてあります。WN-G150U は 2.4GHz 帯しか対応していません(5GHz 帯は非対応)ですが、今回は良しとしました。USB/シリアル変換ケーブルである「REX-USB60F」はとりあえず 2 本、用意しました。環境構築後の構成は以下の通りです。
Raspberry Pi にワイヤレスアダプタを認識させる¶
今回は Raspberry Pi に WN-G150U を認識させますが、設定方法は「WN-G150UM on Raspberry Pi」という記事が大変、参考になりました。
vi /etc/udev/rules.d/network_drivers.rules というファイルを以下の内容で新規作成します。
1 |
|
同様に、vi /etc/modprobe.d/network_drivers.conf というファイルを以下の内容で新規作成します。
1 |
|
続いて、ネットワークの設定を行います。今回は wlan0 インターフェイスを以下のパラメータで設定しました。
項目 | 値 |
---|---|
SSID | MY-SSID |
事前共有鍵 | MY-PSK |
アドレス | 192.168.253.210 |
ネットマスク | 255.255.255.0 |
ゲートウェイ | 192.168.253.254 |
DNS (1) | 8.8.8.8 |
DNS (2) | 8.8.4.4 |
具体的には /etc/network/interfaces を以下のように修正しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
これで WN-G150U を認識&利用出来るようになったはずです。
Jerm のインストール¶
シリアル通信の制御には minicom を使うケースも多いと思います。ただ、今回は「コンソールサーバにする = シリアル/TCP 変換を行う」必要がありますので jerm を利用します。リポジトリに jerm が無いのでソースからインストールします。
1 2 3 4 5 |
|
これでインストールは完了です。特に引数無く、jerm とだけ実行するとヘルプが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Supervisor で jerm をデーモン化する¶
jerm を起動しても、起動したユーザがログアウトしたらプログラムが終了してしまいます。これでは不便なので Supervisor を使って jerm をデーモン化します。まず、Supervisor をインストールします。
1 |
|
Supervisor でのデーモン化対象となるスクリプトを用意します。今回は「一本目の USB/シリアル変換ケーブル」と「二本目の USB/シリアル変換ケーブル」を制御するスクリプトを別々に用意しました。ひとつのスクリプトにまとめても良いのですが、片側のボーレートだけを変換したいようなケースではスクリプトが分かれている方が便利なのでスクリプトを分けました。
まず、一本目の USB/シリアル変換ケーブルを制御する /root/jerm-ttyUSB0.sh を新規作成します(スクリプトの配置位置はヤッツケです…)。-b オプションでスピードを指定していますが、これは接続先の機器に合わせて調整します。
1 2 |
|
続いて、二本目の USB/シリアル変換ケーブルを制御する /root/jerm-ttyUSB1.sh を新規作成します。
1 2 |
|
作成したスクリプトに実行権限を付与する為、パーミッションを調整します。
1 2 |
|
作成したスクリプトを Supervisor にサービスとして認識させる為の設定ファイルを作成します。まず、/etc/supervisor/conf.d/jerm-ttyUSB0.conf を以下の内容で新規作成します。
1 2 3 4 5 6 |
|
続いて /etc/supervisor/conf.d/jerm-ttyUSB1.conf を以下の内容で新規作成します。
1 2 3 4 5 6 |
|
Supervisor に設定ファイルを読み込ませます。
1 |
|
最後に、作成したサービスを Supervisor に追加します。
1 2 |
|
supervisorctl status で確認すると、サービスが起動している(RUNNING)のが分かります。更に、netstat で Listen しているポートを確認すると jerm に Listen させている TCP/2001 や TCP/2002 が確認出来ます。
1 2 3 4 5 6 7 |
|
クライアントから接続してみる¶
クライアント(OS X)からコンソールサーバ化した Raspberry Pi 経由で、コンソール接続してみます。クライアント側にも jerm が必要ですが、OS X であれば homebrew で簡単にインストールできます。1 本目の USB/シリアル変換ケーブルは Raspberry Pi の TCP/2001 で Listen していますので、接続するには以下のようにします。
1 |
|
二本目の USB/シリアル変換ケーブルは TCP/2002 で Listen していますので、接続するには以下のようにします。
1 |
|