3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(Hyper-V)物理PCを仮想PCに変換(P2V)してみた

普通のメーカ製PCで稼働している Windows XPHyper-V で動く仮想PCにしてみました。

まずは仮想VHDを作成します。

仮想VHDDisk2vhdで作成します。

この時、忘れずに「Fix up HAL for Virtual PC」にチェックを入れます。

これで作成できた仮想ハードディスクイメージを Hyper-V を動かしているサーバにコピーし、ブートします。

すると OS 起動時に Windows XP のロゴ表示時点で固まってしまいました。

ということで、F8 キーからセーフモードで起動。

セーフモードだと無事にログインできました。

で、Hyper-V統合サービスのディスクを挿入します。

すると、下記のようなHALのアップグレード画面が表示されるので、HAL(Hardware Abstraction Layer)をアップグレードします。

これで、再起動し通常モードで Windows を起動してから、Hyper-V 統合サービスをインストールするだけで普通に使えます。

ただ、今回ハマったのはHALアップデート後の再起動後ログインしようとしたら、Windows ライセンス認証のダイアログが表示され、アクティベーションしないとログインさせないぞと表示されたことです。

まぁこれは再アクティベーションをし、プロダクトキーを入力し直すと通るわけですが、Hyper-Vで追加したレガシーネットワークカード(統合サービスを入れる前はレガシーじゃないと使えない)がOSから見ると新規のNICになるわけでDHCPになるわけですよね。

DHCPのネットワークじゃなかったので、別でDHCPネットワーク作って、それとHyper-Vのサーバつなげてなんとかアクティベーションは成功しましたが、これは面倒です。

ただ、Disk2vhdでもちゃんとブートできる仮想イメージを作成できることは検証取れたんでよかったです。

前回はバリバリのサーバをDisk2vhdを使ってVirtualBox上でブートしようとしたらできませんでしたが。。

ただ、今回の基の物理PCのCドライブの空き容量が残り数百メガと非常に少なかったため、Cドライブのパーティション拡大をしないといけませんでした。

同じ仮想ディスク上のパーティションDドライブはほぼ空っぽだったので、懐かしのPartionMagicを使ってDドライブのサイズを小さくし、Cドライブを拡大する手法をとりました。

やはり、VHD内のOSが入ってるパーティションのサイズ変更はこのようなツールを使わないとダメなようです。

(パーティションサイズの拡大はdiskpart.exeで可能ですが、システムボリュームはダメなようなので。。参考:@IT:Windows TIPS -- Tips:ディスクのボリューム・サイズを拡張する)

また、仮想ディスク(VHD)自体のサイズの拡大は仮想ハードディスクのサイズを拡大する - @IT仮想ハードディスクのサイズを拡大する(Hyper-V編) - @ITが参考になります。

追記:

別メーカ製PCをまた仮想化したんですが、この時はブート時に「BOOTMGR is missing」と表示されブートできませんでした。

で、基の環境なんですが、1台のHDDの中に、Cドライブ、Dドライブ、そしてリカバリ用の隠しパーティンという構成でした。

Disk2vhdはドライブレターがあるディスクしかVHD化しないので、C,DだけVHD化したんですが、それだと上記の BOOTMGR is missing が表示されてしまいます。

で、リカバリ用隠しパーティションにドライブレターを振って見えるようにし、C,D,リカバリ領域 をVHD化したところ、見事に起動するようになりました。

(セーフモードにしなくてもちゃんと起動しました。もちろんHALのアップグレードは必要でしたが。。)

とうことで、VHD化するときは本当にディスク丸ごとしないといけないということを学ばされました。