Windows + Unix系でgrub起動から Windowsを手動で立ち上げる方法

WindowsXP環境にNevadaをインストール後(これで、MBRからはgrubが立ち上がる)に、さらにOpenSolarisをインストールすると、Nevada領域に上書きされます。
今のところ通常インストールでは、NevadaOpenSolarisは別々のパーティションに入れられないからのようです。(気になるもの。http://solaris.sunfish.suginami.tokyo.jp/blog/2008/07/nevada_opensolaris_multiboot.html)

で、OpenSolarisのセットアップ中に不慮の事故(電源が落ちるとか。)が起きると、grubが中途半端(Solaris領域にあるからね)になって、通常のOS選択画面まで行きません。
そんなときの復旧メモです。


grub> rootnoverify (hd0,0)
grub> makeactive
grub> chainloader +1
grub> boot
これで、Windowsが立ち上がるはずです。ダメなら(hd0,1)とかちょっと変えてやってみるべし。

とりあえず、Windowsがディスクの先頭側(通常はこうなるはず)にある場合は上記のコマンド固定でいいです。
(grub.confのバックアップがあれば、、、)


ちなみに、WindowsのNTローダーの復旧方法は以下となります。

1.WindowsXP(or2000)のCDからブートさせ、回復コンソールを立ち上げる。
2.以下


C:\WINDOWS>map

C: NTFS 30726 MB \Device\Harddisk0\Partition1
E: 83745 MB \Device\Harddisk0\Partition2
D: \Device\CdRom0

C:\WINDOES>fixmbr \Device\Harddisk0

** 警告 **

このコンピュータに、非標準または無効なマスタブートレコードが
ある可能性があります。

続行すると、FIXMBRパーティションテーブルが壊れる可能性
があります。

現在のハードディスクの全てのパーティションにアクセスできなくなる
可能性があります。

ドライブのアクセスで問題ないときは、続行しないでください。

新しいMBRを書き込みますか? y
\Device\Harddisk0
物理ドライブ上にマスターブートレコードを書き込んでいます。

新しいブートレコードは正しく書き込まれました。

C:\WINDOES>fixboot c:

ターゲットパーティションは、C: です。
新しいブートセクタをパーティションC:に書き込みますか。y
スタートアップパーティションファイルシステムは、NTFSです。

新しいブートセクタを書き込んでいます。

新しいブートセクタは正しく書き込まれました。

C:\WINDOES>

C:\WINDOES> bootcfg /list

ブート一覧のエントリの合計: 1

[1] "Microsoft Windows XP Professional"
OS 読み込みオプション: /fastdetect /NoExecute=OptIn
OS の場所: C:\WINDOWS

これでブートさせると、予定ではNTローダーが立ち上がるはずなのですが、、、うちの環境では永遠とgrubが立ち上がっていました。
なので、最初の方法でWindowsを起動させてから、壊れたPartition2(Solarisパーティション)を管理ツール=>コンピュータの管理で領域を解放(?)したら、NTローダが上がるようになりました。


このあたりの、デュアルブートとかMBRのお話は立ち上がんない〜とかを、自分で1回経験すると、、、次回以降はデータは消えてないからなんとかなるだろ、とまったり気分で復旧できます。

その昔liloで苦労したからな。。。