デュアルブート環境のP2V化によるWindows 8.1 Hyper-Vシングルブート環境の構築

PC台数の節約等の目的でデュアルブート環境を使用しているユーザも多いのではないかと思います。
しかし場合によってはそのデュアルブート環境のOSを同時に起動して相互接続確認等を行いたい場合もあるかと思います。
仮想化製品を導入してシングルブート環境の仮想マシン環境OSを常備しておくにはライセンス費用が嵩むことになりもったいない感じがします。
そこで実機で常に使用しているデュアルブート環境のOSを最新の状態のままP2V化して利用する方法を紹介します。
ここで使用する仮想化ソフトは64ビット版のWindows 8.1付属のHyper-Vです。

今回のP2V化で使用したPCのハードウェア/ソフトウェア構成は以下の通りです。
(1)64ビット版Windows 8.1のHyper-VホストPC
・CPU:Intel Core i7 2.67GHz
・メモリ:6GB
・VGAカード:ATI Radeon HD 4600
・HDD:S-ATA 250GB
・ネットワークインタフェース:Intel PRO/1000 GT Desktop Adapter, ASIX AX88772(USBインタフェース)
※Intel PRO/1000 GT Desktop AdapterはHyper-V環境の専用仮想スイッチ用に使用します。
・OS:Windows 7 SP1と64ビット版Windows 8.1(Hyper-Vホスト)のデュアルブート環境OS
・無償P2Vツール:Disk2vhd Ver2.01

デュアルブート環境のOSを最新の状態のままP2V化してHyper-V環境でシングルブートさせて動作させるための手順の流れは以下のようになります。
(1)Windows 7の実機環境でWindows 7とWindows 8.1が格納された物理HDDに対してDisk2vhdを実行してその仮想ディスクを作成。
仮想ディスクのフォーマットはVHDXとします。
またその仮想ディスクファイルの出力先はWindows 7とWindows 8.1が格納された物理HDDとは異なるHDDとします。
(2)Hyper-V仮想マシン環境で上記仮想ディスクを使用してデュアルブートできることの確認。
(3)上記仮想ディスクファイルを読み取り専用属性にして以下の2個の差分仮想ディスクを新規作成。
・Windows 7ブート用差分仮想ディスク
・Windows 8.1ブート用差分仮想ディスク
(4)Windows 7用とWindows 8.1用の第1世代の仮想マシン2個に対してそれぞれの差分仮想ディスクを割り当て。
(5)Windows 7用とWindows 8.1用の仮想マシン2個を同時に起動できることの確認。
実機環境でWindowsのライセンス認証済であってもP2V化によってハードウェアIDバインドの許容範囲レベルを超えることになります。
このためWindows 7及びWindows 8.1はライセンス認証猶予の状態になります。
この時点で「slmgr /dlv」コマンドを実施して「残りのWindows猶予期限リセット可能回数」を確認しておきます。
(6)「オペレーティングシステムの選択」画面の表示抑止設定。

