vine linux3.1 kernel mode pppの設定
sorry Japanese only
PAGE作成日 2005/08/25
最終更新日 2005/08/25
page size = Mbyte

これは戦いました。
合計 20時間以上は戦ったんじゃないかなぁ。
意味不明のエラー出まくりでした。

kernelの remake

今回は kernelの作り直しからやってみます。

rp-pppoe3.6を解凍すると doc/KERNEL-MODE-PPPOEに kernel mode pppoeにする場合の
説明がありますが、kernelは以下の設定であることと書かれています。
CONFIG_PPP=m          or CONFIG_PPP=y
CONFIG_PPP_ASYNC=m    or CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=m or CONFIG_PPP_SYNC_TTY=y
CONFIG_PPP_DEFLATE=m  or CONFIG_PPP_DEFLATE=y
CONFIG_PPP_BSDCOMP=m  or CONFIG_PPP_BSDCOMP=y
CONFIG_PPPOE=m        or CONFIG_PPPOE=y
CONFIG_N_HDLC=m       or CONFIG_N_HDLC=y
CONFIG_UNIX98_PTYS=y
m -- moduleで組み込むオプション
y -- kernelへ組み込んでしまうオプション

私が今使っている vine linux3.1-2.4.27-0vl7.6ですが、kernelの sourceファイル
http://www.ring.gr.jp/pub/linux/Vine/Vine-3.1/updates/RPMS/i386/kernel-source-2.4.27-0vl7.6.i386.rpm
を展開すると以下のディレクトリーに、通常の rpmで提供されるバイナリを作成したときのデフォルト設定
が書かれていると思われます。

/usr/src/linux-2.4.27/configs/kernel-2.4.27-i686.config

この中の上記必須部分の設定は、以下の様になってるようです。
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPPOE=m
# CONFIG_SLIP is not set

CONFIG_UNIX98_PTYS=y

CONFIG_N_HDLC= は設定項目が無し。

kernelのデフォルト状態でも大丈夫のようですが、せっかくインストールやり直したのだから
試しに kernelを作り直してみよう。と言うことで、以下の設定にして kernelを作り直しました。

CONFIG_PPP=y
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
CONFIG_PPPOE=y
# CONFIG_SLIP is not set

rp-pppoeにあった説明通りにしていません。

上記設定だと、linux立ち上げ時に以下のメッセージが出ます。
Aug 25 18:58:27 vine31 kernel: PPP generic driver version 2.4.2

srcの取得

pppdは、公式の samba.orgより。
rp-pppoeも、公式?から tar.gz形式の srcファイルを Downloadします。

/tmpなどに解凍します
[root]# tar zxvf pppd-2.4.3.tar.gz
{root}# tar zxvf rp-pppoe-3.5.tar.gz

pppdの make

pppd-2.4.3のコンパイルは問題無く終了すると思います。
[root]# cd pppd-2.4.3
[root]# configure
[root]# make
[root]# make install

re-pppoeの make

rp-pppoe3.6のコンパイルは難しかったです。

[root]# cd rp-pppoe3.6/src
[root]# configure --enable-plugin=/tmp/ppp-2.4.3/

ここまで行ったら、configureにて作成された Makefileの 61行目
CFLAGS= -g -O2 -Wall -Wstrict-prototypes -ansi $(LIC_INCDIR) $(DEFINES) $(LIC_DEFINE) $(PATHS) -Ilibevent
これを以下のように変更 (-ansiを削除)
CFLAGS= -g -O2 -Wall -Wstrict-prototypes $(LIC_INCDIR) $(DEFINES) $(LIC_DEFINE) $(PATHS) -Ilibevent

configureをやるたびに Makefileは作成されるので、configureを実行したら makeを実行する前に
-ansiを削除します。

-ansiを削除しないと、makeを行ったときに以下の errorが出てしまいます。
[root]# make
前半部分は省略
In file included from /usr/include/linux/if_pppox.h:21,
                 from plugin.c:56:
