事故は避けられぬもので、 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 /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/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 boot/ルート パーティションで、 hda11 は windows 95 vfat システムである。 bash# mkdir /hda4/win95part bash# mount /hda4/win95part そして、fsck と e2fsck コマンドでシステムを修復する。 bash# man fsck bash# man e2fsck
[訳注: たとえば、次のファイルに異常が無いかを調べ、Linuxが起動しない
原因を探ってみると良い。
/a4/sbin/init
/a4/etc/inittab
/a4/etc/rc.d/*
原因が見つかれば、復旧させるための措置をとれるはず。
]
上記の 場面 1 を試してみても失敗する場合、
[訳注: もちろん tomsrtbt フロッピーで起動してから]
bash# mkdir /hda4 bash# mount /hda4 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/hdb1 /b1 vfat defaults 1 1 bash$ mkdir /b1; mount /b1 bash$ cd / bash$ tar cvf /b1/root-a4.tar a4
ステップ 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
問題のマシンにこのフロッピーを用いてこのブートフロッピーをテストすると、 この作業で上記のステップ 1 で行なった /b1/root-a4.tar 上のすべてのファイルを 回復出来ることが分かります。
[訳注: ここでの原著者の意図は、hda4 に再インストールしたLinuxを消さずに元の環境を 上書きでリストアすることだと思われる。この場合、/boot/*や/etc/lilo.conf は上書き してはならない。訳者の考えだと、hda4 に再インストールしたLinuxを消してから リストアし、リストア後、/sbin/lilo の実行などliloの設定を行なったほうが良いような 気がする。]
将来、起こりうる障害に対して次の予防手段を講じるべきである。
bash$ man mkbootdisk The mkbootdisk is in mkbootdisk*.rpm package, you must install this. 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
DOS のコマンド (FDISK) によりDOS のブートローダでブートセクターを置きかえる事ができる。
FDISK /MBR
また linux の /usr/doc/lilo* にある LILO の文書を読めば LILO を削除する他の方法がわかる。 'man lilo' も参照しなさい。
/etc/lilo.conf を変更した後では lilo コマンドを実行しないと変更が実際に反映されない。 初心者がおかす間違いで良く見られる。次のコマンドを実行しなさい。-
bash# lilo -v -v -v