注意: カーネルを構築するには、FreeBSD のすべてのソースファイルが必要です。
カーネルを構築する場所は、/usr/src/sys です。 ここには、カーネルの各部分を構成するサブディレクトリがいくつもあります。 その中には、カーネルコンフィグレーションファイルのある arch/conf、 および、カーネルを作る場所である compile も含まれています。 arch には、 サポートされている各アーキテクチャ、i386, amd64, ia64, powerpc, sparc64 および pc98 のサブディレクトリがあります。 各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。 残りのコードは、アーキテクチャに依存しない、 すべてのプラットフォームで共有されるコードです。 サポートされているデバイス、ファイルシステム、オプションが、 それぞれのサブディレクトリに分かれている、 という論理的な構成に注意してください。
この章で示されるコマンドの例は、 i386 アーキテクチャを仮定しています。 他のアーキテクチャのシステムでは、 使用しているアーキテクチャに適したパス名に変更してください。
注意: もし、/usr/src/ が存在していなかったり、空であれば、 カーネルのソースはインストールされていません。 ソースをインストールするもっとも簡単な方法は、項18.6 で説明した svn を用いる方法です。 以下のように、/usr/src/sys/ へのシンボリックリンクも作成してください。
# ln -s /usr/src/sys /sys
つぎに、cd を用いて arch/conf に移動し、 GENERIC コンフィグレーションファイルをカスタムカーネルの名前にコピーしてください。 たとえば次のようにします。
# cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL
慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSD マシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として MYKERNEL と呼ぶことにします。
ティップ: カーネルコンフィグレーションファイルの編集を終えたら、 ファイルのバックアップを /usr/src 以外の場所に保存してください。 GENERIC ファイルを直接編集しないでください。
もしくは、カーネルコンフィグレーションファイルは他の場所において、 i386 にシンボリックリンクを張る方法もあります。
たとえば、次のようにします。
# cd /usr/src/sys/i386/conf # mkdir /root/kernels # cp GENERIC /root/kernels/MYKERNEL # ln -s /root/kernels/MYKERNEL
MYKERNEL をテキストエディタで編集してください。 デフォルトのエディタは vi で、 使い方については、 参考図書 にあるような多くの本で詳しく説明されています。 そちらを参照してください。初心者に対してより簡単なエディタである ee も利用できます。 まずファイルの最初の方のコメント行を編集し、 設定内容や GENERIC からの変更点を記述しておきましょう。
もし、GENERIC コンフィグレーションファイルが親しみにくいのであれば、コンフィグレーションファイル の節をゆっくりと注意深く読んでください。
注意: 最新のソースと ソースツリーを同期 したら、 何らかのアップデートを行う前に、必ず /usr/src/UPDATING をチェックしてください。 このファイルには、 アップデートされたソースコードに関する重要な問題や特別に注意すべき点がすべて書かれています。 /usr/src/UPDATING は常に FreeBSD のソースのバージョンと同期しているので、 ハンドブックの記述よりも新しい内容を含んでいます。
編集を保存したら、カーネルのソースコードをコンパイルしましょう。
カーネルの構築
注意: カーネルを構築するには、FreeBSD のすべてのソースファイルが必要です。
/usr/src ディレクトリに cd で移動します。
# cd /usr/src
カスタムコンフィグレーションファイルの名前を指定して新しいカーネルをコンパイルします。
# make buildkernel KERNCONF=MYKERNEL
新しいカーネルをインストールします。
# make installkernel KERNCONF=MYKERNEL
ティップ: デフォルトでは、カスタムカーネルを構築すると すべて のカーネルモジュールが再構築されます。 カーネルのアップデートをより早く行いたい、または、 カスタムモジュールのみを構築したいといった場合は、 カーネルの構築を開始する前に、以下のように /etc/make.conf を編集してください。
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfsこの変数は、すべてのモジュールを構築するというデフォルトの設定にかわり、 構築するモジュール一覧を指定します。
WITHOUT_MODULES = linux acpi sound ntfsこの変数は、構築を行わないトップレベルのモジュールを指定します。 カーネルの構築プロセスに関連する、他の変数については、 make.conf(5) を参照してください。
新しいカーネルは /boot/kernel に /boot/kernel/kernel という名前でコピーされ、 今までのカーネルは /boot/kernel.old/kernel という名前へ変更されます。 では、新しいカーネルを使うために、システムをシャットダウンして再起動してください。 うまく行かない場合は、 問題が起きた場合には や、新しいカーネルが 起動しない 場合のリカバリの方法を参照してください。
注意: ブートローダ (loader(8)) や設定などのブートプロセスに関係する他のファイルは、 /boot に置かれます。 サードパーティ製やカスタムモジュールを /boot/kernel に置くこともできますが、 コンパイルしたカーネルとモジュールを同期しておく必要があります。 コンパイルしたカーネルとモジュールが対応していないと、 システムが不安定になる可能性があります。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で)
連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で)
送ってください。