第 3章レスキューモード

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

レスキューモードとは

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

名前が示すように、レスキューモードは、ある状態からユーザーをレスキュー(救助)するためのものです。通常の運用では、Red Hat Linuxシステムはプログラムの実行、ファイルの保存など、どのような操作を行うにもシステムのハードディスクドライブにあるファイルを使用します。

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

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

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

Linuxを起動できない

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

もう1つの一般的な問題は、インストール後にパーティションのサイズを変更するため、あるいは空き領域から新しいパーティションを作成するためにパーティションツールを使用し、その結果パーティションの順序が変更されてしまう場合です。/パーティションのパーティション番号が変更されると、ブートローダーはこの番号を検出してパーティションをマウントすることができません。この問題を解決するには、レスキューモードで起動し、GRUBを使用している場合は/boot/grub/grub.confを変更し、LILOを使用している場合は/etc/lilo.confを変更します。

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

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

レスキューモードの起動

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

boot: linux rescue

以下のいずれかの方法でインストールブートプロンプトを表示します。

  • boot.imgイメージから作成したインストールブートディスクからシステムをブートする。この方法を使用するには、Red Hat Linux CD-ROM #1がレスキューイメージとして挿入されているか、あるいはレスキューイメージがISOイメージとしてハードディスクドライブ上に存在していることが必要です。 [1]

  • Red Hat Linux CD-ROM #1からシステムをブートする。

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

ブートディスクまたはRed Hat Linux CD-ROM #1から起動し、有効なレスキューイメージがアクセス可能であれば、次のメッセージが表示されます。

The rescue environment will now attempt to find your Red Hat
Linux installation and mount it under the directory
/mnt/sysimage.  You can then make any changes required to your
system.  If you want to proceed with this step choose
'Continue'.
If for some reason this process fails you can choose 'Skip' 
and this step will be skipped and you will go directly to a
command shell.

Continueを選択すると、ファイルシステムは/mnt/sysimageディレクトリにマウントされます。パーティションのマウントが失敗すると、そのことが通知されます。Skipを選択すると、ファイルシステムはマウントされません。ファイルシステムが破損していると思われる場合は、Skipを選択します。

システムがレスキューモードに入ると、VC(仮想コンソール)1とVC 2に次のプロンプトが表示されます(VC 1にアクセスするにはCtrlAltF1キーを使用し、VC 2にアクセスするにはCtrlAltF2キーを使用します)。

bash#

Continueを選択した場合はパーティションが自動的にマウントされ、正常にマウントされると、システムはシングルユーザーモードに入ります。

レスキューモードで、Linuxパーティションを手動でマウントするには、たとえば/fooというディレクトリを作成し、次のコマンドを入力します。

mount -t ext3 /dev/hda5 /foo

上記のコマンドで、/fooはユーザーが作成したディレクトリ、/dev/hda5はマウントするパーティションです。パーティションがext2タイプの場合、ext3ではなくext2を指定します。

パーティションの名前が不明な場合は、次のコマンドを実行すれば一覧が表示されます。

fdisk -l

ファイルシステムがマウントされた後、システムをルートパーティションにしたい場合、コマンドchroot /mnt/sysimageを使用します。これは、rpmのように、ルートパーティションが/としてマウントされていることを必要とするコマンドを実行する場合に便利です。chroot環境を終了するには、exitと入力するとbash#プロンプトに戻ります。

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

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

直接、シングルユーザーモードでブートできる可能性があります。システムがブートするが、ブートを完了してもユーザーがログインできない場合は、シングルユーザーモードを試してみてください。

GRUBを使用している場合は、以下のステップに従ってシングルユーザーモードでブートします。

  1. GRUBパスワードが設定されている場合は、pと入力し、パスワードを入力します。

  2. ブートしようとするカーネルのバージョンのRed Hat Linuxを選択し、eを入力して編集を選択します。選択したタイトルに対する設定ファイル内の項目の一覧が表示されます。

  3. kernelで始まる行を選択し、eと入力して行を編集します。

  4. 行の末尾に移動し、1文字分のスペースを空けてsingleと入力します(スペースバーを押し、次にsingleと入力します)。Enterキーを押して編集モードを終了します。

  5. GRUB画面に戻り、bと入力してシングルユーザーモードでブートします。

LILOを使用している場合は、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/hdXX initrd=

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

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

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

注意

[1]

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