次のページ 前のページ 目次へ

1. はじめに

事故は避けられぬもので、 Linux のシステム設定を行なっている時に事故が起これば、 マスタブートレコード - master boot record (MBR) 若しくは LILO (Linux boot Loader) の破壊が起こるであろう。 ハードディスクの障害のために linux がブートしなくなる場合もある。 操作ミスによりハードディスクのパーティションの再設定や、または Linux をインストールしたコンピュータに Windows 98/NT のような他の OS を 追加インストールした場合には LILO が失敗するときもある。

この文書は LILO または Linux について文書を沢山苦労して読まなくても 良い様にすばやい回復のための考え方、秘訣と簡単な手引きを提供する。

1.1 回復へのすばやい手順

LILO またはシステム障害からの回復は次の手順に従うこと。

  1. 場面 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. 場面 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. 場面 3: LILO が動作しない場合 ..

    場面 1 と 2 がうまく行かない場合、'mkbootdisk' で (インストール途中や 'man mkbootdisk' をみて) ブートディスクを作成した場合、 そのディスクでブートして該当するパーティションを修復しなさい。 mkbootdisk は mkbootdisk*.rpm パッケージに含まれているのでインストール する必要がある。 【訳注: ここでチェックすべきファイルは、 /etc/lilo.conf /boot/vmlinuz /vmlinuz /boot/initrd* 等である。もし、問題があったならば修復しなさい。これらのファイルを いじった後は、/sbin/lilo を実行しておく必要があるだろう。 】

  4. 場面 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. 場面 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の設定を行なったほうが良いような 気がする。 】

1.2 予防手段

将来、起こりうる障害に対して次の予防手段を講じるべきである。

1.3 LILO の削除

MS DOS のコマンドプロンプトで DOS のコマンド (FDISK) により DOS のブートローダでブートセクターを置きかえる事ができる。


        FDISK  /MBR

ここで MBR とは "Master Boot Record" の略である。

また linux の /usr/doc/lilo* にある LILO の文書を読めば LILO を削除する他の方法がわかる。 'man lilo' も参照しなさい。

1.4 起こしがちな間違い

/etc/lilo.conf を変更した後では必ず lilo コマンドを実行しないと変更が実際に反映されない。 初心者がおかす間違いで良く見られる。次のコマンドを実行しなさい。-


bash# lilo -v -v -v


次のページ 前のページ 目次へ