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)をインストールするようにしています。