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

3. 一般的な設定とカーネルモジュールの問題

3.1 カーネルモジュールのサポート

ここでリストアップされているドライバは、全てカーネル・モジュールとして リリースされています。従って、あなたはモジュールをサポートするカーネルを 持っていることが確実でなければなりません。 加えて以下で更に述べるように、カーネルとバージョンが一致しないモジュールの 使用を援助するために「モジュール・バージョン」のサポートを可能にする必要が あります。 合理的に、最近の Linux ディストリビューションからカーネルを使うのであれば、 たぶんモジュール・サポートはすでに可能になっています。 カーネルをコンパイルするなら Kernel HOWTO 【訳注: 日本語訳が JF プロジェクト にあります。】 を通して、モジュールを可能にする方法を知っていなければなりません。 いずれにせよ、カーネル・コンフィギュレーションファイルに以下の設定が存在する ことを確認するためにチェックできます。 (これは通常 /usr/src/linux にあります):

CONFIG_MODULES=y
CONFIG_MODVERSIONS=y

3.2 サウンドのサポート

これは 2000年10月に新たに確認された問題です。 より多くのハードウェア/ソフトウェアの組み合わせにおける情報が集まるまでは、 あまり信用しすぎないでください。 Marv Stodolsky は、バイナリオンリーの Lucent ドライバ (v5.68) を使うときは、 カーネルでサウンドのサポートを有効にする必要がある (サウンドモジュールを介してのサポートでも OK) ことに気付きました。 そうしないと、ltmodem.o ドライバを使うダイアルイン・セッションが、 ppp プロトコルの初期化の際にアボート (またはハング) してしまうそうです。 全てのオーディオをサポートする OSS ソフトウェア (とサウンドを組み込んでいないカーネル) の組み合わせでは、 ltmodem.o ドライバーで ppp プロトコルをサポートできませんでした。 これらの「サウンド」絡みの問題が、他の Linmodem/オーディオカードの 組に対してどのくらい一般的なものなのかは、今後明らかにする必要があります。

3.3 ISA プラグ・アンド・プレイ

ISA のプラグ・アンド・プレイのモデムをお持ちなら、たぶんリソースをモデム ・カードに割り当てるために isapnptools を使う必要があります。 これには、isapnptools をインストールし、モデム用に /etc/isapnp.conf ファイルにエントリーを持つ必要があります。 Plug-and-Play-HOWTO 【訳注: 日本語訳が JF プロジェクト にあります。】 を読まなければなりませんが、他に心配すべきいかなる ISA デバイスもないなら、 するべきことは基本的に以下のとおりです:

  1. 可能なら BIOS を "Non-PNP OS." に設定して下さい。
  2. ルート権限で pnpdump を実行して、現在のシステムのリソースの 使用状況に基づくプロトタイプの isapnp.conf ファイルを作成します。
  3. この出力からモデムを探し、モデム用に使いたい(または未使用の) IRQ と 一致する行のコメントを外してください。例えば Sean の Thinkpad i1411 用 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) をコメントアウト したままにしておく必要がありました。 これがあなたの環境で動作しない場合は、他方を試してください。

  4. ファイルを /etc/isapnp.conf へコピーしてください
  5. リブートしてください。ブート時のメッセージの途中で 'Initializing ISA PNP devices...OK' という行が表示されるはずです。 これがうまくいかない場合は、たぶん既に使用中の IRQ/DMA の設定を選ん だのでしょう。 pnpdump の出力にある他の選択肢を試してください (正しいフラグ付きで isapnp を実行すれば、たぶんリブートする 必要はないでしょう。但し、ここでは初心者にとって最も簡単なのは単に リブートすることです)。

3.4 PCI モデム

PCI モデムについて cat /proc/pci で得られることより多くの情報が 欲しいときは、pciutils ソフトウェアパッケージ内の scanpcilspci のようなユーティリティが役に立ちます。

【訳注】 以下に私の環境で /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
【訳注終わり】

3.5 モジュール・ツール

以下のコマンドは、モジュールを取り扱う際に役に立ちます。多くは root 権限を 必要とします。これらのコマンドの詳細はマニュアルページ をご覧下さい (例えば man insmod)。

insmod -f

バージョンが一致するカーネル・モジュールは、"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

コマンド modprobe modulename は、モジュールを挿入し そのモジュール(以下で説明する depmod で決定される)で必要とする 全てのモジュールです。

rmmod

モジュールを使用した後、コマンド rmmod でアンロード(カーネルから 取り除く)できます。

depmod

depmod コマンドは、モジュールの依存関係を解析します。 コンパイル済みモジュールと実行中のカーネルの互換性は、以下のようなコマンド でチェックできます。

   depmod -e ltmodem.o
カーネル 2.2.12 でコンパイルされた ltmodem.o と実行中のカーネル 2.2.17 の 特定の場合、返ってくる情報には以下のようなものが含まれます。 unresolved symbols (未解決のシンボル)でモジュールを使用することは、以下に 述べるように危険なことです。


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