警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : pppdを使ってppp通信を行う(Armadillo)

対象製品: Armadillo(HT1070)

Armadillo上でのPPP通信について説明します。

PPP通信の実現にはpppdというアプリケーションを使用します。

1. armadillo-linux カーネル機能の調整

pppdを使用するためには、armadillo-linuxのカーネルに次の機能が必要です。

  • PPP (point-to-point protocol) support
  • PPP support for async serial ports

機能を有効にするためにカーネルの調整を行います。
上記の機能を使うためには以下の2通りの方法があります。

  1. カーネルの内部機能として組み込んで使用
  2. ローダブルモジュールとして使用

今回は、b. の方法で行います。


[PC ~/linux]$ make menuconfig

設定の変更後、内容を保存してカーネル(モジュールファイル)のコンパイルを行います。
(カーネルのコンパイルについては「カーネルを再構築してみる」を参照下さい。)


[PC ~/linux]$ make modules 

作成された以下の3つのモジュールファイルをarmadillo上へコピーします。
(今回、各ファイルをarmadillo上の「/lib/modules/2.4.16-rmk2-armadillo/」ディレクトリに保存します。)

  • ppp_generic.o
  • slhc.o
  • ppp_async.o

各ファイルは /usr/arm-linux/src/linux/driver/net/ に作成されます。
(armadillo-linuxのカーネルソースは /usr/arm-linux/src/下に展開しているものとします。)

2. pppdソースファイルの取得と展開

pppdのソースファイルを取得します。
今回は以下のサイトから入手したpppdのソースファイル (ppp-2.4.1.tar.gz)を使用します。

https://ftp.samba.org/pub/ppp/

ソース(圧縮)ファイルの入手後、任意のディレクトリで展開します。


[PC ~/src]$ tar xzf ppp-2.4.1.tar.gz

3. pppdプログラムソースの改修(パッチの導入)

Armadillo上でpppdを使用するためにpppdのプログラムソースに対して、 次のような改修を行う必要があります。

  • ストリップ処理は arm-linux-strip で行う
    (installコマンドのストリップオプション指定(-s)は使わない)

ソースファイルの展開後、上記の改修を加えます。
(今回は、改修内容をパッチ(pppd_on_armadillo.patch)にまとめ、導入します。)


[PC ~/src]$ patch -p0 < pppd_on_armadillo.patch

4. クロスコンパイルを行うための環境変数の設定

クロスコンパイルを行うために環境変数を変更します。

export CROSS_COMPILE=1
export CC=arm-linux-gcc

※ クロスコンパイルを行うホストPCのシェルに「bash」を使用している場合の設定です。

5. pppdのコンパイル

pppdのコンパイルを行います。


[PC ~/ppp-2.4.1]$ ./configure
[PC ~/ppp-2.4.1]$ make 

コンパイルの終了後、ホストPC上にインストール用の任意のディレクトリを作成し、 インストールを行います。


[PC ~/ppp-2.4.1]$ mkdir ppp_inst_dir 
[PC ~/ppp-2.4.1]$ su 
[PC ~/ppp-2.4.1]# make DESTDIR=/usr/arm-linux/src/ppp-2.4.1/ppp_inst_dir install

上記の「make install」コマンド発行時のオプションについて説明します。

  • DESTDIR=...
    インストールディレクトリの指定、作成した「ppp_inst_dir」を指定します。

6. インストールイメージの圧縮・コピー・展開

インストール先のディレクトリに移動し、インストールされたファイルを圧縮します。


[PC ~/ppp-2.4.1]# cd ppp_inst_dir 
[PC ~/ppp-2.4.1/ppp_inst_dir]# tar czf pppd_on_armadillo.tgz * 

作成した圧縮ファイルをarmadilloへコピー、展開します。
展開の際にはルート権限を持つユーザで作業を行います。

必ず「/ (ルートディレクトリ)」に圧縮ファイルを展開して下さい。


[armadillo /]# pwd 
/
[armadillo /]# tar xzf pppd_on_armadillo.tgz

7. ノードの作成

pppdが使用するデバイスノード(/dev/ppp)をarmadillo上に作成します。


[armadillo /]# mknod /dev/ppp c 108 0

8. モジュールファイルのロード

  1. で作成したモジュールファイルをロードします。
    ロードには insmod コマンドを使用します。

[armadillo /]#cd /lib/modules/2.4.16-rmk2-armadillo/
[armadillo 2.4.16-rmk2-armadillo/]# insmod shlc.o
[armadillo 2.4.16-rmk2-armadillo/]# insmod ppp_generic.o 
[armadillo 2.4.16-rmk2-armadillo/]# insmod ppp_asycn.o

9. pppdの起動

pppdを起動して pppのネゴシエーションを開始します。
起動はルート権限を持つユーザで行います。

又、pppのネゴシエーションが開始されるように、対向機器での設定(アプリケーションの 起動等)をすませておきます。
以下のコマンドにてarmadillo上でpppdが起動した場合、

  • armadilloから対向機に対して接続要求開始する(クライアント動作)
  • armadilloに対して接続要求を行う(サーバ動作)

どちらの動作の場合もpppのネゴシエーションが完了し、pppの通信が可能になります。


[armadillo /]# /usr/sbin/pppd /dev/ttyS1 -detach lock \
                      192.168.100.20:192.168.100.25 \

                      netmask 255.255.255.0 115200 local crtscts 

上記の各オプションについて簡単に説明します。

  • -detach
    pppdデーモン自体がバックグラウンドで実行されないように指定
  • lock
    シリアルポート使用時の排他ロックの制御方法にUUCPタイプを使用
  • 192.168.100.20:192.168.100.25
    IPアドレスの設定
    コロン(:)の前に自機IPアドレス、後に対向機IPアドレスを指定します
  • netmask 255.255.255.0
    ネットマスクの設定
  • /dev/ttyS1
    使用するシリアルポートの指定
  • 115200
    ボーレートの指定
  • local
    モデム制御線を使用しない(CD信号の無視、DTR信号は非制御)
  • crtscts
    ハードウェアフロー制御を使用する

PPPのネゴシエーションが開始され、数秒後にPPPの接続が完了します。

10. pppd の終了

pppdを終了させる場合は、kill コマンドを使ってpppdのプロセスを指定して 終了を行って下さい。

カテゴリ: