前のページ 次のページ 目次

5. トラブルシュート

レスキューディスクを作成するにあたって、最初の数回の試みが失敗に終わる のはそう珍しいことではありません。 root ディスクを作成する際によく用いられる方針は、手持ちのシステムから 部品を取り出してフロッピーベースのシステムに詰め込み、コンソールにメッ セージが出るまで試行錯誤を繰り返すことです。メッセージが出れば半分勝っ たも同然です。後はシステムが文句を言わなくなるまで、一つ一つ問題を解決 していけば良いのです。 システムが何のメッセージも出さずにハングする場合は、その理由を調べるの は大変です。何とか表示が出る段階に達するには、いくつかの部品がちゃんと 揃っていて、正しく設定されている必要があるのです。

システムが反応しない場合、障害の原因を調べるには以下のような手続きを踏 むのが良いでしょう。

これらの一般的な点が確認できたら、次に示すようなファイルをチェックして みましょう。

  1. init が /sbin/init または /bin/init として存在しており、実行可能 になっていることを確認する。
  2. ldd init を実行して、 init の使うライブラリを確認して下 さい。通常は libc.so だけでしょうが、それでもチェックして下さい。ライ ブラリがディスクに入っていることも要確認です。
  3. ldd が出力したライブラリファイル(複数かもしれません)に file コマンドを実行して、ライブラリの形式をチェックして下さい。 root ディスクに正しいローダが入っていることを確認して下さい。ローダの ファイル名は ld.so (a.out ライブラリ用)または ld-linux.so (ELF ライ ブラリ用)です。
  4. ブートディスクの /etc/inittab を見て、 *getty* の呼び出 し方を調べて下さい *getty* という記法は getty や agetty、 mgetty 、 getty_ps などのプログラム群を示すために用います 。 これらをハードディスクの inittab と念入りに比べて下さい。ちゃんと意味 を持った記述になっているか、お使いのプログラムのマニュアルページも参照 して下さい。 inittab はおそらく最も難しい部分です。なぜなら文法や内容 が使っている init プログラムやシステムの具合によって変わるからです。 inittab を正しく書くための手段はただ一つ、init と inittab のマニュアル ページを読んで、現在のシステムがブート時にやっていることを解き明かすこ とです。 /etc/inittab を見て、そこでシステムの初期化を行って いるエントリがあることを確認して下さい。この部分には /etc/rc.x といったコマンドが書かれているはずで、 /etc/rc スクリプトのどれかを実行するようになっています。 inittab で指定されたスクリプトは存在していなければなりません。
  5. init に行ったのと同じように、 getty (または agetty)に対し ても ldd を実行し、必要なライブラリを表示させます。そしてそのライ ブラリのファイルとローダが root ファイルシステムに入っているかを確認し て下さい。
  6. レスキューディスクに /etc/ld.so.chace がすでに存在して いるようでしたら、作り直して下さい。

init が起動しても次のようなメッセージが出力されることがあります。

Id xxx respawning too fast: disabled for n minutes  

これは init が出すもので、お使いの *getty* または login が、起動してす ぐに終了してしまったことを示しています。 *getty* や login の実行ファイ ル、そしてそれらが依存しているライブラリをチェックして下さい。 /etc/inittab による起動が正しいかどうかも調べて下さい。 *getty* がおかしなメッセージを出力する場合は、おそらく /etc/inittab からの呼び出し方が間違っています。 *getty* のオ プションはプログラムによって違います。また agetty ではバージョンによっ てさえ互換性がない場合があるそうです。ハードディスクの /etc/inittab と呼び出しているプログラムや呼び出し方が異なって いる場合は、念入りにチェックして下さい。

なにかの実行ファイル(例えば df)をレスキューディスクから起動した ときに、 df: not found のようなメッセージが出た場合には、以下の 2 点を確認して下さい。

  1. そのバイナリの入っているディレクトリが PATH に入っていること。
  2. そのプログラムに必要なライブラリとローダがあること。どのライブラ リが必要かを確認するには ldd file として、それらがあるかを確認し て下さい。 lib に関する節で述べた内容も参照して下さい。


前のページ 次のページ 目次