8.4. コンフィグレーションファイル
戻る〓 | 第8章 FreeBSD カーネルのコンフィグレーション | 〓次へ

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

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

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

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

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

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

これで、``MYKERNEL`` を ASCII テキストエディタで編集できます。 初心者に対してより簡単なエディタである 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` に追加された新しい機能は、 (`nooptions` や `nodevice` によって外されない限り) ローカルのカーネルにも反映されます。 コンフィグレーションの構成要素に関する包括的な一覧と説明は config(5) にあります。

### 注記:

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

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

戻る〓 | 上に戻る | 〓次へ
8.3. システムのハードウェアについて知る〓 | ホーム | 〓8.5. カスタムカーネルの構築とインストール

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

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