次のページ 前のページ 目次へ

4. PPxP, userlink, mgetty

4.1 PPxPへのパッチ当てとパッケージ作成

PPxPはダイアルアップPPPサーバの核となるPPPプロトコルの処理を行うソフトです。 ここでは Vine Linux 2.0 に入っている 0.99072807 の物を用いましたが、 最新版の 0.99120923 でもファイルでのユーザ認証に失敗するという問題があるため、 このパッチを当てて対処する必要があります。

・PPxPソースパッケージの展開
# rpm -ivh /mnt/cdrom/SRPMS/ppxp-0.99072807-7.src.rpm
・パッチファイルを所定の場所にコピー
# cp ~/ppxp-authfile.patch /usr/src/redhat/SOURCES/
・SPECファイルの修正(任意のテキストエディタで)
# cd /usr/src/redhat/SPECS
# vi ppxp.spec

[変更内容]
release番号や、Vender等の情報を変更。

%define release 7.1

Patch1: 行の後に次の行を追加。

Patch2: ppxp-authfile.patch

%patch1 -p1 行の後に次の行を追加。

%patch2 -p1

%changelog に変更履歴を記載。

・バイナリ、ソースの各 RPM ファイルを生成
# rpm -ba ppxp.spec

これで、/usr/src/redhat/RPMS/i386/ 下に ppxp-0.99072807-7.1.i386.rpm が、 /usr/src/redhat/SRPMS/ 下に ppxp-0.99072807-7.1.src.rpm ができたはずです。

・作成したバイナリパッケージをインストール
# rpm -ivh /usr/src/redhat/RPMS/i386/ppxp-0.99072807-7.1.i386.rpm
※既に PPxP パッケージが導入済みの場合は、更新で行ってください。
# rpm -Uvh /usr/src/redhat/RPMS/i386/ppxp-0.99072807-7.1.i386.rpm

なお、既に PPxPパッケージが入っていた場合に、 ファイルが競合するといったエラーが出る場合があります。 --forceオプションをつければ強制的に更新インストールできますが、 それ以外のエラーが出る可能性もありますから、 闇雲に --force は付けず、よく理解して行ってください。 むしろ、rpm -e ppxp で先にパッケージを削除してから始めた方が いいかもしれません。

4.2 userlinkの作成

userlink は、PPxP で使用される専用トンネルデバイスです。 Vine Linux 2.0RedHat6.2J では ethertap を使って動作させているので userlinkが無くてもザウルスだけの接続には支障ありませんが、 ppxpd を複数起動している場合にうまくいかない場合がありますので、 できれば userlink を作成して導入するのがベストです。

・userlink のソースを展開する (作業ディレクトリは仮に /usr/local/src とする)
# cd /usr/local/src
# tar -xzvf ~/userlink-0.99a.tar.gz
# cd /usr/local/src/userlink-0.99a
# ./configure
# make
# make install
これで、userlink.o がシステムのモジュールディレクトリにコピーされ完了となります。 新しいモジュールを追加したので、念のために次も実行しておいてください。
# depmod -a
正しく動作するかは、modprobe userlink を実行し、 /sbin/lsmod でロード済みモジュール一覧に userlink が表示されるかを見ればいいでしょう。 ppxp を起動した時のinterface:の表示(tap0, ul0 等)を見れば ethertap を使ってるか、 userlink を使ってるかがわかります。

4.3 mgettyへのパッチ当てとパッケージ作成

mgetty は、シリアルポートに接続したモデムを共有状態のまま監視し、 何か受信したらその内容に応じて FAX受信や PPPサーバ、通常のログイン処理と、 様々に切り分けを行ってくれるソフトです。 ダイアルアップPPPサーバとして用いるだけでは少々オーバースペックなのですが、 ポートの監視とモデムの扱いが上手いため、これを用いることにしました。

ところで、本来はモデムを初期化してその応答を監視するのが mgetty なのですが、 今回は逆に mgetty側がモデムのふりをしなければなりません。 まるっきり正反対の立場というわけです。

当初、大掛かりな変更が必要かと思いましたが、 ソースを見たところモデム無しで直接クロスケーブルで接続するモードがあり、 PPPフレームさえ流せば即接続できるようになっていました。 ザウルスの場合、PPPフレームを流す前に赤外線公衆電話や外部PHSアダプターとの やり取りがあるのでそのままではいけませんが、 このダイレクトモードにちょっと細工してやれば使えそうです。

そこでちょっと安易な変更ですが、 ダイレクトモードの場合に即座に処理を始めるのではなく、 一旦モデムのエミュレート処理を動かすようにパッチを当ててみました。 変更個所は mgetty.c の データ受信待ち部分と、 ring.c へのモデムエミュレート処理の追加です。 このパッチ当ての結果、本来のダイレクトモード(直接接続)が利用できなくなりますが、 簡易(安易)な改造で済むということでこれでやってみます。

これと同時に、mgetty の設定ファイル名 login.config をコマンドラインオプションで 変更できるよう conf_mg.c に1個所修正を加えました。 複数の mgetty を動作させておき、それぞれで起動するプロセスを変えたい場合に有効です。

・mgetty ソースパッケージの展開
# rpm -ivh /mnt/cdrom/SRPMS/mgetty-1.1.21-2.src.rpm
・パッチファイルを所定の場所にコピー
# cp ~/mgetty.modem_emu.patch /usr/src/redhat/SOURCES/
・SPECファイルの修正(任意のテキストエディタで)
# cd /usr/src/redhat/SPECS
# vi mgetty.spec

[変更内容]
release番号や、Vender等の情報を変更。

Release: 2.1

Patch8: 行の後に次の行を追加。

Patch9: mgetty-modem_emu.patch

%patch8 行の後に次の行を追加。

%patch9 -p1

%changelog に変更履歴を記載。

・バイナリ、ソースの各 RPM ファイルを生成
# rpm -ba mgetty.spec
これで、/usr/src/redhat/RPMS/i386/ 下に mgetty-1.1.21-2.1.i386.rpm が、 /usr/src/redhat/SRPMS/ 下に mgetty-1.1.21-2.1.src.rpm ができたはずです。

・作成したバイナリパッケージをインストール
# rpm -ivh /usr/src/redhat/RPMS/i386/mgetty-1.1.21-2.1.i386.rpm
※既に mgetty パッケージが導入済みの場合は、更新で行ってください。
# rpm -Uvh /usr/src/redhat/RPMS/i386/mgetty-1.1.21-2.1.i386.rpm

ちょっと面倒に感じるかもしれませんが、 こうして バイナリRPM ファイルを作ってしまえば、 同じディストリビューションであれば、 ほぼそのまま持っていってインストールできますし、 動かない場合でもソースRPMファイルがあれば rpm --rebuild で再生成できますので、なかなか便利なものです。

今回の場合は、デスクトップ機で PPxP と mgetty のバイナリRPMを作成し、 それを開発環境を持たないノート機に持っていってインストールしました。


次のページ 前のページ 目次へ