カスタムカーネルを作る場合に起きるトラブルは 4 種類に分けられま す.
カーネルにあなたの設定をおこなった場合で configコ マンドが失敗したのであれば, 多分どこかで単純な間違いを やっているのでしょう. さいわい, configはトラ ブルの起きた行番号を出力しますので viで素早く 見つけることができます. 例えばもし次のように出力されれ ば,
config: line 17: syntax errorviのコマンドモードで 17Gとタイプすればあな たは問題のところへ飛ぶことができます. GENERIC カーネル のファイルや他のリファレンスと比較して注意深く修正して ください.
make コマンドが失敗した場合には, カーネル設定で config がとらえられなかったような間違いをして いることが多いようです. ふたたびコン フィグレーションを見直してください. それでも問題を解決 することができなければ FreeBSD general questions mailing list <freebsd-questions@FreeBSD.ORG> へあなたのカーネルのコンフィグレーションをつけてメー ルしてください. 誰かが素早く間違いを見つけてくれるで しょう.
新しいカーネルがブートしなかったり, デバイスの認識をしな い場合でもあわてないでください! さいわい, BSDは利用で きないカーネルから復帰する優れたメカニズムがあります. FreeBSDの bootプロンプトでリターンキーを押すかわりに 単にブートさせたいカーネルの名前 (例えば kernel.old) をタイプするだけです. カーネルの再設定 をおこなう場合に現在のカーネルを利用できるように取ってお くのはよい考えです.
問題のないカーネルでブートした後に あなたのコンフィグレー ションファイルを調べ, 再び構築を試みてください. /var/log/messages ファイルにはすべての成功した ブートのカーネルのメッセージやその他の記録があり, これ は助けになる情報の一つでしょう. また, dmesg(8) コマンドは現在のブート時のカーネルメッ セージを出力します.
Note: カーネルの構築中にトラブルが起きた時に使うために GENERICや他のカーネルを次の構築で消されない ように異る名前で保存するようにしてください. kernel.old は新しいカーネルをインストールする 時に, その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん. またできる限り早く動作しているカーネルを本来の kernelの位置に移動させてください. そうしないと ps(1) のようなコマンドが正しく動きません. make でインストールされたカーネルのファイルを (別のカーネルに戻すために) ``アンロック'' するための特別 のコマンドは
# chflags noschg /kernelです. また, 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように ``ロック'' するには 次のようにします.
# chflags schg /kernel
システムユーティリティと異る バージョンのカーネルをインス トールした場合, 例えば 実験的に ``2.2.0'' のカーネルを 2.1.0-RELEASE システム上にインストールするような場合, ps(1) や vmstat(8) のような多くのシ ステムステータスコマンドは動かなくなります. libkvm を 再コンパイルしてこれらのユーティリティを作りなおす 必要がありま す. これは, オペレーティングシステムのそれ以外の部分と異るバージョ ンのカーネルを使うことが普通はあまりよくない 理由の一つです.