22.2. ではどのようにして追加するのでしょう?

最初に sys/conf/options (または sys/<arch>/conf/options.<arch>, たとえば sys/i386/conf/options.i386) を編集し, 新しいオプション を含めるのに最適な opt_foo.h ファイルを選びます.

新しいオプションの必要がなくなったとしたら, これを取り除きます. たとえば, SCSI サブシステムに関するすべてのふるまいについてのオプション の変更は opt_scsi.h に入れられます. デフォルトでは, 適切 なオプションファイルに単に記述されます. たとえば FOO であれば 値は対応するファイルの opt_foo.h に格納されます. これは右端に別 のファイル名を書いて置き換えることができます.

新しいオプションを加えるのに使えそうな opt_foo.h がない場合は新しい名前を作ってください. 意味のある名前を作り options[.<arch>] ファイル に新しいセクションのコメントをつけてください. config(8) は自動的 に変更を検出して, 次の実行からは (訳注: 新しい .h) ファイル を作ります. ほとんどのオプションはヘッダファイルに入れられます.

大量のオプションを一つの opt_foo.h にまとめると コンフィグファイルの一つのオプションを変更したときに 多くのファイルが 再コンパイルされる原因になります.

新しいオプションに依存するカーネルファイルは 最終的には見つけ出 されます. ただし, オプションを作っただけで対応するソースがどこにも ない場合は別です.

            % find /usr/src/sys -type f | xargs fgrep NEW_OPTION
          
オプションに対応するソースを見つけるのに上記のコマンドは 便利です. 見つけたすべてのファイルで編集, 追加をおこないます.
    #include "opt_foo.h"
ファイルの先頭の, すべての #include <xxx.h> より前に入れます. この場合, オプションによって次のようにしてデフォルト値 を持たせている標準のヘッダファイル内の値を置き換えるため, 順番は非常に 重要です.
    #ifndef NEW_OPTION
    #define NEW_OPTION (something)
    #endif
システムヘッダファイル (たとえば /usr/include/sys/ にある ファイル) をオプションで置き換えることは, ほとんどの場合で失敗します. そうすると, ヘッダファイルを深刻な状態に破壊してしまうので, include しないとオプションの値によって 不整合が起きてしまう場合を除き, それらの ファイルに opt_foo.h を include しないでください. そう, 現在このような例がいくつか存在していますが, 必ずしも正しい方法 ではありません.