This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
まず, カーネル再構築に必要なディレクトリをざっと見てみましょう. ここではディレクトリはすべて /usr/src/sys 以下の相対位置で示します. また, /sys からもアクセス可能です. ここには, カーネルの各部分を構成するサブディレクトリが いくつもあります. しかし, 私たちの目的で最も重要なのは arch/conf です. ここで, あなたの システムに合わせてカーネルコンフィグレーションを編集します. それから compileディレクトリ, ここはカーネルが作られる 場所です. arch は, i386, alpha, pc98(これは 日本で普及している PC のための開発ブランチです)のいずれかを表します. 各アーキテクチャのディレクトリ内部にあるファイルはすべて そのアーキテクチャでのみ使用され, 残りのコードは FreeBSD が他のプラットフォームに移植される際に共有されます. サポートされているデバイス, ファイルシステム, オプションが, それぞれ各々のサブディレクトリに分かれている, という論理的な構成に注意してください.
Note: もし, あなたのシステムに/usr/src/sys 以下のディレクトリがなければ, カーネルのソースが インストールされていません. もっとも簡単な方法は (rootで) /stand/sysinstall を用いて以下のようにします. 設定(Configure) を選んでから 配布ファイル(Distribution) を選択し, src の中の sys をインストールしてください.
つぎに, arch/confに移動して, GENERIC コンフィグレーションファイルをカーネルに与えたい名前に コピーしてください. たとえば次のようにします.
# cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL
慣習として, この名前はすべて大文字でつづられます. もし, いくつかの異なるハードウェアの FreeBSDマシンを扱うなら, この名前にホスト名を含めるとよいでしょう. ここでは, 例として MYKERNEL と呼ぶことにします.
Note: この作業は root権限でおこなう必要があります. そうでなければ, permission deniedというエラーが出ます.
では, MYKERNEL をあなたの好きなエディタで編集してください. もし, システムをインストールしたばかりならば, 利用できるエディタは viだけかもしれません. ここでは使い方 の説明はしませんが, 参考図書 にあるような多くの本で詳しく説明 されていますので, そちらを参照してください. FreeBSD にはより簡単なエディタとして "ee" があります. 初心者の方であればこちらをエディタ に選ぶとよいでしょう. まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ レーションに合せて変更した点などを記述して GENERIC と区別がつく ようにしておきましょう.
もし SunOSや他の BSDオペレーティングシステムでカーネルの 再構築をしたことがあれば, このファイルはとても親しみ やすいでしょう. しかし, DOSのようなその他の オペレーティングシステムしか知らない人から見れば, GENERIC コンフィグレーションファイルはとても なじみにくいものかもしれません. そのような場合は, コンフィグレーションファイル の節をゆっくりと注意深く読んでください.
Note: FreeBSD Project の最新のソースファイルと, あなたの ソースツリーを同期させている場合, アップデートを行う際には, 必ず /usr/src/UPDATING ファイルをチェックするように してください. このファイルには, FreeBSD をアップデートする際のすべての重要な情報 が書かれています. /usr/src/UPDATING は常にあなたの FreeBSD ソースファイルのバージョンと同期していますので, ハンドブックの情報よりも正確なものとなっています.
FreeBSD 4.0 より前の FreeBSD を使っていて, FreeBSD 4.0 以降へはアップグレードしない, もしくはリリース版の FreeBSD を使っていて /usr/src/ ディレクトリには sys/ しか無い場合, 編集し終ったら次のコマンドによってコンパイル, インストール を行ってください.
Note: 古いバージョンの FreeBSD からカーネルをアップグレードしようと している場合, 新しいカーネルのソースファイルを取ってきた場所と 同じところから, 新しいバージョンの config(8) を取ってくる 必要があるでしょう. config(8) は /usr/src/usr.sbin にあるので, これらのソースファイルもダウンロードする必要が あります. 次のコマンドを実行する前に, これを再構築してインストールして おいてください.
# /usr/sbin/config MYKERNEL # cd ../../compile/MYKERNEL # make depend # make # make install
4.X 以降の新しいバージョンにアップグレードした場合 (例えば 3.X から 4-STABLE へ, もしくは 4-STABLE から 最新版の 4-STABLE へなど), 予め buildworld を行なって, 以下のコマンドを実行してください:
# cd /usr/src # make buildkernel KERNCONF=MYKERNEL # make installkernel KERNCONF=MYKERNEL
Note: FreeBSD-4.2 とそれ以前の場合は, KERNCONF= ではなく KERNEL= としなければなりません. 2001 年 2 月 2 日以降の 4.2-STABLE は KERNCONF= を認識します.
何らかの方法であなたのソースツリーをアップグレードして いない 場合 (CVSup, CTM, anoncvs, などを実行していない場合), config, make depend, make, make install の手順を実行してください.
Warning最後にカーネルを構築した後で, ソースをアップグレードした場合, カーネルを構築するには make buildkernel を使わなければ なりません. そうしないと, カーネルを構築するのに古いユーティリティが 使われてしまい, 失敗してしまうかもしれません. ソースを更新した場合には, カーネルを構築するのに config/make の手順は使わないでください!
新しいカーネルはルートディレクトリに /kernelという 名前でコピーされ, 今までのカーネルは /kernel.old という名前へ変更されます. では, システムをシャットダウン, リブー トして新しいカーネルを使ってください. うまく行かない場合は, この章の終りの 問題が起きた場合には を参照してください. この章の新しい カーネルが起動しない 場合のリカバリの方法を注意深く読んでおいてください.
Note: (サウンドカードのような)新しいデバイスを 追加した場合は, 使う前に /devディレクトリで デバイスノードを追加しなければならないかもしれません. 詳しくは, デバイスノード を読んでください.