9.4. カーネルドライバ、サブシステムとモジュール

カスタムカーネルを構築する前に、再構築する理由を考えてください。 ある特定のハードウェアに対応することが目的であれば、 そのハードウェアに対応するためのモジュールがすでに用意されている場合には再構築の必要はありません。

カーネルモジュールは、 /boot/kernel ディレクトリにあります。kldload(8) によって、 すでに実行中のカーネルに動的に読み込まれているモジュールもあるかもしれません。 すべてというわけではありませんが、ほとんどのカーネルドライバには、 モジュールやマニュアルページが用意されています。 たとえば、前の章で例として出た ath ワイヤレスイーサネットドライバのマニュアルページには以下の記述があります。

Alternatively, to load the driver as a module at boot time, place the
following line in loader.conf(5):

    if_ath_load="YES"

ここで示された手順通り、 /boot/loader.conf ファイルに if_ath_load="YES" 行を追加すると、 起動時にモジュールが読み込まれるようになります。

ただし、特定のサブシステムであったり、 とても重要なドライバのような場合には、 対応するモジュールが存在しないこともあります。 たとえば、Fast File System (FFS) は、 カーネルでのみ設定可能なオプションです。 ネットワークサポート (INET) も同様です。 残念ながら、ドライバが必要かどうかを知るには、 モジュールそのものを調べる方法しかありません。

警告カーネルを壊すことは簡単で、 デバイスやオプションのサポートをビルドから削除するだけで壊れてしまうことがあります。 たとえば、ata(4) ドライバをカーネルコンフィグレーションファイルから除くと、 ATA ディスクドライバを用いるシステムは、 loader.conf に記述がないかぎり起動しません。 もし、確信がないのであれば、モジュールを確認し、 カーネルにサポートを残したままにしてください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <[email protected]> まで (英語で) 連絡してください。
本文書に関する質問については、<[email protected]> まで電子メールを (英語で) 送ってください。