カーネルを構築するには、FreeBSD のすべてのソースファイルが必要です。
カーネルを構築する場所は、/usr/src/sys
です。
ここには、カーネルの各部分を構成するサブディレクトリがいくつもあります。
その中には、カーネルコンフィグレーションファイルのある
、
および、カーネルを作る場所である arch
/confcompile
も含まれています。
arch
には、
サポートされている各アーキテクチャ、i386
, amd64
, ia64
, powerpc
, sparc64
および pc98
のサブディレクトリがあります。
各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。
残りのコードは、アーキテクチャに依存しない、
すべてのプラットフォームで共有されるコードです。
サポートされているデバイス、ファイルシステム、オプションが、
それぞれのサブディレクトリに分かれている、
という論理的な構成に注意してください。
この章で示されるコマンドの例は、 i386 アーキテクチャを仮定しています。 他のアーキテクチャのシステムでは、 使用しているアーキテクチャに適したパス名に変更してください。
もし、/usr/src/
が存在していなかったり、空であれば、
カーネルのソースはインストールされていません。
ソースをインストールするもっとも簡単な方法は、「Subversion を使う」 で説明した
svn を用いる方法です。
以下のように、/usr/src/sys/
へのシンボリックリンクも作成してください。
#
ln -s /usr/src/sys /sys
つぎに、cd を用いて
に移動し、
arch
/confGENERIC
コンフィグレーションファイルをカスタムカーネルの名前にコピーしてください。
たとえば次のようにします。
#
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
をテキストエディタで編集してください。
デフォルトのエディタは vi で、
使い方については、
参考図書
にあるような多くの本で詳しく説明されています。
そちらを参照してください。初心者に対してより簡単なエディタである
ee
も利用できます。
まずファイルの最初の方のコメント行を編集し、
設定内容や MYKERNEL
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
を編集してください。
この変数は、すべてのモジュールを構築するというデフォルトの設定にかわり、 構築するモジュール一覧を指定します。
この変数は、構築を行わないトップレベルのモジュールを指定します。 カーネルの構築プロセスに関連する、他の変数については、 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> まで電子メールを (英語で) 送ってください。