事故は避けられぬもので、 Linux のシステム設定を行なっている時に事故が起これば、
マスタブートレコード - master boot record (MBR) 若しくは
LILO (Linux boot Loader) の破壊が起こるであろう。
ハードディスクの障害のために linux がブートしなくなる場合もある。
操作ミスによりハードディスクのパーティションの再設定や、または
Linux をインストールしたコンピュータに Windows 98/NT のような他の OS を
追加インストールした場合には LILO が失敗するときもある。
- 場面 1: システムがブートしない -
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/hda2 を試し
さい。次は hda3, hda4, hda5 等のようにルートパーティションが見つかるまで
試しなさい。hda に見つからないなら hdb, hdc,
hdd 等のように繰り返しなさい。
lilo の構成を新たに行なう毎に、同様に /usr, /var, や /boot パーティション
について行なう必要がある。
今回の例題のルートパーティションは /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
この場合は、fstab ファイルに hda5 はブート用、hda6 は usr、 hda7 は var、hda8 は opt、
hda9 は root、hda10 は home そして hda11 は windows95 のディレクトリとなっている。
/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/*
原因が見つかれば、復旧させるための措置をとれるはず。
】
- 場面 2: LILO が動作しない場合 ..
上記の 場面 1 を試してみても失敗する場合、次の手順を試行する。
既に /hda4 がマウントされていて /etc/fstab ファイルもあるとする。
【訳注: もちろん tomsrtbt フロッピーで起動してから】
bash# mount -a
bash# chroot /hda4 /sbin/lilo -q
bash# man chroot
bash# chroot /hda4 /sbin/lilo
あるいは chroot の代わりに /sbin/lilo を直接実行しなさい。
"/sbin/lilo -r"は"chroot /sbin/lilo"と同じ働きをする。
より便利であることと、エラーを見つけやすいため、lilo -r の代わりに chroot を
使用することを強く勧める。
bash# man lilo
bash# /sbin/lilo -r /hda4
- 場面 3: LILO が動作しない場合 ..
場面 1 と 2 がうまく行かない場合、'mkbootdisk' で (インストール途中や
'man mkbootdisk' をみて) ブートディスクを作成した場合、
そのディスクでブートして該当するパーティションを修復しなさい。
mkbootdisk は mkbootdisk*.rpm パッケージに含まれているのでインストール
する必要がある。
【訳注: ここでチェックすべきファイルは、
/etc/lilo.conf
/boot/vmlinuz
/vmlinuz
/boot/initrd*
等である。もし、問題があったならば修復しなさい。これらのファイルを
いじった後は、/sbin/lilo を実行しておく必要があるだろう。
】
- 場面 4:上記 場面 1, 2 と 3 を失敗してブートディスクも無い場合
linux が動作しているほかのコンピュータがあれば、root でログインして
次のように操作しなさい。-
bash$ man mkbootdisk
bash# cp /etc/lilo.conf /etc/lilo-original.conf
/etc/lilo.conf を編集してルートパーティションの名前を '場面 1' で
書いたようにして、空のフロッピーを挿入して次のようにしなさい。
bash# mkbootdisk /dev/fd0
mkbootdisk は mkbootdisk*.rpm パッケージに含まれているのでこの
パッケージをインストールする必要がある。
/etc/lilo-original.conf を /etc/lilo.conf に戻したか確認して、
bash# mv /etc/lilo-original.conf /etc/lilo.conf
【訳注: このファイルの書き戻しを追加した。】
このフロッピーを使用して '場面 3' へ移動しなさい。
- 場面 5: 恐らくここには来ない方が良い最悪の事態である。
1 から 4 までの場面の殆どで起こりうる。上記、場面 1, 2, 3 と 4 に失敗したら
ステップ 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
注意: lilo-original.conf から lilo.conf へ戻しておくことを忘れずに!!
/etc/lilo.conf を編集しルートパーティションの名前を上記 '場面 1' で
使用したものにして、空のフロッピーを挿入して次のコマンドを実行しなさい。-
bash# mv /etc/lilo-original.conf /etc/lilo.conf
【訳注: ファイルの書き戻しを追加した。】
bash# mkbootdisk /dev/fd0
bash# cp /etc/lilo-original.conf /etc/lilo.conf
【訳注: この lilo.conf の変更作業は必要ないような気がする。】
問題のマシンにこのフロッピーを用いてこのブートフロッピーをテストすると、
この作業で上記のステップ 1 で行なった /b1/root-hda4.tar 上のすべてのファイルを
回復できることが分かる。
【訳注: ここでの原著者の意図は、hda4 に再インストールしたLinuxを消さずに元の環境を
上書きでリストアすることだと思われる。この場合、/boot/*や/etc/lilo.conf は上書き
してはならない。訳者の考えだと、hda4 に再インストールしたLinuxを消してから
リストアし、リストア後、/sbin/lilo の実行などliloの設定を行なったほうが良いような
気がする。
】
また linux の /usr/doc/lilo* にある LILO の文書を読めば LILO を削除する他の方法がわかる。
'man lilo' も参照しなさい。