Howto

ppp通信を行なう

Armadillo-9でppp(point-to-point protocol)通信をするための説明をします。
ppp通信の実現にはpppdというアプリケーションを使用します。
ここでは、ppp-2.4.3を使うことにします。

また、通信デバイスには本多エレクトロンのAH-H403Cを使用しました。

1. pppdの準備

まず最初にpppのソースを取得します。
ソースを保存するディレクトリは/usr/local/src/pppと仮定します。

[armadillo ~]$ cd /usr/local/src
[armadillo src]$ mkdir ppp
[armadillo src]$ cd ppp
[armadillo ppp]$ apt-get source ppp

注意!ここで取得されるのは最新のソースのため、バージョンが違う場合があります。バージョンが違う場合は、パッチを修正する必要があるかもしれません。

次にppp-2.4.3のArmadillo-9用のパッチを取得します。

[armadillo ppp]$ cd ppp-2.4.3/upstream/tarballs
[armadillo tarballs]$ wget https://download.atmark-techno.com/armadillo-9/patches/ppp-2.4.3-on-armadillo-9.patch

アーカイブを展開し、パッチを当てます。

[armadillo tarballs]$ tar zxvf ppp-2.4.3.tar.gz
[armadillo tarballs]$ cd ppp-2.4.3
[armadillo ppp-2.4.3]$ patch -p1 < ../ppp-2.4.3-on-armadillo-9.patch

configureを実行してビルドします。また、必要なものをTARで固めます。

[armadillo ppp-2.4.3]$ mkdir install_dir
[armadillo ppp-2.4.3]$ ./configure
[armadillo ppp-2.4.3]$ make CC=arm-linux-gcc
[armadillo ppp-2.4.3]$ make DESTDIR=`pwd`/install_dir ETCDIR=`pwd`/install_dir/etc/ppp TARGET=armadillo-9 install install-etcppp
[armadillo ppp-2.4.3]$ cd install_dir
[armadillo install_dir]$ tar czvf ppp-on-armadillo-9.tar.gz etc lib sbin

これでpppdの準備は完了です。

2. カーネルの設定とイメージの作成

次は、atmark-distにパッチを当てます。
atmark-distのディレクトリは、/usr/local/src/atmark-distと仮定します。

[armadillo ~]$ cd /usr/local/src
[armadillo src]$ wget https://download.atmark-techno.com/armadillo-9/patches/ppp-on-atmark-dist.patch
[armadillo src]$ cd atmark-dist
[armadillo atmark-dist]$ patch -p1 < ../ppp-on-atmark-dist.patch

次にカーネルの設定をします。

[armadillo atmark-dist]$ make menuconfig

以下のように設定を行ないます。

  ●Vendor/Product Selection
  Vendor : AtmarkTechno
  Products : Armadillo-9.PCMCIA

  ●Kernel/Library/Defaults Selection
  (None) Libc Version
  [*] Customize Kernel Settings

Exit,Exit,yes で選択画面を終了させます。
次にKernelの設定です。

  ●Network device support
  [*] PPP (point-to-point protocol) support
  [*] PPP support for async serial ports

  ●Character devices
  [*] Standard/generic (8250/16550 and compatible UARTs) serial support

これでカーネルの設定は完了です。 次はイメージを作成します。

[armadillo atmark-dist]$ make dep all

終了したら、pppを組み込みます。
先ほど作成した、ppp-on-armadillo-9.tar.gzをatmark-distのディレクトリまで持ってきます。

[armadillo atmark-dist]$ mv /usr/local/src/ppp/ppp-2.4.3/upstream/tarballs/ppp-2.4.3/install_dir/ppp-on-armadillo-9.tar.gz .

次に展開します。

[armadillo atmark-dist]$ cd romfs
[armadillo romfs]$ tar zxvf ../ppp-on-armadillo-9.tar.gz

最後にイメージを作成します。

[armadillo romfs]$ cd ..
[armadillo atmark-dist]$ make image

imagesにできたカーネルとユーザーランドのイメージを、Armadillo-9に書込みます。

3. pppの設定例

Armadillo-9上での設定例です。

/etc/ppp/options

name -----
0.0.0.0:0.0.0.0
usepeerdns
defaultroute
lock
local
crtscts

/etc/ppp/pap-secrets

----- * -----

/etc/ppp/ppp-on-dialer

exec chat -v                                        \
      TIMEOUT        3                            \
      ABORT          \nBUSY\r                   \
      ABORT          \nNO ANSWER\r              \
      ABORT          \nRINGING\r\n\r\nRINGING\r \
      ''             \rAT                         \
      OK-+++\c-OK  ATH0                         \
      TIMEOUT        30                           \
      OK             ATD------------              \
      CONNECT        ''

pppdの起動

# /etc/rc.d/rc.pcmcia start
# /sbin/pppd /dev/ttyS2 115200 connect /etc/ppp/ppp-on-dialer

DNSがうまく動いていないとき

# cp /etc/ppp/resolv.conf /etc/resolv.conf

注意!固有の設定は"-----"と表しています。

4. パッチの内容

ppp-2.4.3-on-armadillo-9.patch

ターゲット用のインストール処理を変更しています。
defaultでは、hostのstripが実行されてしまうため、インストール時にエラーとなってしまいます。

ppp-on-atmark-dist.patch

デバイスノードを変更しています。
ttyS2、ttyS3を16550互換の標準シリアル用に追加しています。
ppp0を新しく追加しています。

ディレクトリ /var/lock を追加しています。pppdがロックファイルをここに作るためです。

必要なライブラリ(libdl.so.2)をインストールするようにしています。