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