ここでリストアップされているドライバは、全てカーネル・モジュールとして
リリースされています。従って、あなたはモジュールをサポートするカーネルを
持っていることが確実でなければなりません。
加えて以下で更に述べるように、カーネルとバージョンが一致しないモジュールの
使用を援助するために「モジュール・バージョン」のサポートを可能にする必要が
あります。
合理的に、最近の Linux ディストリビューションからカーネルを使うのであれば、
たぶんモジュール・サポートはすでに可能になっています。
カーネルをコンパイルするなら
Kernel HOWTO
【訳注: 日本語訳が
JF プロジェクト
にあります。】
を通して、モジュールを可能にする方法を知っていなければなりません。
いずれにせよ、カーネル・コンフィギュレーションファイルに以下の設定が存在する
ことを確認するためにチェックできます。
(これは通常 /usr/src/linux
にあります):
CONFIG_MODULES=y CONFIG_MODVERSIONS=y
これは 2000年10月に新たに確認された問題です。 より多くのハードウェア/ソフトウェアの組み合わせにおける情報が集まるまでは、 あまり信用しすぎないでください。 Marv Stodolsky は、バイナリオンリーの Lucent ドライバ (v5.68) を使うときは、 カーネルでサウンドのサポートを有効にする必要がある (サウンドモジュールを介してのサポートでも OK) ことに気付きました。 そうしないと、ltmodem.o ドライバを使うダイアルイン・セッションが、 ppp プロトコルの初期化の際にアボート (またはハング) してしまうそうです。 全てのオーディオをサポートする OSS ソフトウェア (とサウンドを組み込んでいないカーネル) の組み合わせでは、 ltmodem.o ドライバーで ppp プロトコルをサポートできませんでした。 これらの「サウンド」絡みの問題が、他の Linmodem/オーディオカードの 組に対してどのくらい一般的なものなのかは、今後明らかにする必要があります。
ISA のプラグ・アンド・プレイのモデムをお持ちなら、たぶんリソースをモデム
・カードに割り当てるために isapnptools を使う必要があります。
これには、isapnptools をインストールし、モデム用に
/etc/isapnp.conf
ファイルにエントリーを持つ必要があります。
Plug-and-Play-HOWTO
【訳注: 日本語訳が
JF プロジェクト
にあります。】
を読まなければなりませんが、他に心配すべきいかなる ISA デバイスもないなら、
するべきことは基本的に以下のとおりです:
pnpdump
を実行して、現在のシステムのリソースの
使用状況に基づくプロトタイプの isapnp.conf ファイルを作成します。
(CONFIGURE ACRd119/1 (LD 0 (INT 0 (IRQ 11 (MODE +E))) (IO 1 (SIZE 8) (BASE 0x0100) (CHECK)) (NAME "ACRd119/1[0]{LT Win Modem }") # (ACT Y) ))不思議なことに、少なくともこの場合は
#(ACT Y)
をコメントアウト
したままにしておく必要がありました。
これがあなたの環境で動作しない場合は、他方を試してください。
/etc/isapnp.conf
へコピーしてくださいpnpdump
の出力にある他の選択肢を試してください
(正しいフラグ付きで isapnp
を実行すれば、たぶんリブートする
必要はないでしょう。但し、ここでは初心者にとって最も簡単なのは単に
リブートすることです)。
PCI モデムについて cat /proc/pci
で得られることより多くの情報が
欲しいときは、pciutils
ソフトウェアパッケージ内の
scanpci
と lspci
のようなユーティリティが役に立ちます。
【訳注】 以下に私の環境で /proc/pci, scanpci, lspci の各コマンドを 実行した結果(モデムに関する部分のみ)を示します。
# cat /proc/pci の場合
Bus 0, device 9, function 0: Communication controller: Lucent (ex-AT&T) Microelectronics Unknown device (rev 1). Vendor id=11c1. Device id=442. Medium devsel. Fast back-to-back capable. IRQ 3. Master Capable. No bursts. Min Gnt=252.Max Lat=14. Non-prefetchable 32 bit memory at 0xefffbf00 [0xefffbf00]. I/O at 0xde00 [0xde01]. I/O at 0xdc00 [0xdc01].
# scanpci -v の場合
pci bus 0x0 cardnum 0x09 function 0x0000: vendor 0x11c1 device 0x0442 Device unknown CardVendor 0x13e0 card 0x0412 STATUS 0x0290 COMMAND 0x0107 CLASS 0x07 0x80 0x00 REVISION 0x01 BASE0 0xefffbf00 addr 0xefffbf00 MEM BASE1 0x0000de01 addr 0x0000de00 I/O BASE2 0x0000dc01 addr 0x0000dc00 I/O MAX_LAT 0x0e MIN_GNT 0xfc INT_PIN 0x01 INT_LINE 0x03 BYTE_0 0xff BYTE_1 0xff BYTE_2 0xff BYTE_3 0xff
$ man lspci でコマンドの使い方が表示されます。
# /sbin/lspci -v の場合
00:09.0 Communication controller: Lucent Microelectronics 56k WinModem (rev 01) Subsystem: GVC Corporation LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd Flags: bus master, medium devsel, latency 0, IRQ 3 Memory at efffbf00 (32-bit, non-prefetchable) I/O ports at de00 I/O ports at dc00 Capabilities: [f8] Power Management version 2【訳注終わり】
以下のコマンドは、モジュールを取り扱う際に役に立ちます。多くは root 権限を
必要とします。これらのコマンドの詳細はマニュアルページ をご覧下さい
(例えば man insmod
)。
バージョンが一致するカーネル・モジュールは、"insmod
モジュール名" コマンドを使って挿入されます。モジュールが現在の
ものとは異なるカーネルの下でコンパイルされている場合、insmod
は
バージョンが一致しないことを報告し、モジュールのロードは失敗するでしょう。
"insmod -f
モジュール名" として、強制フラグ (-f) を
つけて、バージョンの不一致にかかわらず、モジュールをロードすることも
できます。
モジュールが使うカーネル・インタフェースが、本当にカーネル・バージョンで
変わらないなら、このようにモジュールを強制的にロードしてモジュールを動作
させることができます。
このことは、例えば ESS モデム・モジュールである esscom.o
などにも
当てはまります。このドライバが 2.2.12 でコンパイルされたとしてみましょう。
これは 2.2.12 以降のカーネルにも強制的に挿入でき、程度の大小はありますが、
2.2.14 までのカーネルでなら何も変更しなくても機能します。
2.2.15 以降になると、以下で述べる tty.h
へのパッチが必要になります。
しかし、2.4.0-testX のソースからコンパイルされたカーネルに対しては、
大きな変更がされているため、強制的な挿入を行うことすらできません。
コマンド modprobe
modulename は、モジュールを挿入し
そのモジュール(以下で説明する depmod
で決定される)で必要とする
全てのモジュールです。
モジュールを使用した後、コマンド rmmod
でアンロード(カーネルから
取り除く)できます。
depmod
コマンドは、モジュールの依存関係を解析します。
コンパイル済みモジュールと実行中のカーネルの互換性は、以下のようなコマンド
でチェックできます。
depmod -e ltmodem.oカーネル 2.2.12 でコンパイルされた ltmodem.o と実行中のカーネル 2.2.17 の 特定の場合、返ってくる情報には以下のようなものが含まれます。