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 ...
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!