Chapter 3. レスキューモード

 何か問題が発生した場合には、解決するための方法がいくつかあります。ただし、この方法を行うためには、システムを十分に理解することが必要です。本章では、知識を使用してシステムのレスキューを行うことのできる、レスキューモードでブートする方法を説明します。

レスキューモードとは

 レスキューモードとは、コンパクトなLinux環境のすべてをフロッピーディスク、CD-ROMから、またはいくつかのその他の手段を使用して起動する機能のことです。

 名前が示すように、レスキューモードは、何かからレスキュー(救助)するためのものです。通常の運用では、プログラムの実行、ファイルの格納など、何をするにしても、ハードディスクドライブ上に格納されたファイルを使用します。

 ただし、時にはLinuxが完全には動作しないために、システムのハードディスクドライブ上のファイルにアクセスできないこともあります。レスキューモードを使用すれば、実際にはハードディスクドライブからLinuxを起動できない場合であっても、ハードディスクドライブ上に格納されたファイルにアクセスすることができます。

 通常は、レスキューモードが必要になる理由は以下のようなものです。

 次に、これらのシナリオについて詳しく見てみましょう。

Linuxを起動できない

 多くの場合、その原因はRed Hat Linuxをインストールした後で別のオペレーティングシステムをインストールしたことです。他のオペレーティングシステムの中には、コンピュータ上に自分以外のオペレーティングシステムは存在しないと決めてかかり、本来はLILOブートローダーが含まれていたマスターブートレコード(MBR)を上書きするものがあります。そのようにしてLILOが上書きされた場合は、Red Hat Linuxを起動することはできません。そのような場合のために、レスキューモードがあります。

ハードウェア/ソフトウェアの問題

 このシナリオの場合は、さまざまな異なる状況が存在します。ハードディスクドライブが壊れた場合と、新しいカーネルを構築した後でLILOの実行を忘れた場合の2つが代表的な例です。このような場合は、Red Hat Linuxを起動できなくなる可能性があります。レスキューモードを利用できるならば、問題を解決できる可能性があります。少なくとも、最重要ファイルのコピーをとることができるかもしれません。

 レスキューモードでシステムを起動するには、インストールブートプロンプトに対して以下のコマンドを入力します。

boot: linux rescue

 以下のいずれかの方法でマシンを起動します。

  • インストールブートディスクからシステムをブートする。[1]

  • ネットワークブートディスクまたはPCMCIAブートディスクからブートする。これらの方法は、ネットワーク接続が機能する場合に利用することができます。また、ネットワークホストと転送タイプを識別することが要求されます。その情報を指定する方法については、オフィシャル Red Hat Linux x86インストールガイド   の「ネットワークからのインストール」を参照してください。

 レスキューモードでシステムを起動すると、VC(仮想コンソール)2上にプロンプトが表示されます(VC 2にアクセスするには、    Ctrl-Alt-F2キーを使用します)。

bash#

 このプロンプトから、以下のような多数の役立つコマンドを実行することができます。

anaconda          gzip        mkfs.ext2   ps
badblocks         head        mknod       python
bash              hwclock     mkraid      python1.5
cat               ifconfig    mkswap      raidstart
chattr            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
fsck.ext3         mdu         mzip        traceroute
ftp               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 はすでに作成済みの、マウント用のディレクトリです。

 この時点で、chrootfsckmanなどのユーティリティを実行できるようになります。Linuxはシングルユーザーモードで動作しています。

 Linuxパーティションの名前がわからない場合は、推測してもかまいません。存在しないパーティションをマウントしても害はありません。

直接シングルユーザーモードでブートする

 直接、シングルユーザーモードでブートできる可能性があります。システムがブートするものの、ブート完了後にログインすることができない場合は、リブートしてからLILOのブートプロンプトに対して以下のいずれかのオプションを指定してみてください(グラフィカルLILOを使用している場合は Ctrl-x キーを押してグラフィカル画面を終了し、 boot: プロンプトに入る必要があります)。 

boot: linux single
boot: linux emergency

 シングルユーザーモードでは、コンピュータはランレベル1でブートします。つまりローカルファイルシステムはマウントされますが、ネットワークは有効になりません。システム保守用のシェルが利用可能になります。

 緊急モードでは、可能な限り小さな環境でブートします。ルートファイルシステムは読み込み専用でマウントされ、ほとんど何もセットアップされません。このモードの linux single に対する主な長所は、 init ファイルがロードされないことです。 init が壊れたか機能しない場合でも、ファイルシステムをマウントすることによって、再インストールすれば失われる可能性のあるデータを復元することができます。

 カーネルを再構築し、その新しいカーネルを一刻も早く試したくて、 /sbin/lilo を実行する前にリブートしてしまうということは、まれにあります。しかし、lilo.confのすでに古いカーネルに対するエントリがなくなったら、問題になります。この問題を解決する方法については、このセクションを読んでください。

 多くの場合は、Red Hat LinuxブートディスクからRed Hat Linuxシステムをブートし、[1]ルートファイルシステムをマウントして作業を進めることができます。以下にその方法を示します。

 ブートディスクのboot:プロンプトに対して以下のコマンドを入力します。

linux single root= /dev/hd XX initrd=

XX /dev/hd XX /dev/hdXXのXXを、ルートパーティションを表す適切な文字と数字で置き換えます。

 このコマンドを入力すると何が起こるのでしょうか。まず、システムがシングルユーザーモードでブートし、指定したルートパーティションがルートパーティションとして設定されます。空の initrd を指定すると、ブートディスク上のインストール関連イメージがバイパスされるので、即座にシングルユーザーモードに入ります。

 残念ながら、この方法には欠点もあります。Red Hat Linuxブートディスク上のカーネルは組み込みのIDEしかサポートしていないため、SCSIベースのシステムを使用している場合、この方法を使用することができません。その場合は、上記のlinux rescueコマンドを使用して、レスキューモードにアクセスする必要があります。

Notes

[1]

インストールブートディスクを作成するには、空のフロッピーディスクまたはRed Hat Linux CD-ROM #1をドライブに挿入し、Red Hat Linux CD-ROM #1に格納されているimages/boot.imgファイルを使用して、dd if=boot.img of=/dev/fd0コマンドを入力します。