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

7. 現在の設定を知るには?

ここでの「設定」とは PnP バスリソース(アドレス,IRQ, DMA)の割り当ての ことです.「デバイスがどのような設定になっているか?」という問いは,デ バイスとデバイスドライバの両方への問いです.それぞれは同じ答となるはず です.

  1. デバイスドライバのソフトウェアの設定はどうなっているか? (つまり,ドライバはハードウェア設定がどうなっていると考えているのか?)
  2. デバイス自体にはどんな設定がされているのか?

当然,デバイスハードウェアとそのドライバの設定は同じでなければなりませ ん(そして普通は同じです).正常に動作しない場合は,どこかに相違があるの でしょう.つまり,実際のハードウェア設定についてドライバが持っている情 報が誤っているということです.これは問題を起こします.お使いのソフトウェ アが間違っている点を適切に指摘してくれなければ(または正しい設定にして くれなければ),ハードウェアデバイスとそのドライバがどのように設定され ているのかを調査する必要があります.Linux のデバイスドライバは「全部の 情報を表示する」場合もあるはずですが,ハードウェアの設定を調べるのは簡 単ではないかもしれません.

これとは別の問題もあります.つまり,画面に設定に関するメッセージが表示 された時,これがデバイスドライバの設定なのか,デバイスハードウェアの設 定なのか,あるいはその両方なのかがはっきりしないことがあるという問題で す.デバイスドライバを設定した後,ハードウェアがこれと同じ設定になって いるかどうかをデバイスドライバが確認しているならば,ドライバが報告する 設定はハードウェアとドライバ共通の設定になっているはずです.

ですが,これを行わない一部のドライバは,自分自身で確認していない設定を 受け付けることがあります.例えば,"setserial" は確認していない設定も受 け付けます(たとえバスリソースを調べるように指示した場合であっても).このよ うに,"setserial" が表示するのはドライバの設定だけであり,ハードウェアの 設定は表示しません.

設定情報の一部は,コンピュータを起動した時の BIOS のメッセージと, Linux の起動メッセージを読むと得られます.これらのメッセージは流れるの が速すぎて読めないことが多いのですが,メッセージが止まった後に Shift-PageUp を何度か押せばメッセージをスクロールバックさせることがで きます.先に進めるには Shift-PageDown を使います.シェルのコマンドとし て "dmesg" と入力すると,Linux のカーネルメッセージだけならいつでも表 示できます.ただし,(BIOS のメッセージを含む)とても重要なメッセージに は表示されないものもあります.Linux が出力したメッセージは,デバイスド ライバが考えている設定しか示していないかもしれません.この設定はもしか すると,誤りがある設定ファイルから読み込まれているかもしれません.

BIOS からのメッセージはその時点でのハードウェア設定を表示しますが,PnP OS, isapnp, PCI Utilities などが後から設定を変えているかもしれません. BIOS のメッセージは最初に,Linux のメッセージよりも前に表示されます. 後から Shift-PageUp を使ってメッセージを読む代わりの方法として, "Pause" キーを押してメッセージ出力を止める方法を試してください. 何かキーを押せば再び動作を始めます.ただし,Linux からのメッセージが出 力され始めると,"Pause" キーはもう使えません.というのも,"Pause" キー は Linux からのメッセージ出力を止めないからです.

7.1 デバイスドライバはどのように設定されているか?

コマンドラインから実行でき(シリアルポート用の "setserial" のように), 設定を表示するプログラムがあるかもしれません./proc ディレクトリツリー は便利です./proc/ioports はドライバが使っている I/O アドレスを表示し ます(あるいは,アドレスが誤っているかどうかをチェックします).これを 使ってハードウェアの I/O アドレスを設定することはできません.

/proc/interrupts は現在使用中の割り込みだけを表示します.ドライバに 割り当てられている割り込みの多くは,使用中でないために全く表示されませ ん.例えばフロッピードライブにフロッピーディスクが入っていていつでも使 える状態になっていても,実際に使われていなければ割り込みは表示されませ ん.繰り返しますが,ここに表示されるのは,割り込みがハードウェア内に存 在するということではありません.ハードウェアに存在しないことを知るには, この割り込みが発行した別の割り込みが 0 個であると示されているかどうか を見ます.ただし,割り込みがいくつか発行されたと示されていても,この割 り込みは,そのデバイス上で起きたのではなく,使用中でないけれど何らかの 方法で割り込みを 1, 2 個発行した別のデバイス上で起きたのかもしれません. カーネル 2.2 では /proc ツリーの内容が変わっています.

7.2 ハードウェアデバイスはどのように設定されているか?

"lspci" コマンドを使って,PCI バス上のデバイスに対するバスリソース の割り当てを調べるのは簡単です.バージョン 2.2 より前のカーネルでは, /proc/pci によりある程度の情報が得られますが,これを判読する のは簡単ではありません. ISA バスの場合には pnpdump --dumpregs を使おうと思われ るかもしれませんが,これは確実な方法ではありませんし,結果は判読しにく いかもしれません.pnpdump が見つけた「読み出しポートアドレス」と 「見つかったデバイスの I/O アドレス」を混同しないでください.これらは 同じものではありません.

BIOS が起動時に出力するメッセージを見ると,ハードウェア設定がどうなっ ているかがわかります.BIOS に設定を任せているなら,これは以前と同じままのは ずです.Linux の起動時には,ドライバが,ハードウェアがあるかを確認(そ して IRQ と DMA も設定されていればそれも確認)したメッセージを出力しま す.もちろん,デバイスがきちんと動作していれば,デバイスとドライバの設 定は同じになります.


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