障害が発生した場合や、ブートしない場合などには修正するための方法がいくつかあります。ただし、修正するためには、システムを十分に理解することが必要です。ここでは、システムのレスキューを行うことのできる、レスキューモードでブートする方法を示します。
レスキューモードとは、コンパクトな Linux 環境のすべてをディスケット、CD、またはその他の手段によってブートする手段を表すために使われる言葉です。
このセクションで説明することは、いくつかの点において問題から回復する上で参考になります。
名前が示すように、レスキューモードは何かからレスキューするためのものです。通常の運用では、Red Hat Linuxは何をする(プログラムの実行、ファイルの格納など)にしてもハードドライブ上に格納されたファイルを使用します。
ただし、時には Linux が完全には動作しないために、システムのハードドライブ上のファイルにアクセスできないこともあります。レスキューモードを使用すれば、実際にはハードドライブから Linux を起動できない場合であっても、ハードドライブ上に格納されたファイルにアクセスすることができます。
通常は、レスキューモードが必要になる理由が一つまたは二つあります。
Linux をブートできないので、問題を解決したい。
ハードウェアまたはソフトウェアの問題があるので、システムのハードドライブからいくつかの重要ファイルを取り外したい。
これらのシナリオについて詳しく見てみましょう。
多くの場合、その原因は Red Hat Linux をインストールした後で別のオペレーティングシステムをインストールしたことです。他のオペレーティングシステムの中には、コンピュータ上に自分以外のオペレーティングシステムは存在しないと決めてかかり、本来は LILO ブートローダが含まれていたマスターブートレコード (MBR) を上書きするものがあります。そのようにして LILO が上書きされた場合は、運が悪かったと諦めるしかありません - ただし、それはレスキューモードが利用できない場合のことです。
このシナリオの場合は、Linux を稼働させるシステムの種類と同じ数の、異なる状況が存在します。ハードドライブが壊れた、または新しいカーネルを構築した後で LILO の実行を忘れたなどが、Red Hat Linux をブートできなくなる可能性のある例です。レスキューモードを利用できるならば、問題を解決できる可能性があります。あるいは少なくとも最重要ファイルのコピーをとることができます。
レスキューモードでシステムをブートするには、インストールブートプロンプトに対して以下のパラメータを入力します。
boot:linux rescue |
以下のいずれかの方法でインストールブートプロンプトに到達することができます。
Red Hat Linux ボックスセットに同梱されるディスケットまたは CD-ROM からシステムをブートする。
ネットワークまたは PCMCIA ブートディスケットからブートする。これらの方法の場合は、ネットワーク接続が機能することが前提であり、ネットワークホストと転送タイプを識別することが要求されます。その情報を指定する方法については、Chapter 10 の「Installing over the Network」を参照してください。
レスキューモードでシステムがブートすると、次のプロンプトが表示されます。
bash# |
このプロンプトから、以下にリストするコマンドを実行することができます。
anaconda gzip mkfs.ext2 ps badblocks head mknod python bash hwclock mkraid python1.5 cat ifconfig mkswap raidstart chatter init mlabel raidstop chmod insmod mmd rcp chroot less mmount rlogin clock ln mmove rm collage loader modprobe rmmod cp ls mount route cpio lsattr mpartition rpm dd lsmod mrd rsh ddcprobe mattrib mread sed depmode mbadblocks mren sh df mcd mshowfat sync e2fsck mcopy mt tac fdisk mdel mtools tail fsck mdeltree mtype tar fsck.ext2 mdir mv touch ftp mdu mzip traceroute genhdlist mformat open umount gnome-pty-helper minfo pico uncpio grep mkdir ping uniq gunzip mke2fs probe zcat |
ただし、ダメージを受けていないのであればルートファイルシステムをマウントしてから標準的な Linux のユーティリティを実行することができます。たとえば、ルートファイルシステムが /dev/hda5 の中にあるとします。以下にこのパーティションのマウント方法を示します。
mount -t ext2 /dev/hda5 /foo |
ここで /foo はすでに作成してあるディレクトリです。
これで chroot、fsck、man、およびその他のユーティリティを実行できるようになります。この時点で、Linux はシングルユーザモードで動作しています。
Linux パーティションの名前が分からない場合は、推測してもかまいません。つまり、存在しないパーティションをマウントしても害はありません。
直接シングルユーザモードでブートできる可能性があります。システムがブートするものの、ブート完了後にログインすることができない場合は、リブートしてから LILO のブートプロンプトに対して以下のいずれかのオプションを指定してみてください。
LILO boot:linux single LILO boot:linux emergency |
シングルユーザモードでは、コンピュータはランレベル 1 でブートします。つまりローカルファイルシステムはマウントされますが、ネットワークは有効になりません。システム保守用のシェルが利用可能になります。
緊急モードでは、可能な限り最も小さな環境でブートします。ルートファイルシステムは読み込み専用でマウントされ、ほとんど何もセットアップされません。このモードの linux single に対する主な長所は、init ファイルがロードされないことです。init が壊れたか機能しない場合であっても、ファイルシステムをマウントすることによって、再インストール中に失われた可能性のあるデータを復元することができます。
カーネルを再構築し、その新しい作品を試してみようと思った時に、LILO を実行する前にリブートしてしまったことはありますか ?その時に古いカーネルに対するエントリが lilo.conf の中になかったのでありませんか?… を読んでください。
多くの場合は、Red Hat Linux ブートディスクから Red Hat Linux/Intel システムをブートし、ルートファイルシステムをマウントして作業を進めることができます。以下にその方法を示します。
ブートディスクの boot: プロンプトに対して以下のコマンドを入力します。
linux single root=/dev/hdXX initrd= |
(/dev/hdXX のXX を、ルートパーティションを表す適当な文字と数字で置き換えます。)
これで何が起こるのでしょう?まず、システムがシングルユーザモードでブートし、指定したルートパーティションがルートパーティションとして設定されます。空の initrd を指定するとブートディスク上のインストール関連イメージがバイパスされるので、即座にシングルユーザモードに入ります。
欠点はあるのでしょうか?残念ですが、あります。Red Hat Linux ブートディスク上のカーネルはビルトインの IDE しかサポートしていないため、SCSI ベースのシステムを使用しているユーザはこの技を使用することができません。その場合は、上記のブートディスクとレスキューディスクを組み合わせて使用する必要があります。