orz記録

おうちとかいしゃのシステム技術のことを中心に書いていこうと思っています。

2011/08/07 01:57 【P2V】uEFI+GPTディスクにインストールしたWindowsをvSphere上に移行する(完了)

うりゃー!てなもんでこんにちは(意味不明)。

タイトルのこと書きます。報告遅くなってすんまそん。ま、誰も待ってないか。あやまることなかったなー。

結論から言うと、できまひた。

ただし、オリジナルのパーティション構成とはちょっと変わってしまいましたが。
アプリ上のサービスおよびアプリケーションは絶賛稼働中みたいで、よかったよかった。

えーと前回はどこまで書いたんだっけか…。
前のエントリを読んだけど、読みづらいな。自分の文章は。
ま、いっか。

中途半端になっていた、
2.ぶっこぬいたディスクイメージをMBR形式に変換
から。

ScientificLinux(以下SL)6でぶっこぬいたVMDKをディスクとしてくっつけてGpartedを実行すると、
以下のように見えました。
最初の200MBはWindows2008の起動領域。→WindowsServer2008のサーバマネージャの記憶域から見える先頭領域。
次の128MBがWindowsシステムの作業領域。→WindowsServer2008からは見えないです。
その次にWindowsのC:ドライブ。
そのあとは順次パーティションが見えて、
最後に2MBの領域→GUIDパーティションテーブルのバックアップ。
でした。
迷いましたが、200MBと128MBの領域を必要ないとみて削除。
C:ドライブ以下の最後に10MBの領域をシリンダ境界に合わせて縮めました。

参考までに、削除前のパーティションをば。
3644_131264708600.jpg


その後、gdiskを起動して、4番目のパーティションが拡張パーティションになるようにして変換。

変換後、パーティションの並びがおかしくなったので、fdiskのエキスパートモード?を使って並べ直し。

以上、問題なしでした。

次。
3.Windows2008のインストールディスクを使って、ブート領域を修復。
はやってみないとワカランと書いていました。やったので顛末をば。

WindowsのインストールCDで起動。起動画面から、修復メニューを選択。
コマンドプロンプトを起動。
X:¥resourcesにいるので、recovery¥StartrRep.exeを実行。
ブート領域を修復。この時点でWindowsがインストールされている領域を認識するようになる。
Bootrec /FixMBR でマスターブートレコードを回復。
Bootrec /FixBoot でブートセクタを回復。
おまけにBootrec /rebuildbcdを実行(したと思う)。

でもって再起動。
Windowsのロゴが出て、起動するかな?と思ったら、次の画面で奈落の底へ。
3644_131264767800.jpg

来たよ、キタキタ。BOSDってやつ。Blue Screen of Death。

0x7Bはブート時の問題。ネットで調べた。
http://support.microsoft.com/kb/324103/ja

おそらく、SCSIドライバが読み込めなかったか、くらいしか想像できなかった。
なので、どうせブートCDでブートしたときにはちゃんとディスクがみえていたので、SCSI部分のレジストリをブートCDのやつと置き換えることを考えた。

もう一回ブートCDで起動。コマンドプロンプト直行。
以下、コマンド打込み。
X:¥Resources>diskpart
diskpart>list volume
→CドライブかDドライブか、はたまたXドライブなのかを確認。Cドライブだった。
diskpart>exit

念の為、ディスクチェックをかけることにした。
X:¥Resources>chkdsk /F C:
→問題なし。

ドライバファイルがあるかを調査。
X:¥Resources>c:
C:> cd Windows¥system32¥drivers
C:Windows¥system32¥drivers>dir /p
VMwareだと、Windows2008のSCSIドライバはLSI Logic SASなので、lsi_sas.sysが存在するかをチェック→存在した。
他にも、lsi_fc.sys,lsi_sas2.sys,lsi_scsi.sysもあった。ファイルの存在は問題ないらしい。

レジストリをチェック。
まずはレジストリエディタにディスクのレジストリを読み込み。
C:> regedit
左側のツリーから、HKEY_LOCAL_MACHINEを選択
メニューバーから、ファイル(F)→ハイブの読み込みを選択
読み込む対象としてC:¥Windows¥system32¥config¥SYSTEM を選択
どんな名前でハイブを読み込むか聞かれるので
temp-system
と入力(任意でいい)。
HEKY_LOCAL_MACHINEのキーの一番下(SYSTEMの下)に
temp-systemが出来上がる。

temp-system→ControlSet001→services→LSI_SAS
が存在するか確認→存在した。

ファイルもあるし、レジストリキーも存在した。レジストリの内容が違うのかな考え、CDから起動した今のレジストリと読み込んだtemp-systemのレジストリの項目を比較したら、
DriverPackageID
の項目がなかった。ひょっとしてこれか?(じゃないかもしれないけど)と思い、ディスクのレジストリ情報を現在のレジストリに書き換えてみることにした。

まずディスクのレジストリをバックアップ
temp-system→ControlSet001→services→LSI_SASを選択して右クリック→エクスポート
保存用のダイアログが出てくるのでC:直下にして
ファイル名→LSI_SAS_ORIG.hiv
保存形式→ハイブファイル(*.*)
で保存。

次に現在のレジストリを読み込むためにファイルに保存
HKLM(HKEY_LOCAL_MACHINEの省略形)→SYSTEM→CurrentControlSet→services→LSI_SASを右クリック→エクスポート
保存用のダイアログが出てくるのでC:直下にして
ファイル名→LSI_SAS.hiv
保存形式→ハイブファイル(*.*)
で保存。
レジストリエディタ終了。

コマンドプロンプトで、レジストリを読み込むコマンドを実行
C:>reg restore HKLM¥temp-system¥ControlSet001¥services¥LSI_SAS LSI_SAS.hiv
→正常に反映されたました的なメッセージを確認。

最後にBootrecおまじない。
Bootrec /FixMBR
Bootrec /FixBoot
Bootrec /rebuildBCD
を立て続けに実行。
再起動。

としたら、起動に成功。ただし、マウスが効かない。
マウスとかはVMwareToolsを入れれば上書きされると思い、キーボード操作でなんとかVMwareToolsをインストール→再起動。

作業完了。いい感じになりました。

作業後の環境について補足。
C:ドライブ前の200MB+100MBは全くの未使用領域になりました。ブート領域もC:ドライブに移動したみたいです。
Gpartedで拡張しても良いですが、そのままにしました。

10MBずつ縮めたので、サーバマネージャの記憶域を見ると、未使用領域が出来ています。拡張して埋めましょう。
最後の2MBの領域が拡張領域に含まれることがなく、独立した未使用領域として残ってしまいました。まぁ、2MBだし、放置しても良いのでしょうが、気になるならGpartedで編集しましょう。

はぁ。つかれた。まったねー。