grubが起動しないときのリカバリ方法

  • 投稿日:
  • 更新日:2015/03/08
  • by
  • カテゴリ:

GrubがError 17で起動しない!

いろいろいじっていたら、grubが起動しなくなってしまいました。

GRUB loading stage 1.5
GRUB loading, please wait...

Error 17 : Cannot mount selected partition

という感じです。

パーティションのフォーマットが原因

どうも、bootパーティションがext4になってしまったのが原因のようです。 grubはext4からの起動ができないのですが、いじっていたらいつの間にか変換してしまったようです。

とりあえず、パーティションタイプを0x8e(Linux LVM)から0x83(Linux native)にしてみましたが状態は改善せず。 このマシンはCDからのブートもできないのでgrubが起動しないのはかなり致命的です。

フロッピーから起動

仕方ないので、フロッピーにgrubを焼き、Windowsを起動します。 grubのイメージはalpha.gnu.orgにあるので、ここからgrub-0.97-i386-pc.extfsあたりを拾ってきて、rawriteで焼きます。 WindowsはHDDの最初のパーティションにあるので、フロッピーからgrubが起動したら"c"をタイプし、以下のコマンドを打ち込みます。

grub> rootnoverify (hd0,0)
grub> makeactive
grub> chainloader +1
grub> boot 

とりあえずWindowsが起動します。 ここから、UNetbootinをインストールし、NTLDRからXubuntuを起動します。

Grubの修復

さらに、grubを修復するため、以下のようにしてgrubをインストールしなおします。

% grub-install --root-directory=/mnt /dev/sda

こ こでインストールされるgrubはバージョン1.97~beta4で、以前の0.97と異なることに注意が必要です。 まず、/boot/grub/menu.lstを使いません。 また、HDDのパーティション番号は0ではなく1から始まるようになっています。 そのため、たとえばsda1はgrub 0.97では(hd0,0)ですが、grub 1.97~beta4では(hd0,1)となります。

grubインストール後の最初の起動では、UNetbootinからの起動オプションが有効になっているため、これを編集して(hd0,3)から起動できるようにします。 具体的には、grubのエディタモードに入り、

root=(hd0,3)
linux	/boot/vmlinuz-2.6.31-14-generic root=/dev/sda3
initrd	/boot/initrd.img-2.6.31-14-generic

のようにして起動します。

無事起動できたら、grubのメニューを本来の状態に戻します。 これはmenu.lstを編集するのではなく、ツールを使います。

% sudo grub-mkconfig > grub.cfg

これを/boot/grub/にコピーして終了です。 ふひぃ。

高機能になるのはありがたいのですが、いろいろ複雑になって覚えたテクニックが使えなくなってしまったりするのが大変ですね。

おまけ

以下を試してみましょう。

% aptitude moo
% aptitude -v moo
% aptitude -vv moo
% aptitude -vvv moo
...

こちらもよく読まれています