CONFIG(5)

名称
config - カーネル設定ファイルの形式

解説
カーネル設定ファイルには、 FreeBSD カーネルの設定を指定します。 これは make(1) を使ってビルドする、カーネルのビルド環境を生成するために、 config(8) によって処理されます。

  構文構造
カーネル設定ファイルは、一連の指示ディレクティブからなります。

指示ディレクティブは、行頭のキーワードで始まり、付加的な引数がそれに続きます。

指示ディレクティブは、セミコロン ‘’; か改行で終了できます。 長い入力行は、空白で始まる行を続けることで、短い行に分割することができます。

大文字/小文字には意味があり、 “machine” と “MACHINE” は異なるトークンです。

ダブルクォート文字の ‘"’ は、クォート文字列の始まりです。 次のクォート文字までの全ての文字は、クォート文字列としての値を持ちます。 ‘"’ 文字は ‘\"’ シーケンスを用いることで、クォート文字列の中に入れることが出来ます。

数値は C 風 の文法で記されます。

‘#’ 文字はコメントの始まりです。 ‘#’ 文字の後ろから、その行末までの全ての文字は無視されます。

クォート文字列の中を除き、トークンの間の空白は無視されます。 コメント行に続く空白は無視されます。

  設定ディレクティブ
カーネル設定ディレクティブは、カーネル設定ファイル中において任意の順番で 現れることが出来ます。 ディレクティブは現れる順番に、後のディレクティブ行で それ以前のディレクティブの効果を上書きするようにして処理されます。

キーワードとその意味のリストは、以下のようなものです。

cpu cputype
    このカーネルを動かすであろう CPU を指定します。 ひとつ以上の cpu ディレクティブを設定ファイル中に書くことが出来ます。 CPU 名として指定可能なリストはアーキテクチャ固有であり、ファイル sys/conf/options.<arch> で定義されています。

device name [count]
    デバイス name をカーネルイメージに含めるように設定します。 もし count を指定した場合、そのデバイスは count 個のインスタンスとして設定されます。 全てのアーキテクチャで共通のデバイスは、ファイル sys/conf/files で定義されています。 アーキテクチャ固有のデバイスは、ファイル sys/conf/files.<arch> で定義されています。

env filename
    カーネルの環境定義を含んだファイルの名前を指定します。 カーネルは通常、起動時に loader(8) によって用意された環境を用います。 このディレクティブは、この起動環境を無視し、代わりにコンパイル時に 組み込まれた環境をカーネルが使うようにします。

    このディレクティブは、 loader(8) から起動しないような組み込み環境向けにカーネルをチューニングする時に 有用です。

files filename
    そのカーネル設定ファイルに固有のファイルのリストを含むファイルを 指定します ( files.<arch> という風に )。

hints filename
    静的なデバイス設定指示のために読み込むファイルを指定します。 FreeBSD 5.0 以降、カーネルは起動時に、システムのデバイス設定を読み込みます ( device.hints(5) を参照)。 このディレクティブはカーネルに、 filename 中に列挙した静的なデバイス設定を使うように設定します。 ファイル filename は、 device.hints(5) に規定された文法に従っている必要があります。

ident name
    カーネルの名前を name にします。 少なくともひとつの ident ディレクティブが必要です。

include filename
    続くテキストをファイル filename から読み込み、 filename がきちんと処理できたら、現在のファイルに戻ります。

machine arch
    カーネルがコンパイルされる、マシンのアーキテクチャを指定します。 arch として正しい値は、以下のものを含みます。

    alpha
        DEC Alpha アーキテクチャ。
    amd64
        AMD x86-64 アーキテクチャ。
    i386
        Intel x86 ベースの PC アーキテクチャ。
    ia64
        Intel IA64 アーキテクチャ。
    pc98
        PC98 アーキテクチャ。
    powerpc
        IBM PowerPC アーキテクチャ。
    sparc64
        Sun Sparc64 アーキテクチャ。

    カーネル設定ファイルは machine ディレクティブをひとつだけ持つことができます。

makeoptions options
    生成される makefile に対して、 options を追加します。

    options 引数はコンマで区切られた、ひとつ以上のオプション指示のリストです。 各オプション指示は次の形式を持ちます。

        MakeVariableName[=Value]

    これにより、適切な make(1) 変数定義が、生成される makefile に挿入されます。 もし名前だけの make(1) 変数を指定した場合、 value は空の文字列とみなします。

    使用例:
        makeoptions MYMAKEOPTION="foobar"
        makeoptions MYNULLMAKEOPTION

maxusers number
    このオプションディレクティブは、いくつかのカーネルデータ構造体の大きさを 設定するのに使われます。 引数 number は、0 (デフォルト) または 2 以上の整数値です。 値 0 は、利用可能な物理メモリの大きさに従って、カーネルが自身のデータ構造体を 設定することを表します。 もし自動設定が要求されれば、カーネルはこの値を 32 から 384 の間で 調節するでしょう。

    tuning(7) で説明しているように、この値は起動時に loader(8) を使って設定することも出来ます。

nomakeoption name
    カーネルをビルドする際に、以前に定義された make(1) オプションの name を削除します。 このディレクティブは、 include を使って取り込んだファイル中の makeoption ディレクティブの効果を取り消す為に使うことが出来ます。

nooption kerneloptionname
    カーネルオプションの kerneloptionname を、これ以前に定義されたオプションのリストから削除します。 このディレクティブは、 include を使って取り込んだファイル中の option ディレクティブの効果を取り消す為に使うことが出来ます。

options optionspecs
    カーネルをビルドする際に、コンパイル時のカーネルオプションを追加します。 引数 optionspecs はコンマで区切られた、オプション指示のリストです。 各オプション指示は、次の形式を持ちます。

        KernelOptionName[=OptionValue]

    もし OptionValue が指定されない場合は、 NULL であるとみなします。 全てのアーキテクチャで共通のオプションは、ファイル sys/conf/options で規定されています。 アーキテクチャ固有のオプションは、ファイル sys/conf/options.<arch> で規定されています。

profile number
    number が非 0 の場合、カーネルプロファイリングが有効になります。 number が 2 以上の場合、カーネルは高精度プロファイリングに設定されます。 カーネルはまた、 -p オプションを config(8) で使うことでも、プロファイリング用にビルドできます。

  廃止されたディレクティブ
以下のカーネル設定ディレクティブは廃止されました。

config
    このディレクティブは、ルートファイルシステムとして使われるデバイスを指定するのに 使われていました。 FreeBSD 4.0 以降、この情報はカーネルを起動する際に loader(8) から渡されます。

関連ファイル
sys/compile/NAME
    カーネル設定で作成されたコンパイルディレクトリ。
sys/conf/Makefile.arch
    アーキテクチャ arch の為の Makefile の一部。
sys/conf/files
    全てのアーキテクチャに共通のデバイス。
sys/conf/files.arch
    アーキテクチャ arch の為のデバイス。
sys/conf/options
    全てのアーキテクチャに共通のオプション。
sys/conf/options.arch
    アーキテクチャ arch の為のオプション。

関連項目
kenv(1), make(1), device.hints(5), loader.conf(5), config(8), kldload(8), loader(8) Building 4.4BSD Kernels with Config, Samuel J. Leffler, Michael J. Karels.

歴史
config(8) ユーティリティが最初に登場したのは 4.1BSD であり、後に 4.4BSD において修正されました。

カーネル設定機構はさらに、 FreeBSD 4.0 と FreeBSD 5.0 において、動的カーネル設定をサポートするアーキテクチャへと 変更されました。