何か問題が発生した場合、解決するための方法はいくつかあります。ただし、その方法を実行するには、システムを十分に理解していることが必要です。本章では、システムのレスキューを行うことのできる、レスキューモードとシングルユーザーモードでブートする方法を説明します。
レスキューモードは、コンパクトな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を使用している場合は、以下のステップに従ってシングルユーザーモードでブートします。
GRUBパスワードが設定されている場合は、pと入力し、パスワードを入力します。
ブートしようとするカーネルのバージョンのRed Hat Linuxを選択し、eを入力して編集を選択します。選択したタイトルに対する設定ファイル内の項目の一覧が表示されます。
kernelで始まる行を選択し、eと入力して行を編集します。
行の末尾に移動し、1文字分のスペースを空けてsingleと入力します(スペースバーを押し、次にsingleと入力します)。Enterキーを押して編集モードを終了します。
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コマンドを入力します。 |