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

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 /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 等のようにルートパーティションが見つかるまで 試しなさい。見つからないなら 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
    

    /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/*
    原因が見つかれば、復旧させるための措置をとれるはず。 ]

  2. 場面 2: LILO が動作しない場合 ..

    上記の 場面 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 
    

    あるいは 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, 2, 3 と 4 に失敗したら

    ステップ 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
    

    注意: 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-a4.tar 上のすべてのファイルを 回復出来ることが分かります。

    [訳注: ここでの原著者の意図は、hda4 に再インストールしたLinuxを消さずに元の環境を 上書きでリストアすることだと思われる。この場合、/boot/*や/etc/lilo.conf は上書き してはならない。訳者の考えだと、hda4 に再インストールしたLinuxを消してから リストアし、リストア後、/sbin/lilo の実行などliloの設定を行なったほうが良いような 気がする。]

1.2 予防手段

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

1.3 LILO の削除

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


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