2004年06月06日

GRUBで復旧と思ったら

調子の悪いLinuxファイルサーバ同士を二個一で直して復旧しようとして、外付けATAカードをつけてIDEのディスク8台ぶら下げたんですが、いざ起動してみるとOSそのまま使う予定のオンボードIDEのプライマリマスタに繋いだハードディスクじゃなくて、外付けATAカードのプライマリスレーブに繋いだハードディスクのOSが起動してしまいました。

最初はBIOSの起動順位を間違えたかなぁと思ったのですが、BIOSの設定では「1.FD起動、2.プライマリマスタ」しか起動もとデバイスを指定してません(^^;<OtherDeviceからの起動もDisableになってますし

まぁ、いらない方のOSのディスクとCD-ROMドライブだけ接続してフォーマットすればいい話なんですが、いらない方のMBRにGRUBが入って居たので、そのままメインのOSの起動にチャレンジしてみることにしました。

まず、GRUBの画面になったら「e」を押して現在の設定を見ます。
すると、いらない方のOSのディスクがhd0.0の設定のままで起動しているのが判るのでどうもディスクの配置自体がめちゃくちゃになっている様です。

で、そこからメインのOSが入って居るディスクを見つけるためには、cを押してコマンドライン画面にしてから「root (」までタイプしてタブキーを押します。

すると、GRUBの強力な補完機能によってドライブのリストが表示されるので、そこに表示されているディスクのパーテーション情報を同じくタブキーで確認していきます。

GRUB > root ( [TABを押す]
Possible disks are: fd0 hd0 hd1 hd2 hd3 hd4 hd5 hd6 hd7

GRUB > root ( hd7,[TABを押す]
(パーテーションテーブルが無いディスクの場合は何も補完されない)

GRUB > root ( hd5,[TABを押す]
Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type is ext2fs, partition type 0x83
Partition num: 2, Filesystem type is ext2fs, partition type 0x83
Partition num: 4, Filesystem type unknown, partition type 0x82
Partition num: 5, Filesystem type is ext2fs, partition type 0x83

どうも、パーテーションの構成的にhd5のようです。

で、次はkernelコマンドでどんなファイルがあるか探します。
rootコマンドでカーネルイメージのありそうなところのアタリをつけて「kernel /」のタブ補完で内容を探っていきます。

GRUB > root ( hd5,1)
GRUB > kernel /[TABを押す]
Possible files are: vmlinuz-2.4.18-3 initrd-2.4.18-3.img 他
見事に/bootのマウント先だったので
GRUB > kernel /vmlinuz-2.4.18-14
等としてエンターするとkernelの場所をGRUBに覚えさせることが出来ます。

このケースではinitrdのファイルもあるので、以下のようにして同様に指示してしまいます。

GRUB > initrd /initrd-2.4.18-3.img
これでbootコマンドを実行すれば起動するはずですが・・・失敗_| ̄|○

っていうか、どうにもおかしい。
最初に確認したGRUBで設定されていたカーネルのVerは2.4.18-14

新しい方のOSを残す予定なのに、古い方のOSの方がkernelのバージョンが新しいとはちょっと考えにくいので、GRUBであちこち見回ってみたら・・・

  • hd0→新しい方のOSのディスク
  • hd5→古い方のOSのディスク
やっぱり・・・

っていうか、よくよく見てみると残す方のOSのMBRで起動して新しい方のカーネルで起動まではして居るんですが、そのあとなんで関係ない古いOSが立ち上がってる・・・

そこではたと気が付く・・・

「/etc/fstabの中身が原因か・・・」

そういえばどっちもfstabの内容は
LABEL=/                 /                       ext3    defaults        1 1
になってました。

それじゃ、どっちの「LABEL=/」が呼ばれても不思議じゃないわけで・・・

で、対策として立ち上がった古い方のOSでfstabをいじって内容をコメントアウト
その後リブートすると何もマウントされていないシングルユーザーモードで停止するので、そこでfdiskで古い方のパーテーションテーブルを解放
で、再起動すると見事新しい方のOSで起動しました( ̄▽ ̄)ノ

にしてもLABELでハマるとは。
便利なようで意外と使いにくいかもしれませんね<LABELでのマウント

【参考リンク】

Posted by Takuchan at 2004年06月06日 00:43 | トラックバック(0)