grubの崩壊と復活

要約

grub-installコマンドを間違えて実行したためにgrubが破壊され、私のThinkpadが起動できなくなりました。

KNOPPIXを立ち上げ、grubをネット経由で研究室のパソコンに送り、ブータブルCD化。

CDからgrubを立ち上げ、Fedora Coreを起動。

正しくgrub-installを実行し、無事復活しました。

背景

相変わらずXが調子悪かったので、色々といじっていたところでした。

grub.confを調整したのはいいですが、grub-installを間違えて以下のように実行してしまいました。

grub-install /dev/hda1

何がいけないのかというと、私のように/と/rootをパーティションで分けてる場合はオプションでrootディレクトリを指定しなければならなかったんです。(正しいコマンドについては後述)

そういうわけで一旦rebootしたが最後、IBMロゴの後に

GRUB_

と表示されてめでたく起動しなくなりましたとさ。

KNOPPIXを利用してgrubを回収

壊れたgrubのあるPCを復活させるには、起動してgrub-installするしかありません。

そのためには、ハードディスクとは別のメディアからgrubを起動する必要があります。

ThinkpadR40eにはFDDがないので、CDでブートするしかありません。

そこで以下のページを参考に、grubのブータブルCDを作成しました。

ITmedia エンタープライズ : Linux Tips「GRUBのブータブルCDを作りたい」

ITmedia エンタープライズ : Linux Tips「GRUB(MBR)が破損してカーネル読み込みができない」

LunaTear: GRUBのBOOT CDを作ろう

必要なデータはHDD内にしかなかったので、KNOPPIXで起動。

/usr/share/grub/i386-redhat/以下にあるstage1とstage2というファイルをネット経由で別PC(私の場合は研究室のPC)に送ります。

ちなみに以下のコマンドでDHCPにできるので、KNOPPIXからでもネットが使えます。

pump -i eth0

最後に、grub.confの中身を確認しておきます。

手でメモとってもいいし、他のファイルと一緒に転送して印刷してもいいでしょう。

私はこれが必要なことを後から気づいたので再びKNOPPIXを起動するはめに会いましたが。

ブータブルCDの作成

上記参考リンクをもとに、以下の手順で作成しました。

前提条件:

  • カレントディレクトリ:./
  • ファイルstage1,stage2のあるディレクトリ:./
  • imgファイルを作るディレクトリ:./img/
  • CDはATAPIドライブで焼く。バスナンバーは0,0,0*1

dd if=/dev/zero of=blankfile bs=1k count=1440
cat stage1 stage2 > grubimg
cat grubimg blankfile > joinimg
dd if=joinimg of=img/boot.img bs=1k count=1440
mkisofs -b boot.img -o grub.iso iso/
cdrecord speed=1 dev=ATAPI:0,0,0 grub.iso

CDのgrubから起動

私は以下のコマンドで起動しましたが、当然環境によって異なるので必ず自分のgrub.confで確認してください。

root (hd0,0)
kernel /vmlinuz(中略) ro root=LABEL=/1 acpi=off rhgb quiet
initrd /initrd(以下略)
boot

で、めでたく起動しました。

仕上げ:grub-install

正しくは、

grub-install --root-directory=/ /dev/hda

でした。

これで全て解決です。

所用時間

起動不能になってから復活まで7時間半ぐらいでした。

疲れました…。

追記(02/15)

grub-installのオプションを修正。

*1:事前にcdrecord -scanbus dev=ATAPIで確認しておくこと