9.6. 問題が起きた場合には

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

config コマンドの失敗

config(8) が失敗したのであれば、 おそらく単純なエラーです。 さいわい、config(8) はトラブルの起きた行番号を出力します。 例えば、次のように出力された場合

config: line 17: syntax error

17 行目のキーワードが正しく入力されているかどうか、 GENERIC カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。

make コマンドの失敗

make が失敗した場合には、 カーネル設定で config(8) がとらえられなかったような間違いをしていることが多いようです。 コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 FreeBSD general questions メーリングリスト へカーネルコンフィグレーションファイルをつけてメールしてください。

カーネルが起動しない

新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、FreeBSD には利用できないカーネルから復帰する洗練されたメカニズムがあります。 FreeBSD のブートローダで起動したいカーネルを選択してください。 システムの起動メニューが表示されている時に、 Escape to a loader prompt オプションを選択するとアクセスできます。 プロンプトで boot kernel.old か他の正常に起動するカーネルを入力してください。 カーネルの再設定をおこなう場合にはいつも、 確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。

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

注記:

カーネルの構築中にトラブルが起きた時に使うために、 GENERIC や他のカーネルを次回の構築で消されないよう別の名前で保存するようにしてください。kernel.old は新しいカーネルをインストールする時に、 その一つ前にインストールした、 うまく動かないかもしれないカーネルで上書きされてしまうので当てにできません。 できる限り早く動作しているカーネルを本来の /boot/kernel の位置に移動させてください。 そうしないと ps(1) のようなコマンドが正しく動きません。これを行うには、 以下のように正しく起動するカーネルを含むディレクトリ名に変更するだけです。

# mv /boot/kernel /boot/kernel.bad
# mv /boot/kernel.good /boot/kernel
カーネルは動きますが ps(1) は動きません!

システムユーティリティの構築されたバージョンと異るバージョンのカーネルをインストールした場合、 例えば -CURRENT のカーネルを -RELEASE 上にインストールするような場合、 ps(1)vmstat(8) のような多くのシステムステータスコマンドは動かなくなります。 修正するには、カーネルと同じバージョンのソースツリーで world を再構築し、インストール してください。 これは、カーネルとそれ以外で異なるバージョンを組み合わせてオペレーティングシステムを使用することが推奨されない理由の一つとなっています。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。