警告メッセージ

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

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

対象製品: Armadillo(HT1070)

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

PPP通信の実現にはPPxPというアプリケーションを使用します。
(PPxPは真鍋敬士氏作のPPP実装系です。)

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

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

  • Universal TUN/TAP device driver support

機能を有効にするためにカーネルの調整を行います。

上記の機能を使うためには以下の2通りの方法があります。

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

今回は、b. の方法で進めます。


[PC ~/linux]$ make menuconfig

設定の変更後、内容を保存してカーネル(モジュールファイル)のコンパイルを行います。


[PC ~/linux]$ make modules

作成されたファイル(tun.o)をarmadillo上にコピーします。
(今回、各ファイルをarmadillo上の「/lib/modules/2.4.16-rmk2-armadillo/」ディレクトリに保存します。)

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

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

PPxP のソースファイルを取得します。
ここから入手可能です。

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


[PC ~/src]$ tar xzf ppxp-2001080415.tar.gz

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

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

  • CPUアーキテクチャの指定
  • X window system を使用しない設定に変更
  • ストリップ処理は arm-linux-strip で行う
    (installコマンドのストリップオプション指定(-s)は使わない)

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


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

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

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

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

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

5. PPxP のコンパイル

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


[PC ~/ppxp]$ autoconf
[PC ~/ppxp]$ ./configure --host=arm-linux --without-x --without-tcl

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

  • --host=arm-linux
    ネイティブ(動作)環境の指定
  • --without-x
    X window systemを使用しない
  • --without-tcl
    Tclを使用しない

[PC ~/ppxp]$ make

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


[PC ~/ppxp]$ mkdir ppxp_inst_dir
[PC ~/ppxp]$ su 
[PC ~/ppxp]# make virtual_root=/usr/arm-linux/src/ppxp/ppxp_inst_dir install

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

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

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

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


[PC ~/ppxp]# cd ppxp_inst_dir
[PC ~/ppxp/ppxp_inst_dir]# tar czf ppxp_on_armadillo.tgz *

作成した圧縮ファイルをarmadilloへコピー、展開します。
展開の際には、ルート権限を持つユーザで作業を行います。
必ず「/ (ルートディレクトリ)」に圧縮ファイルを展開して下さい。


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

7. PPxP 実行時の設定ファイル

vi 等のエディタを使用して PPxPの設定ファイル(connect_sample)を作成します。
作成した設定ファイルは /usr/local/etc/ppxp/conf/ ディレクトリに保存します。

設定ファイル(connect_sample)例


source serial
set MODE active
set LOG.FILE ppxp_on_armadillo.log
set LINE /dev/ttyS1
set IP.LOCAL 192.168.100.20/24
set IP.REMOTE 192.168.100.25
set IP.SLOCAL yes
set IP.VJ no
set IP.RESOLV no
set IP.UP drouteup
set IP.DOWN droutedown

また、使用するシリアルポート(/dev/ttyS1等)に対しての操作権限(write,read)を与えておいて下さい。

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

モジュールファイル tun.o をロードします。
ロードには insmod コマンドを使用します。


[armadillo /]#cd /lib/modules/2.4.16-rmk2-armadillo/
[armadillo /lib/modules/2.4.16-rmk2-armadillo/]# insmod tun.o

9. PPxP の起動

PPxPを起動します。
ppp通信自体にはクライアントやサーバといった概念は基本的にはありませんが、
便宜的に以下のように解説を進めます。

  • 接続を依頼する側 -> クライアント側
  • 接続依頼を受ける側 -> サーバ側

クライアント・サーバの動作を問わず、7.で作成した設定ファイル(connect_sample)を起動オプションとして指定して下さい。

又、pppのネゴシエーションが開始されるように、対向機器での設定(アプリケーションの 起動等)をすませておきます。

クライアントとして動作させる場合

PPxPコンソール の起動

PPxPコンソール(ppxp)を起動させます。


[armadillo ~]$ /usr/local/bin/ppxp connect_sample

接続動作の開始

PPxPコンソール起動後、コンソール入力画面が表示されますので、「connect」コマンドを入力してpppのネゴシエーションを開始します。


[armadillo  ~]$ /usr/local/bin/ppxp connect_sample
PPxP version 2001080415
interface: tun0
ppxp>connect

サーバとして動作させる場合

PPxPデーモン(ppxpd) を起動し、対向機器からの接続依頼の要求を待ちます。


[armadillo  /]# /usr/local/sbin/ppxpd -getty /dev/ttyS1 connect_sample

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

  • -getty
    getty(指定のシリアルポートを監視する)モードの指定
  • /dev/ttyS1
    使用するシリアルポートの指定

10. PPxPの終了

クライアントとして動作させている場合

PPxPコンソールより「quit」コマンドを入力します。


[armadillo  ~]$ /usr/local/bin/ppxp connect_sample

PPxP version 2001080415 
interface: tun0 
ppxp>connect 
PPXP>quit
[armadillo  ~]$ 

サーバとして動作させている場合

kill コマンドを使ってppxpdのプロセスを指定して終了して下さい。

カテゴリ: