前述のバイナリ・ドライバ用のインストールのドキュメントを作成しました。 添付のドキュメントは(仮に存在するとしても)言葉足らずで、非常にまぎら わしいからです。 ここでは、オープンソース・ドライバのインストールについては言及しません。 というのは、普通はそれ自身のドキュメントにうまく記述されていますし、 パッケージからパッケージへ、そして時々劇的に変化するからです。
Conexantドライバのインストール方法は、分かっている範囲で前に書きました。 このドライバは、まだ完全には検証されていません。
あなたは、以下に示す指示に従うのではなく、ドライバに添付されているインスト ールスクリプトを使いたいと思うかもしれません。
開始する前に、どのように進行するのか、そして問題に出くわすかもしれない ところを把握するために、以下の指示を通読しておくべきです。
お持ちのモデムが ISA PNP モデムの場合、isapnptools を使って PNP リソース が適切に割り当てられることを確認してください(上の「ISA プラグ・アンド・ プレイ」の項をご覧ください)。
お持ちのハードウェア用のドライバの適切な URL は、上記の「どの Linmodem ハードウェアがサポートされますか?」の項をご覧ください。
必要に応じて unzip
(.zip の場合)、tar -zxvf
(.tar.gz
の場合)、その他を使って、空のディレクトリでドライバ・パッケージを展開
してください。some-driver.o
のような名前のバイナリファイルが
入っているはずです。(次のステップでは例として、モジュールは
ltmodem.o
という名前にしています)
モジュール挿入の試みは、最初にチェックすべきことです。その結果が必ずしも 最終的な成功を意味するわけではないですが、残りのステップに時間を費やす 価値があるかどうかを示す公平な尺度です。
ファイルが解凍されたディレクトリで、 ltmodem.o
をお持ちのモデム
用の適切なモジュール名に変えて、以下のステップを実行してください:
最初に、以下のように単純にモジュールを挿入してみましょう:
insmod ltmodem.o以下のように愚痴を言うかもしれません:
kernel-module version mismatch ltmodem.o was compiled for kernel version 2.2.12-20 while this kernel is version 2.2.14.
【訳注:このエラーメッセージの意味。 カーネルモジュールのバージョンが一致しません。 ltmodem.o はカーネルバージョン 2.2.12-20 用にコンパイルされて いますが、このカーネルはバージョン 2.2.14 です。】こうなった場合は、次のように強制的に挿入します。
insmod -f ltmodem.oこのようにしてから、カーネルへの挿入が成功したかチェックします:
lsmod挿入が成功すると以下のように
ltmodem.o
を含むリストが表示されます。
Module Size Used by ltmodem 453200 0 (unused) nls_iso8859-1 2268 1 (autoclean) nls_cp437 3744 1 (autoclean) vfat 9052 1 (autoclean) fat 29248 1 (autoclean) [vfat]: ...
モジュール (ltmodem) が挿入されない場合は、未解決の問題があります。
some-driver.o
が、モデム・ハードウェアに適合していないのかも
しれません。カーネルと、モジュールがコンパイルされたそれぞれのソースの
間の差がありすぎるのかもしれません。または、そのモジュールは、
前もってロードされる別のモジュールを必要としているのかもしれません。
(PCTel パッケージには、2つのモジュールを持つものがあります。
この二つの挿入する順序を逆にしてみたらどうでしょう?)。
これまでの努力を完全に放棄する前に、バージョンがぴったりと一致するカーネル
をインストールし、テストしてみるとよいでしょう。
Linux カーネル
のソースファイルはダウンロード可能であり、コンパイル済みのカーネルは多くの
Linux ディストリビューションで利用できます。
挿入が成功したら、先に進む価値があります。
以下のステップで、最後のもの以外は全てオプションですが、強制せずに、かつ バージョン不一致の警告メッセージなしでモジュールを挿入することができます。 (ESS モデムの場合、以下の "ltmodem" を"esscom" に置き換えてください。)
mkdir /root/modem
および cd /root/modem
と入力してください。/root/modem/fixscript
という名前のファイルにセーブしてください。chmod +x fixscript
でスクリプト実行可能にします。 mv ltmodem.o ltmodem.2212.o
./fixscript ltmodem.2212.o ltmodem.o
insmod ltmodem.o
(これは、バージョンの警告をせずに挿入するはずです)cp ltmodem.o /lib/modules/`uname -r`/misc/ltmodem.o
(`uname -r` は、現在実行しているモジュールを指定します)
最後の3つのステップは、新しいカーネルがインストールされるたびに繰り 返す必要があり、新しいカーネルでのセッションの間「のみ」有効です。
Linux カーネルが 2.2.15-x またはそれより新しいものを実行しているなら、
次のステップで説明するように、カーネル2.2.14(これの上でも "fixscript"
を使用する必要があります)からppp.o
モジュールを得る必要があります。
PCTel モジュール・パッケージには明らかに 2つのタイプがあります。
/lib/modules/2.2.16
にインストールするパッケージ
(rpm または deb 形式)
このようなパッケージで、2.2.16 より新しいカーネルを実行している場合、 前記の Lucent と ESS モジュールで使用した "fixscript" の方法を試す必要が ありますが、私はまだ実際に試してみたらどうなるか経験していません。 2.2.16 より古いカーネルを実行しているなら、カーネルをアップグレードする ことを考えるか、さもなければ同様に fixscript すること(これも動作が保証 されていません)を試す必要があります。 2.2.14 ppp.o モジュールを入手するべきではありません。 これらが動作した場合は、私にレポートを送ってください。
mkdir lib mkdir src mkdir src/module mv *.a lib/ mv Makefile *.c src/module
それでは src/module/ ディレクトリへ行って make
と入力してくだ
さい。これはモジュール・ファイル pctel.o
を生成し、
lib
ディレクトリにバックアップができるはずです。
(ドライバモジュールは、src/module
のファイル ptmodule.o
ではありません!)
このようにして作成されるモジュールのバージョンは、現在のカーネル・バー ジョンと一致します。
ppp.o
をフィックスする
Lucent または ESS モデムを持っていて、しかもカーネルが 2.2.15-x より新しい なら、2.2.14 ソースからの ppp.o を使用する必要があります。 このモジュールのコピーは、下記から入手できます http://walbran.org/sean/linux/stodolsk/ppp2214.o.
これは、以下で説明するようにして、適切な /lib/modules/`uname -r`/net
ディレクトリにコピーできます。
insmod -f ppp.o
で強制することを避けるために、ここで説明する
カーネル・バージョン 2.2.17 の不一致の例のように、不一致の ppp.o は
バージョンをフィックスすることができます。
su root
および、パスワードを入力します。
ワーキングディレクトリを cd /root/modem
に変更します。fixscript ppp2214.o pppfix.o
rmmod ppp
insmod pppfix.o
で不一致の愚痴を言うことなく進行します。lsmod
で、ppp が挿入された一覧表が表示されます。
/lib/modules/2.2.17/net/ppp.o
があることを確認し、リネ
ームします:
mv /lib/modules/2.2.17/net/ppp.o /lib/modules/2.2.17/net/ppp2217.oそして、修正した pppfix.o を置きます。
cp pppfix.o /lib/modules/2.2.17/net/ppp.o
他のモジュール (例えば ltmodem.o
,esscom.o
,
pctel*.o
) を、下記ディレクトリにまだコピーしていないなら。
/lib/modules/`uname -r`/misc/
mknod /dev/ttyS14 c 62 78
mknod /dev/ttyS15 c 62 79
mknod /dev/esscom c 127 1
wvdial
のような ttyS* 型式の名前を認識するだけの
ppp ダイアラを使いたいと思うかもしれません。
注:しかし、その wvdial
はカーネル 2.2.16
(そして、おそらく他でも)の下で、このモジュールと ppp-off で
カーネル・パニックを起こすと報告されています。
しかしこれは、一般的な状況でないかもしれません。chgrp uucp /dev/ttyS14 chmod 666 /dev/ttyS14グループの定義は
/etc/group
で変更できます。
ln -s /dev/
yourdevicefile /dev/modem
【訳注:yourdevicefile は、実際は ttyS14 とか ttyS15 です】
注: 前記の「モジュールとカーネルバージョンの調整」のステップを省略した 場合、ここで "insmod -f" を使用する必要があります。
insmod ltmodem
insmod essmodem
insmod pctel
多くの場合、Linux システムでは新しい "serial" デバイス /dev/ttyS14
または 15
の追加を通知する必要があります。
利用可能なドライバは、カーネルバージョン 2.2.x (x は10台)用にコンパイル されている傾向があります。しかし、何らかの理由でカーネルのアップデートが できない/したくない場合のために、 Werner Heuser (wehe(at)snafu.de) が 以下のような古いカーネル用の助言をしています。
カーネル 2.0.x では、シリアルポートはシリアルドライバのソース自身、つまり
/usr/src/linux/drivers/char/serial.c
の中で定義されています。
2.1.98 以降では、これらは /usr/src/linux/include/asm-i386/serial.h
に移され、かつカーネル・コンフィグレーション中は CONFIG_SERIAL_MANY_PORTS,
MULTIPORT, SHARE_IRQ を必要とします。
デバイスファイルの適切な行を変更することができます。
たとえば、
/* UART CLK PORT IRQ FLAGS */ ... { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS14 (spare; user configurable) */ { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS15 (spare; user configurable) */のどちらかの行を、
{ 0, BASE_BAUD, 0x0260, 3, STD_COM_FLAGS}},のように、あなたのハードウェア用に適切なポート/IRQ で、変更します。 これらの変更をした新しいカーネルをブートするとき、以下のようなメッセージ が表示されるでしょう。
Serial driver version 4.13 with no serial options enabled 【訳注:シリアルオプションを有効にしていないシリアルドライバ version 4.13】 tty00 at 0x03f8 (irq = 4) is a 16550A tty14 at 0x0260 (irq = 3) is a 16550A
最近の Linux カーネルでは、通常 /etc/serial.conf
ようなスクリプト
ファイル とプログラム setserial
が、シリアルポートのパラメータを
管理するために使われます。
その設定は、明らかに選択したカーネル/ディストリビューションに依存します
が、たぶん新しいデバイスに適応させるために修正する必要があります。
このような修正のために最も参考になるのが、David S. Lawyer の優れた
Serial HOWTO
で、特に
Setserial
のセクションです。特に、彼はここで「ラップトップ(PCMCIA)では決して
setserial を使わないように」と注意しています。
ご使用のディストリビューションのドキュメントは、特定のデフォルトと使用
されている初期化スクリプトについて、より多くの情報を提供しているはずです。
例えば Sean の Lucent LT モデム付きラップトップは、Red Hat 6.2/kernel
2.2.14-5 を実行していますが、/etc/serial.conf
を修正する必要
がありません(実際は存在しません)。
しかし Debian をインストールした Marvin の PCI Lucent winmodem は、
/etc/serial.conf
ファイルに以下のセクションが必要です。
# These are two spare devices you can use to customize for # some board which is not supported above.... # #Lucent Modem driver version 4.27.5.66 # ltmodem.o was compiled for kernel version 2.2.12-20 # with MANY_PORTS MULTIPORT SHARE_IRQ enabled # ttyS14 at 0x0260 (irq = 3) is a Lucent /dev/ttyS14 uart 16450 port 0x0260 irq 3 #/dev/ttyS15 uart XXXXX port XXXX irq X # These are the ports used for either the Usenet Serial II # board, or the Boca Board 4, 8, or 16 port boards.
あなたの特有の設定で、割り込み(IRQ)の割当てが衝突するものは何であろうと 通常は避けるべきです。 シリアルポートのプロパティ情報は、次のようにして表示できます:
setserial -agv /dev/ttyS*これは、以下のような情報を返します:
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4 Baud_base: 115200, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal skip_test session_lockout /dev/ttyS14, Line 14, UART: 16950/954, Port: 0x0260, IRQ: 3 Baud_base: 115200, close_delay: 50, divisor: 0 closing_wait: 3000 Flags: spd_normal skip_test
ここで、あなたはたぶん minicom
のような小さなターミナルプロ
グラムでダイアリングを試してみたいと思うでしょう。
これらのスクリプトの名前と位置は、特定の Linux ディストリビューション (Redhat, Debian, Suse およびその他色々)と、(kppp や wvdial のような)特定 のダイアルアップを仲介するソフトウェアに依存します。 多くのディストリビューション/ダイアルアップ・ソフトウェアには、入力を要求し 、自動的にダイアルアップ・スクリプトを作成する設定ユーティリティがあります。 最低限必要な情報は以下のとおりです。
何か問題が起きたら PPP ダイアラのドキュメント、および/または、 PPP-HOWTO をご覧ください。 Debian での pppconfig の特定のサンプルのスクリプトが付録にあります。
ppp ダイアラで ISP への接続を試してみてください。
おめでとう!
ちくしょう!
それを解決するための若干のアイデアについて、この HOWTO の トラブルシューティングと FAQ のセクションをご覧ください。
ダイアルするたびにモジュールをカーネルに挿入することを避けるには、 付録の「ppp 関連モジュールの挿入と削除の一致」の項をご覧ください。