夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

grub rescueの正しい付き合い方

お久しぶりでこんなネタが出来てしまいました(・_・;)

今日Ubuntu12.04からなにやら謎の119GBのファイルシステムが、怪しいと思い見てみるとアップデートに失敗して再インストールする前のUbuntuだったことが判明。
で、調子に載っていらないからとか削除したのが部活の話。。。

そして家に帰ってきてみるとさぁ大変、ブログにコード載っける作業しようとしてパソコン起動したらgrub rescueですよ。
多少弄ったことはありますけどさすがにやばい…というわけでWalkman ZとGoogle先生に力を借りてさっそく修復したので、そこで躓いたことなど含めて正しいつきあいかたを説明します。

まずgrub rescueが出てきたらUbuntuパーティションが残っていること前提ですが

grub rescue> ls

とlsコマンドを打ち込む。するとここでネットでは「(hd0,x)というのがいっぱい出てくる(xは自然数)」とか書いてたりするのだが実際デュアルブートなどしているとだとおもうのだけど

(hd0)(hd0,msdos4)(hd0,msdos5)

などとでてくるのである。この時いずれのパーティション(※(hd0,ほにゃらら)はパーティションを示しており、hd0だと内部ハードディスク、hd1だと外部のパーティションだと思えばいい)をlsしてもファイルシステムなんて見つかりっこない。だから(hd0,3)とかのようにmsdosを抜いてlsしていく。

grub rescue> ls (hd0,1)/
grub rescue> ls (hd0,3)/

ここで注意してほしいこと。まず、ファイルシステムが発見された時の表示は
/ /boot /tmp /home
みたいに/がいっぱいでてくるからそれを目印にしてもらうとよいということ。それと英字キーボードになってしまっているので一応対応を書いておく。

Shift+(9や)が書いてあるキー) → (
Shift+(テンキーじゃない0) → )
^ → =

以上のことに注意してファイルシステムを見つける。
見つけたら、一般の人は/boot/grubに、それ以外に入れてるひとは大分わかってる人だと思うから省くけどブートシステムがあるからそれを指定して起動させる。ここでは(hd0,7)にファイルシステムがあったと仮定すると


grub rescue> set prefix=(hd0,7)/boot/grub
grub rescue> insmod (hd0,7)/boot/grub/normal.mod
grub rescue> normal

これによりブートできたと思う。
で、あともうひとつ注意しておかないと行けないのは、今までやった手順はあくまでgrub rescueくんに「ここに鍵あるから取ってきて(ここからブートしてね)」って一言言って部屋を開けてもらい「ありがとう、君はもういいよ。鍵はそっちで処理しといて」って言ってるようなもんなんでオートロックなgrubは再起動でまた同じ手順を踏まなきゃいけないくなること。
だから、これらの手順がすんだあとはかならずubuntuを起動して

sudo grub-install /dev/sda

とコマンドプロントで打ち込んでgrubを再インストールするのを忘れないで。
以上ですべての手順が終わり。まぁようするにパーティション弄るのはやっぱり細心の注意を払ってってことですね(笑)

ほな、さいならー