事故は避けられぬもので、 Linux のシステム設定を行なっている時に事故が起これば、 マスタブートレコード - master boot record (MBR) 若しくは LILO (Linux boot Loader) の破壊が起こるであろう。 ハードディスクの障害のために linux がブートしなくなる場合もある。 操作ミスによりハードディスクのパーティションの再設定や、または Linux をインストールしたコンピュータに Windows 98/NT のような他の OS を 追加インストールした場合には LILO が失敗するときもある。
この文書は LILO または Linux について文書を沢山苦労して読まなくても 良い様にすばやい回復のための考え方、秘訣と簡単な手引きを提供する。
LILO またはシステム障害からの回復は次の手順に従うこと。
tomsrtbt フロッピー http://www.toms.net/rb を入手しなさい。 tomsrtbt フロッピーからブート。 fdisk を使用してパーティションを探しなさい。ルートパーティションを次の手順で 認識しなさい。‐
【訳注: ここでパーティションテーブルが飛んでいることがわかったら、 Partition Rescue mini HOW-TO の手順のほうを先に試したほうが良い。 http://www.linux.or.jp/JF/JFdocs/Partition-Rescue-mini-HOWTO.html 】 調べたパーティション構成をもとに、エディターを使って /etc/fstab に問題の パーティションを書き足しなさい (たとえば、次のように書き足すことになる)。
bash# fdisk /dev/hda bash# mkdir /test bash# mount /dev/hda1 /test bash# ls /test ルートパーティションならば、次のようになっているはずである。 - bin fd lib mnt proc sbin usr boot dev etc home lost+found opt root tmp var
今回の例題のルートパーティションは /dev/hda4 となっている。-
bash# mkdir /hda4 bash# mount /dev/hda4 /hda4 bash# cat /hda4/etc/fstab fstab の出力を見て、次のようにパーティションをマウントしなさい。- bash# mount /dev/hda5 /hda4/boot bash# mount /dev/hda6 /hda4/usr bash# mount /dev/hda7 /hda4/var bash# mount /dev/hda8 /hda4/opt bash# mount /dev/hda9 /hda4/root bash# mount /dev/hda10 /hda4/home
/hda4/etc/fstab でなく /etc/fstab を編集し 次のようにしなさい。-
/dev/hda4 /hda4 ext2 defaults 1 1 /dev/hda5 /hda4/boot ext2 defaults 1 1 /dev/hda6 /hda4/usr ext2 defaults 1 1 /dev/hda7 /hda4/var ext2 defaults 1 1 /dev/hda8 /hda4/opt ext2 defaults 1 1 /dev/hda9 /hda4/root ext2 defaults 1 1 /dev/hda10 /hda4/home ext2 defaults 1 1 /dev/hda11 /hda4/win95part vfat defaults 1 1 ここでは hda4 が linux ルート パーティション、hda5 がブートパーティションで、 hda11 は Windows 95 Vfat システムである。 Bash# Mkdir /Hda4/Win95part Bash# Mount /Hda4/Win95part そして、fsck か e2fsck コマンドでシステムを修復する。 Bash# Man Fsck Bash# Man E2fsck
【訳注: たとえば、次のファイルに異常が無いかを調べ、Linuxが起動しない 原因を探ってみると良い。 /hda4/sbin/init /hda4/etc/inittab /hda4/etc/rc.d/* 原因が見つかれば、復旧させるための措置をとれるはず。
】
上記の 場面 1 を試してみても失敗する場合、次の手順を試行する。 既に /hda4 がマウントされていて /etc/fstab ファイルもあるとする。
【訳注: もちろん tomsrtbt フロッピーで起動してから】
bash# mount -a bash# chroot /hda4 /sbin/lilo -q bash# man chroot bash# chroot /hda4 /sbin/lilo
bash# man lilo bash# /sbin/lilo -r /hda4
場面 1 と 2 がうまく行かない場合、'mkbootdisk' で (インストール途中や 'man mkbootdisk' をみて) ブートディスクを作成した場合、 そのディスクでブートして該当するパーティションを修復しなさい。 mkbootdisk は mkbootdisk*.rpm パッケージに含まれているのでインストール する必要がある。 【訳注: ここでチェックすべきファイルは、 /etc/lilo.conf /boot/vmlinuz /vmlinuz /boot/initrd* 等である。もし、問題があったならば修復しなさい。これらのファイルを いじった後は、/sbin/lilo を実行しておく必要があるだろう。 】
linux が動作しているほかのコンピュータがあれば、root でログインして 次のように操作しなさい。-
bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf
bash# mkbootdisk /dev/fd0
bash# mv /etc/lilo-original.conf /etc/lilo.conf
ステップ 1: tomsrtbt でブートしパーティションをマウントしたらルートパーティション を他の空きのあるパーティションに次のコマンドでバックアップしなさい。
/etc/fstab を編集して(次の例を自分のディスクレイアウトに置き換えて )から実行しなさい。 /dev/hda4 /hda4 ext2 defaults 1 1 /dev/hda11 /b1 vfat defaults 1 1 bash$ mkdir /hda4; mount /hda4 bash$ mkdir /b1; mount /b1 bash$ cd / bash$ df /b1 にルートパーティションを tar できるだけの充分な空き容量があることを確認しなさい。 bash$ tar cvf /b1/root-hda4.tar /hda4
ステップ 2: Linux の cdrom を挿入し、cdrom からリブートし redhat linux を /dev/hda4 に インストールしなさい(しかし ここでは余分なパッケージは一切インストールしないで、 root と boot パッケージと LILO マネージャだけをインストールし、 必要最小限のシステムとしなさい)。ハードディスクには LILO もインストール される。linux を再起動して root でログインし、次のコマンドを実行せよ。-
bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf
bash# mv /etc/lilo-original.conf /etc/lilo.conf
bash# mkbootdisk /dev/fd0 bash# cp /etc/lilo-original.conf /etc/lilo.conf
【訳注: ここでの原著者の意図は、hda4 に再インストールしたLinuxを消さずに元の環境を 上書きでリストアすることだと思われる。この場合、/boot/*や/etc/lilo.conf は上書き してはならない。訳者の考えだと、hda4 に再インストールしたLinuxを消してから リストアし、リストア後、/sbin/lilo の実行などliloの設定を行なったほうが良いような 気がする。 】
将来、起こりうる障害に対して次の予防手段を講じるべきである。
bash$ man mkbootdisk mkbootdisk は mkbootdisk*.rpm パッケージに含まれているので、 これをインストールする必要がある。 bash$ mkbootdisk --help bash$ mkbootdisk --device /dev/fd0 2.2.12-20
bash# vi /etc/fstab これらの行を挿入しなさい。 /dev/hda1 /a1 vfat defaults 1 1 /dev/hdb1 /b1 vfat defaults 1 1 この場合、hda1 は linux の root パーティションの '/' である。 bash# cd / bash# tar cvf /b1/linux-root-partition-hda1.tar a1 bash# tar cvf /b1/linux-boot-partition-hda1.tar a1/boot
MS DOS のコマンドプロンプトで DOS のコマンド (FDISK) により DOS のブートローダでブートセクターを置きかえる事ができる。
FDISK /MBR
また linux の /usr/doc/lilo* にある LILO の文書を読めば LILO を削除する他の方法がわかる。 'man lilo' も参照しなさい。
/etc/lilo.conf を変更した後では必ず lilo コマンドを実行しないと変更が実際に反映されない。 初心者がおかす間違いで良く見られる。次のコマンドを実行しなさい。-
bash# lilo -v -v -v