警告メッセージ

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

Howto : pppdを使ってppp通信を行う(Armadillo, カーネル組込み)

対象製品: Armadillo(HT1070)

Armadillo上でのPPP通信について説明します。
PPP通信の実現にはpppdというアプリケーションを使用します。
最新のatmark-distには、pppd-2.4.4が組み込まれていますので、それを用いて、pppdをカーネルに静的に組み込みます。
ローダブルモジュールとして組み込む方法は、pppdを使ってppp通信を行う(Armadillo)を参考にしてください。


おおまかな手順は下記のようになります。

  1. Linuxカーネルにpppの機能を組み込む
  2. イメージの書き込み
  3. pppdを使用してppp通信をおこなう


この Howto の例では、以下の環境を想定しています。
ご利用の環境に合わせて適宜読みかえてください。

  • 対象製品:Armadillo-220
  • atmark-dist:v20080314
  • linux-kernel:linux-2.6.12.3-a9-13

1.Linuxカーネルにpppの機能を組み込む

カーネルに、以下のデバイスドライバを組み込みます。

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

また、ユーザランドのアプリケーションとして、pppdを組み込みます。


make menuconfigを使用した場合の設定は下記のようになります。


[PC ~/atmark-dist]$ make menuconfig

Main Menuでは、下記のように設定してください。
Productは、使用するArmadilloの種類に応じて適切に選択してください。


Main Menu

Vendor/Product Selection  ---> 
--- Select the Vendor you wish to target
(AtmarkTechno) Vendor
--- Select the Product you wish to target
(Armadillo-220.Base) AtmarkTechno Products 

Kernel/Library/Defaults Selection  --->
--- Kernel is linux-2.6.x
(default) Cross-dev
(None) Libc Version
[*] Customize Kernel Settings (NEW)
[*] Customize Vendor/User Settings (NEW)

次に、カーネルの設定をおこないます。
デバイスドライバの組込みの際、必ず「*」を選択してください。
「M」にすると、モジュールとしてビルドされ、必要な機能が静的に組み込まれません。


Linux Kernel Configuration

Device Drivers  --->
Networking support  ---> 
<*> PPP (point-to-point protocol) support
<*>   PPP support for async serial ports

最後に、ユーザランドの設定をおこないます。


Userland Configuration

Network Applications  --->
[*] pppd

makeします。


[PC ~/atmark-dist]$ make dep all

2.イメージの書き込み

ppp通信を行う際に使用するTAやモデムでは、シリアルポートにハードウェアフローコントロール(RTS/CTS)が必要な場合がほとんどなので、今回は、シリアルポートにシリアルインターフェース1(ttyAM0)を使用します。
シリアルインターフェース1は通常gettyに割り当てられているため、inittabを変更して開放します。
シリアルインターフェース1の開放については、COM1の解放のページも参考にしてください。


また、pppdの動作に必要な設定も併せて行います。


inittabを変更します。


[PC ~/atmark-dist]$ vi romfs/etc/inittab

下記のように、シリアルインターフェース1(ttyAM0)をgettyに割り当てている行をコメントアウトしてください。


#::respawn:/sbin/getty -L 115200 ttyAM0 vt102

pppdが使用する/var/lockディレクトリを作成します。


[PC ~/atmark-dist]$ mkdir romfs/var/lock

最後に、pppのデバイスノードを追加します。
変更するext2_devtable.txtは、make menuconfigの際に選択したProductのものとなります。


[PC ~/atmark-dist]$ vi vendors/AtmarkTechno/Armadillo-220.Base/ext2_devtable.txt

下記の1行を追加してください。


/dev/ppp           c      660    0     0     108     0       0       0     -

変更したら、イメージを作成し、Armadilloに書き込みます。 カーネルも書き換えるのを忘れないようにしてください。


[PC ~/atmark-dist]$ make image
[PC ~/atmark-dist]$ hermit download -i images/linux.bin.gz -r kernel
[PC ~/atmark-dist]$ hermit download -i images/romfs.img.gz -r userland

3.pppdを使用してppp通信をおこなう

今回は、2台のArmadillo同士をシリアルケーブルで直接接続して、動作確認をおこないます。
シリアルケーブルは、クロスケーブルを使用します。
(通常、TAやモデムと接続する場合はストレートケーブルを使用します。)


それぞれのArmadilloのIPアドレスは以下のようになっているものと仮定します。


Armadillo-A IPアドレス 192.168.1.10
Armadillo-B IPアドレス 192.168.2.10

2台のArmadilloのシリアルインターフェース1(Armadillo-220の場合CON16)を、クロスケーブルで接続し、それぞれのArmadilloで下記のコマンドを実行します。
(シリアルインターフェース1をppp用に使用しているため、シリアルインターフェース2を使うか、sshまたはtelnet経由でログインしてください。)

Armadillo-A


[armadillo ~]$ su
[armadillo ~]# pppd -d -detach crtscts lock 192.168.1.10:192.168.2.10 netmask 255.255.250 /dev/ttyAM0 115200 &

Armadillo-B


[armadillo ~]$ su
[armadillo ~]# pppd -d -detach crtscts lock 192.168.2.10:192.168.1.10 netmask 255.255.250 /dev/ttyAM0 115200 &

正常に接続できた場合、下記のような実行結果が表示されます。


using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyAM0
sent [LCP ConfReq id=0x1    ]
rcvd [LCP ConfReq id=0x1    ]
sent [LCP ConfAck id=0x1    ]
sent [LCP ConfReq id=0x1    ]
rcvd [LCP ConfAck id=0x1    ]
sent [IPCP ConfReq id=0x1  ]
rcvd [IPCP ConfReq id=0x1  ]
sent [IPCP ConfAck id=0x1  ]
rcvd [IPCP ConfAck id=0x1  ]
local  IP address 192.168.1.10
remote IP address 192.168.2.10

ネットワークインターフェースにppp0が追加され、相手先のIPアドレスにpingが通ることを確認してください。


[armadillo ~]#  ifconfig
...
ppp0      Link encap:Point-Point Protocol
          inet addr:192.168.1.10  P-t-P:192.168.2.10  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:32 (32.0 B)  TX bytes:32 (32.0 B)

[armadillo ~]#  ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10): 56 data bytes
64 bytes from 192.168.2.10: icmp_seq=0 ttl=64 time=25.8 ms
64 bytes from 192.168.2.10: icmp_seq=1 ttl=64 time=20.0 ms

4.その他の情報

下記に示すリンクも参考にしてください。
特に、Linux PPP HOWTOには、pppdの設定を含め有用な情報が多く記述してあります。

カテゴリ: