FreeBSD ハンドブック
前のページ | 第 9章FreeBSD カーネルのコンフィグレーション | 次のページ

# 9.7. 問題が起きた場合には

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

`config` コマンドの失敗

  カーネルコンフィグレーションファイルの設定後に config(8) コマンドが失敗したのであれば、 おそらくファイルのどこかに単純な間違いがあります。 さいわい、config(8) はトラブルの起きた行番号を出力するので、 エラーを含む行を素早く見つけることができます。 例えば、次のように出力された場合

      config: line 17: syntax error

  `GENERIC` カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。

`make` コマンドの失敗

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

カーネルが起動しない

  新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、FreeBSD には利用できないカーネルから復帰する洗練されたメカニズムがあります。 それは、FreeBSD のブートローダで起動したいカーネルを選択するだけです。 システムの起動メニューが表示されている時に、この機能を使えます。 6 番目の “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> まで電子メールを (英語で) 送ってください。