上記手順の具体例を以下に示します。

  1. Windows 7の実機環境でWindows 7とWindows 8.1が格納された物理HDDに対してDisk2vhdを実行してその仮想ディスクを作成
    [前提条件]
    (1)Windows 7とWindows 8.1が格納された物理HDDはWindows 7側から見てWindows 7がCドライブ(99.90GB)にあって、Windows 8.1がFドライブ(133.76GB)にあるとします。
    (2)またブートマネジャが格納されている「システムで予約済」領域は100MBとします。
    (3)仮想ディスクのフォーマットは2TB超えの物理HDDのP2V化のことも考慮してVHDXとします。
    (4)またその仮想ディスクファイルの出力先はWindows 7とWindows 8.1が格納された物理HDDとは異なるHDD(1TBのGドライブ)とします。
    これは同じ物理HDDに対してその中にP2V化の仮想ディスクを出力するとたとえその仮想ディスクファイルを削除しても次回のP2V化で作成される仮想ディスクファイルが肥大化することをなるべく防止するためです。
    (5)今回作成する仮想ディスクファイルはG:\Temp\P2Vi7W7W81x64DualBase.vhdxとします。

    [Disk2vhdの実行]
    (1)Windows 7の起動
    (2)Disk2vhdの起動
    (3)Disk2vhdの設定



    (4)<Create>ボタンをクリックして仮想ディスクを作成。

  2. Hyper-V仮想マシン環境で上記仮想ディスクを使用してデュアルブートできることの確認
    (1)適当な仮想マシンを使って仮想ディスクにG:\Temp\P2Vi7W7W81x64DualBase.vhdxを割り当ててデュアルブートできることを確認します。



    (2)今回は初めにWindows 7が問題なく起動できることを確認すると共に、
    仮想マシン接続の[操作]メニューの[統合サービスセットアップディスクの挿入]による統合サービスのアップグレードも実施しました。
    Windows 7 SP1に含まれる統合サービスのバージョンは6.1.7601.17514ですが、
    Windows 8.1のHyper-Vで提供される統合サービスのバージョンは6.3.9600.16384です。
    (3)次にWindows 8.1が問題なく起動できることも確認しました。

  3. 上記仮想ディスクファイルを読み取り専用属性にして2個の差分仮想ディスクを新規作成
    (1)G:\Temp\P2Vi7W7W81x64DualBase.vhdxのプロパティでその仮想ディスクを読み取り専用属性にします。
    (2)以下のようにしてWindows 7用の差分仮想ディスクを作成します。

    (3)同様にWindows 8.1用の差分仮想ディスク(G:\Temp\P2Vi7W7W81x64Dual-W81.vhdx)を作成します。

  4. Windows 7用とWindows 8.1用の第1世代の仮想マシン2個に対してそれぞれの差分仮想ディスクを割り当て
    (1)Windows 7用の仮想マシン「HVWork」を準備してハードドライブとして[G:\Temp\P2Vi7W7W81x64Dual-W7.vhdx]を指定。
    (2)Windows 8.1用の仮想マシン「HVWork2」を準備してハードドライブとして[G:\Temp\P2Vi7W7W81x64Dual-W81.vhdx]を指定。

  5. Windows 7用とWindows 8.1用の仮想マシン2個を同時に起動できることの確認
    (1)Windows 7用とWindows 8.1用の仮想マシンの同時実行確認
    (2)実機環境でWindowsのライセンス認証済であってもP2V化によってハードウェアIDバインドの許容範囲レベルを超えることになり、
    Windows 7及びWindows 8.1はライセンス認証猶予の状態になります。
    この時点で「slmgr /dlv」コマンドを実施して「残りのWindows猶予期限リセット可能回数」を確認しておくことをお勧めします。
    たとえば実機環境でWindows猶予期限リセットを一度も実施していないライセンス認証済みWindows 7をP2V化した仮想マシンでの「slmgr /dlv」の実行では以下のような表示になります。



    Windows猶予期限リセットは「slmgr /rearm」コマンドで行いますが、
    Windows 7のWindows猶予期限リセット可能回数の最大値が4だったのに対してWindows 8/8.1での最大値は1000まで拡大されました。
    Windows 7のWindows猶予期限リセット可能回数の最大値が4ということは「slmgr /rearm」の最大実行回数が4回ということです。
    4回目の「slmgr /rearm」を実行すると「残りのWindows猶予期限リセット可能回数」は下記のように0になります。

    5回目の「slmgr /rearm」を実行すると最大回数超えの下記のエラーメッセージが表示されます。


  6. 「オペレーティングシステムの選択」画面の表示抑止設定
    (1)Windows 7の仮想マシンを起動した状態で以下のコマンドを実行します。
    bcdedit /delete {Windows 8.1のGUID}

    (2)Windows 8.1の仮想マシンを起動した状態で以下のコマンドを実行します。
    bcdedit /delete {Windows 7のGUID}