9.4. コンフィグレーションファイル

カスタムカーネルのコンフィグレーションファイルを作成し、 カスタムカーネルを構築するには、 FreeBSD の全ソースツリーがまずインストールされている必要があります。

もし /usr/src/ が存在していなかったり、空であれば、 カーネルのソースはインストールされていません。 Subversion を使う」 で説明した Subversion を使ってソースをインストールしてください。

ソースをインストールしたら、 /usr/src/sys を確認して下さい。 このディレクトリには、いくつものサブディレクトリがあります。 その中には、サポートされている各アーキテクチャ amd64, i386, ia64, pc98, powerpc および sparc64 のサブディレクトリがあります。 各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。 残りのコードは、アーキテクチャに依存しない、 すべてのプラットフォームで共有されるコードです。 サポートされている各アーキテクチャには、 conf サブディレクトリがあり、 そのアーキテクチャ用の GENERIC カーネルコンフィグレーションファイルが用意されています。

この GENERIC は編集しないでください。 かわりに、このファイルを別名でコピーし、コピーを編集してください。 慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSD マシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として MYKERNEL という名前の amd64 アーキテクチャ用の GENERIC コンフィグレーションファイルのコピーを作成します。

# cd /usr/src/sys/amd64/conf
# cp GENERIC MYKERNEL

これで、MYKERNELASCII テキストエディタで編集できます。 初心者に対してより簡単なエディタである ee も FreeBSD とともにインストールされていますが、 デフォルトのエディタは vi です。

コンフィグレーションファイルのフォーマットはシンプルです。 各行はデバイスやサブシステム、引数、または簡単な説明を含んでいます。 # に続くテキストはすべてコメントとして扱われ、 無視されます。 カーネルからデバイスもしくはサブシステムのサポートを外すには、 対応する行の最初に # を入れてください。 理解していない行に対しては、# を追加したり削除しないでください。

警告:

デバイスやオプションのサポートを外すことは簡単で、 その結果、カーネルを壊すことがあります。 たとえば ata(4) ドライバをカーネルコンフィグレーションファイルから除くと、 ATA ディスクドライバを用いているシステムは起動しません。 確信が持てないものについては、 カーネルにサポートを残したままにしてください。

このファイルで与えられる説明の他に、 そのアーキテクチャの GENERIC と同じディレクトリにある NOTES にも説明があります。 アーキテクチャに依存しないオプションについては、 /usr/src/sys/conf/NOTES をご覧ください。

ヒント:

カーネルコンフィグレーションファイルの編集を終えたら、 ファイルのバックアップを /usr/src 以外の場所に保存してください。

または、カーネルコンフィグレーションファイルは他の場所において、 シンボリックリンクを張る方法もあります。

# cd /usr/src/sys/amd64/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL

コンフィグレーションファイルでは include ディレクティブを利用できます。 コンフィグレーションファイルに他のファイルを取り込むことができるので、 すでに存在するファイルに対する小さな変更の管理が簡単にできます。 オプションやドライバの追加が少しだけの場合には、 以下の例のように GENERIC からの差分による管理が可能になります。

include GENERIC
ident MYKERNEL

options         IPFIREWALL
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT

この方法では、ローカルのコンフィグレーションファイルには、 ローカルにある GENERIC カーネルとの差分が記述されています。 アップグレードが行われると、 GENERIC に追加された新しい機能は、 (nooptionsnodevice によって外されない限り) ローカルのカーネルにも反映されます。 コンフィグレーションの構成要素に関する包括的な一覧と説明は config(5) にあります。

注記:

利用可能なすべてのオプションを含むファイルを構築するには、 以下のコマンドを root 権限で実行してください。

# cd /usr/src/sys/arch/conf && make LINT

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

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。