CD-ROM起動でハードディスクからファイルを救出 |
||
YAMAMORI Takenori ●yamamori |
少なくともrootファイルシステムのマウントまでは正常に行なわれている場合は, OSをシングルユーザモードで起動することによってトラブルを解決できる場合が あります.これは,おもにrcスクリプトや/etc以下の設定ファイルに不備があり, 各種デーモンの起動の途中で固まるなどの原因でlogin:プロンプトまでたどり 着けない場合の対処法です.
Linuxでは,GRUBまたはLILOの画面でカーネルオプションに, 1またはsingleを付加して,OSをランレベル1で起動すれば, シングルユーザモードになります.シングルユーザモードで起動できれば, rcスクリプトや/etc以下の設定ファイルの問題部分を修正することができます.
シングルユーザモードで起動した場合でも,rc.sysinit(RedHat系の場合)や rcスクリプトのランレベル1の部分は実行されてしまいます. このことが問題になる場合は,起動時のカーネルオプションに,
init=/bin/sh
を付加して起動する方法があります.この方法では,/sbin/initの代わりに /bin/shが直接起動します.rootファイルシステムはリードオンリでマウントされた 状態のままなので,まず,
# mount -o remount /
でrootファイルシステムを書き込み可でリマウントしてからファイル修正等などの 作業を行なってください.
ここでのOSの起動状態は,initを使用しない特殊な状態であり, 誤って/bin/shを終了すると,ファイルシステムがsyncされないまま カーネルが停止してしまいます.そこで,作業終了時は必ず,
# mount -r -o remount /
と,rootファイルシステムを再びリードオンリでリマウントしてください. そのあとはマシンをリセットしても構いません.
突然の電源OFFやリセットなどでOSが正常にシャットダウンされなかった場合, 次回起動時にfsckによるファイルシステムの整合性チェックでエラーが発生する ことになります.多くの場合はファイルシステムの不整合が自動的に修復されますが, 自動修復が不可能な場合,シングルユーザモードの状態でシェルが起動することが あります.
この場合は,
# fsck /
として,途中のエラー内容を確認しながら質問にyと答えて行きます.
# fsck -y /
として,自動的にyと答える方法もありますが,このオプションは一応注意して 使用するべきです. fsck時にエラーのあるファイルのi-node番号が表示された場合は, 念のため番号を控えておきます.
修復が終ったらリブートします.大きな問題がなければ正常に起動するでしょう. 起動後,ファイルシステムのトップディレクトリ直下のlost+foundディレクトリ (/の場合は/lost+found)に,リンクカウントゼロで迷子になった, i-node番号を含むファイル名が付けられたファイルがないかどうか確認します. ある場合は,ファイルの中身を確認し,可能ならば元のディレクトリに 元のファイル名で戻します.
fsck時にエラーが表示されたi-node番号については,
# find / -xdev -inum i-node番号
などとして実際のファイルを探し,そのファイルが損傷していないか確認します. 多くの場合,該当するのは/var/log/messagesなど,常に書き込みが発生するファイル であり,とりあえず実害がないことが多いようです.