これを行う方法は完全にドライバに依存します.ドライバによっては 物理デバイスがどのように設定されたのかを調べる方法を複数個持っています. 最も極端なケースでは,バスリソースをカーネルにハードコーディングして再コン パイルを行わなければなりません.その対極のケースでは,設定は全て自動的 に行われ,ユーザは何もする必要がありません.ハードウェアへのバスリソース設 定でさえも PnP の仕組みを使って行われます.
この中間のケースは,リソース情報をドライバに与えたり,ファイルに設定し たりする場合です.場合によっては,デバイスがありそうなアドレスに対して ドライバが探査を行うこともあります.それから様々な IRQ を調べ,どの IRQ が使えるかを調べようとします.これは自動で行われる場合も行われない 場合もあります.この他に,ドライバが PnP の仕組みを使ってデバイスの存 在とバスリソースの設定を調べることがありますが, 実際の設定は行われません.この情報は /proc ディレクトリ内のいくつかの ファイルにも現われます.
バスリソースをカーネルやローダブルモジュールにパラメータとして与える必要が あることもあります.指定可能なパラメータについては /usr/lib/modules_help/descr.gz をご覧ください.ロードされるモジュール は,/etc/modules にパラメータ付きで列挙されています.場合によっては, バスリソースはパラメータとしてカーネルに与えられることがあります.パラメー タは lilo.conf ファイルに append="..." という形で指定します.このファ イルを編集した後には,設定をカーネルのブートコードに保存するために lilo を実行しなければなりません.
ドライバがバスリソースを見つけるための方法は全くバラバラですが,最終的 な目的は同じです.ハードウェアとそれに対応するドライバは非常にたくさん あるので,ドライバがバスリソースを見つける方法とドライバが必要とする情報を 確実に入手するためになすべきことについては,ドライバ付属の文書を見る必 要があるでしょう.いくつかのドライバに関する簡単な情報を以下の節で説明 します.
標準のシリアルポートドライバ(マルチポートカードを除く)に対しては,
setserial を使ってドライバの設定を行います.setserial は多くの場合,起
動ファイルから実行します.新しいバージョンの setserial は
/etc/serial.conf ファイルを使います.このファイルは seetserial コマン
ドをただ普通に使うことによって「編集」され,setserial
を使って設
定した内容が設定ファイル setserial
に保存されます.
serial.conf
ファイルは,setserial
コマンドが起動ファイル
から実行された時に参照されるはずです.このような設定になっているかどう
かはディストリビューションによって違うかもしれません.
setserial
コマンドは与えるオプションによって,異なる 2 通りの使い
方ができます.使い方の一つは手動でドライバに設定を教えることです.もう
一つの使い方は,指定されたアドレスを探査し,そこにシリアルポートがある
かどうかを報告することです.このアドレスを探査し,このポートに対してど
の IRQ が使われているかの検出を試みることもできます.ドライバは起動時
に setserial
に似たものを実行しますが,IRQ の探査は行わず,誤って
いるかもしれない「標準」の IRQ を割り当てるだけです.ドライバはポート
が存在するかどうかの探査は行います.詳しくは Serial-HOWTO をご覧くださ
い(訳注: JF に日本語訳があります).
I/O アドレス,IRQ, DMA チャネルをパラメータとしてモジュールに与える か,カーネルに組み込まなければなりません.しかし,一部の PCI カードは 自動的に検出されます(多分,lspci コマンド等を使うことによって行われるでしょ う).RedHat には "sndconfig" というプログラムが用意されています.この プログラムは ISA PnP カードを検出し,検出されたバスリソースを使ってモジュー ルのロードの設定を行います.
これらは PnP の仕組みを使ってカードを検出し,適切なドライバの選択 とロードを行います.ISA PnP カードへのリソースの設定も行われます.バスリソー スの衝突を避けるために手動で調整を行う必要があるかもしれません.ALSA ドライバの場合には,ISA PnP の機能は省くことが可能で,希望によっては isapnptools を使うこともできます.