問題が起きた場合には

カスタムカーネルを作る場合に起きるトラブルは 4 種類に分けられま す.

Config コマンドの失敗

カーネルにあなたの設定をおこなった場合で configコ マンドが失敗したのであれば, 多分どこかで単純な間違いを やっているのでしょう. さいわい, configはトラ ブルの起きた行番号を出力しますので viで素早く 見つけることができます. 例えばもし次のように出力されれ ば,

config: line
          17: syntax error
viのコマンドモードで 17Gとタイプすればあな たは問題のところへ飛ぶことができます. GENERIC カーネル のファイルや他のリファレンスと比較して注意深く修正して ください.
Make コマンドの失敗

make コマンドが失敗した場合には, カーネル設定で config がとらえられなかったような間違いをして いることが多いようです. ふたたびコン フィグレーションを見直してください. それでも問題を解決 することができなければ FreeBSD general questions mailing list へあなたのカーネルのコンフィグレーションをつけてメー ルしてください. 誰かが素早く間違いを見つけてくれるで しょう.

カーネルがブートしない

新しいカーネルがブートしなかったり, デバイスの認識をしな い場合でもあわてないでください! さいわい, BSDは利用で きないカーネルから復帰する優れたメカニズムがあります. FreeBSDの bootプロンプトでリターンキーを押すかわりに 単にブートさせたいカーネルの名前 (例えば kernel.old) をタイプするだけです. カーネルの再設定 をおこなう場合に現在のカーネルを利用できるように取ってお くのはよい考えです.

問題のないカーネルでブートした後に あなたのコンフィグレー ションファイルを調べ, 再び構築を試みてください. /var/log/messages ファイルにはすべての成功した ブートのカーネルのメッセージやその他の記録があり, これ は助けになる情報の一つでしょう. また, dmesg(8) コマンドは現在のブート時のカーネルメッ セージを出力します.

Note: カーネルの構築中にトラブルが起きた時に使うために GENERICや他のカーネルを次の構築で消されない ように異る名前で保存するようにしてください. kernel.old は新しいカーネルをインストールする 時に, その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん. またできる限り早く動作しているカーネルを本来の kernelの位置に移動させてください. そうしないと ps(1) のようなコマンドが正しく動きません. make でインストールされたカーネルのファイルを (別のカーネルに戻すために) ``アンロック'' するための特別 のコマンドは

# chflags noschg
        /kernel

です. また, 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように ``ロック'' するには 次のようにします.

# chflags schg
        /kernel
カーネルは動くが ps は動かない!

システムユーティリティと異る バージョンのカーネルをインス トールした場合, 例えば 実験的に ``2.2.0'' のカーネルを 2.1.0-RELEASE システム上にインストールするような場合, ps(1)vmstat(8) のような多くのシ ステムステータスコマンドは動かなくなります. libkvm を 再コンパイルしてこれらのユーティリティを作りなおす 必要がありま す. これは, オペレーティングシステムのそれ以外の部分と異るバージョ ンのカーネルを使うことが普通はあまりよくない 理由の一つです.