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

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

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

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

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

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

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

7.1 起動時のメッセージ

設定情報の一部は,コンピュータを起動した時の 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.2 デバイスドライバはどのように設定されているか?

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

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

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

"lspci" コマンドを使って,PCI バス上のデバイスに対するバスリソースの 割り当てを調べるのは簡単です.バージョン 2.2 より前のカーネルでは, /proc/pci/proc/bus/pci を参照しましょう.また /proc/pci の IRQ は 16進数表記で表示されることに注意してくださ い./proc/bus/pci/devices の解読について心配する必要はありません. "lspci" が代わりに行なってくれます.

ISA バスの場合には pnpdump --dumpregs を使おうと思われるかもし れませんが,これは確実な方法ではありませんし,結果は判読しにくいかもしれ ません.また pnpdump が見つけた「読み出しポートアドレス」と「見つかっ たデバイスの I/O アドレス」を混同しないでください.これらは同じものでは ありません.ISA バス上(あるいは PnP の昔のもの)に見つからないハードウェ アを検出するには,"scanport" プログラムを試してみてください.ただし PC がハングする危険性があることに注意しましょう.また,これは IRQ の表示は 行ないませんし,確実にハードウェアを認識するわけではありません.

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


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