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)が破損してカーネル読み込みができない」
必要なデータは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
で、めでたく起動しました。
所用時間
起動不能になってから復活まで7時間半ぐらいでした。
疲れました…。
追記(02/15)
grub-installのオプションを修正。
*1:事前にcdrecord -scanbus dev=ATAPIで確認しておくこと