/usr/include/asm/byteorder.h:38: error: 文法エラー before "__u64"
/usr/include/asm/byteorder.h:38: error: 文法エラー before "val"
/usr/include/asm/byteorder.h: 関数 `___arch__swab64' 内:
/usr/include/asm/byteorder.h:42: error: 文法エラー before "__u64"
/usr/include/asm/byteorder.h: トップレベル:
/usr/include/asm/byteorder.h:44: error: 文法エラー before '.' token
/usr/include/asm/byteorder.h:52: error: 文法エラー before string constant
In file included from /usr/include/linux/byteorder/little_endian.h:11,
                 from /usr/include/asm/byteorder.h:65,
                 from /usr/include/linux/if_pppox.h:21,
                 from plugin.c:56:
/usr/include/linux/byteorder/swab.h:199: error: 文法エラー before "__fswab64"
/usr/include/linux/byteorder/swab.h:199: error: 文法エラー before "x"
/usr/include/linux/byteorder/swab.h: 関数 `__fswab64' 内:
/usr/include/linux/byteorder/swab.h:206: error: `x' undeclared (first use in this function)
/usr/include/linux/byteorder/swab.h:206: error: (Each undeclared identifier is reported only once
/usr/include/linux/byteorder/swab.h:206: error: for each function it appears in.)
/usr/include/linux/byteorder/swab.h: トップレベル:
/usr/include/linux/byteorder/swab.h:209: error: 文法エラー before "__swab64p"
/usr/include/linux/byteorder/swab.h:209: error: 文法エラー before '*' token
/usr/include/linux/byteorder/swab.h: 関数 `__swab64p' 内:
/usr/include/linux/byteorder/swab.h:211: error: `x' undeclared (first use in this function)
/usr/include/linux/byteorder/swab.h: トップレベル:
/usr/include/linux/byteorder/swab.h:213: error: 文法エラー before '*' token
/usr/include/linux/byteorder/swab.h: 関数 `__swab64s' 内:
/usr/include/linux/byteorder/swab.h:215: error: `addr' undeclared (first use in this function)
make: *** [plugin/plugin.o] エラー 1
http://pukiwiki.damedas.com/index.php?%C8%F7%CB%BA%CF%BFさん、あなたのページが無かったら、このエラー解消できませんでした。ありがとうございます。

-ansiを削除して make,make installを実行します。
[root]# make
[root]# make install

/etc/pppの必要最低限の設定

/etc/ppp内の設定を行います。
まずは pppoe.conf
必要最低限の変更部分です。
USER=hogehoge@nifty.com

chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"hogehoge@nifty.com"    *       "passpass"

pap-secrets
# Secrets for authentication using PAP
# client        server  secret                  IP addresses
"hogehoge@nifty.com"    *       "passpass"

接続テスト

まずは、/etc/ppp/pppoe.confを以下の設定にて、通常モードの ppp接続を行ってみます。
LINUX_PLUGIN=

[root]# pppoe-start
. Connected! [root]#

ps axを行うと、以下のようなプロセスとなっていました。
/bin/sh /usr/sbin/pppoe-connect
/usr/local/sbin/pppd pty /usr/sbin/pppoe -p /var/run/pppoe.conf-pppoe.pid.pppoe -I eth1 -T 80
/usr/sbin/pppoe -p /var/run/pppoe.conf-pppoe.pid.pppoe -I eth1 -T 80 -U -m 1412

それでは次は kernel mode pppoeにて接続してみます。
pppoe.confを以下のように変更し、
LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so

[root]# pppoe-start
. Timed out!

ハイ来ました。
/var/log/messageに残っているログを見ると
Aug 25 19:08:42 vine31 pppd[656]: Plugin /etc/ppp/plugins/rp-pppoe.so loaded.
Aug 25 19:08:42 vine31 pppd[656]: RP-PPPoE plugin version 3.6 compiled against pppd 2.4.3
Aug 25 19:08:42 vine31 pppd[656]: unrecognized option 'rp_pppoe_dev'
Aug 25 19:08:42 vine31 pppoe-connect: PPPoE connection lost; attempting re-connection.

このエラーを出す人はマレのようです。
google.comを全世界で検索しても hitしません。

これは /usr/sbin/pppoe-connectの
PLUGIN_OPTS="plugin $LINUX_PLUGIN rp_pppoe_dev $ETH"
この行の rp_pppoe_devを削除することにより解消しました。
どこかでこの変数は設定されなければならないはずなのに、どうも私の環境では
設定されないようです。原因不明です。
rp_pppoe_devを削除してしまっても kernel modeにて pppoeは接続します。

[root]# pppoe-start
. Connected! [root]# ps ax 1636 pts/0 S 0:00 /bin/sh /usr/sbin/pppoe-connect 1654 ? S 0:00 /usr/local/sbin/pppd plugin /etc/ppp/plugins/rp-pppoe.so eth1 eth1 noipdefault noauth default
eth1 eth1となってるところが異常でしょうか?

8508
戻る