Windows 8でのHyper-V利用

2012年10月26日にWindows 8がRTM(正式製品)となりました。
Windows 8には多くの機能が追加されています。
その中でも特に注目されているのは新しい「スタート画面」(従来のスタートメニューの変形)と「Hyper-V」です。
Windows 7(32bit/64bit版)に装備されていた仮想Windows XP Mode(通称XPM)はWindows 8では廃止され、その代わりHyper-Vがサポートされました。
Hyper-Vは64ビット版Windows 8に標準装備される仮想化機能で、従来のWindows Server 2008のHyper-V動作要件(Intel VTまたはAMD-Vが必要)より厳しくなっています。
具体的には64ビット版Windows 8のHyper-Vの重要な動作要件は第2レベルアドレス変換拡張機能(SLAT)であり、
Windows Server 2008のHyper-Vが動作したIntel Core 2 Duo/Quadでは64ビット版Windows 8のHyper-Vはサポートされません。
第2レベルアドレス変換拡張機能(SLAT)が動作するのはIntel系CPUではIntel Core i7及びそのサブセットのプロセッサです。

Windows 8付属のHyper-Vの特徴は以下の通りです。
(1)Windows 8付属のHyper-Vが動作するのはハードウェア仮想化支援機能を備えたCPUでかつSLAT機構を備えたCPU環境で実行される64ビット版Windows 8だけです。
尚、Hyper-Vが動作する64ビット版Windows 8ではHyper-V仮想マシン管理サービスが組み込まれます。
(2)32ビット版Windows 8に付属するHyper-VはHyper-V仮想化サーバ(Windows Server 2008/2008 R2/2012/2012 R2)に接続するためのHyper-Vリモート管理ツールです。
32ビット版Windows 8に付属するHyper-VではHyper-V仮想マシン管理サービスが除外されています。
(3)64ビット版Windows 8付属のHyper-VはWindows Server 2008/2008 R2/2012/2012 R2のHyper-V同様に
構造的にはハイパバイザ、ドメイン0、ドメインUという構成の完全仮想化のXenに近く、
それぞれハイパバイザ、親パーティション、子パーティションと呼ばれます。
親パーティションはホストOS(仮想化サーバ)であり、子パーティションはゲストOS(仮想マシン)を指します。
Xenの仮想化には「準仮想化」と「完全仮想化」の2種類ありますがHyper-Vは「完全仮想化」に相当するものだけがサポートされます。
(4)Hyper-VでのゲストOSに統合サービスを導入するとゲストOSのネットワークカードは「Microsoft Hyper-V ネットワークアダプタ」デバイスとして認識されます。
しかし、統合サービスを導入できないOSではレガシネットワークアダプタという仮想ネットワークカードを利用できます。
(5)仮想ディスクは従来の最大2TBの仮想ディスク(ファイル拡張子:VHD)に加えて最大64TBの仮想ディスク(ファイル拡張子:VHDX)がサポートされています。
※VHDXはWindows Server 2012のHyper-Vからサポートされています。
ちなみにWindows 7のWindows Virtual PCで作成可能なVHDフォーマットの仮想ディスクの最大サイズは127GB(130,048MB)でした。
このため、例えばDisk2vhdツールで250GBなどの実HDDから作成した仮想ディスクをWindows Virtual PCに割り当てようとすると以下のエラーになりました。
仮想マシンの新規作成で既存の127GB超え容量の仮想ディスクを指定した場合のエラー
既存の仮想マシンの仮想ディスクを127GB超え容量の仮想ディスクに切り替える場合のエラー
※仮想ディスクのサイズエラーメッセージ:「'xxx.VHD'は、IDEバスに対して大きすぎます。<途中略>127.5GB以下であることを確認してください。」
(127GB超え容量対策として[ディスクの管理]での[VHDに接続]で仮想ディスクをマウントして[ボリュームの縮小]を行ってVHD Resizerで仮想ディスクサイズを小さくすればWindows Virtual PCで使用できました)
(6)Hyper-Vの仮想ディスクは64ビット版Windows 8と32ビット版Windows 8の両方でWindowsエクスプローラから「マウント」してその中のファイルをアクセスできます。
尚、マウントできる仮想ディスクに対してたまにマウントエラーとなる場合もあります。
(7)サウンドカードは利用できませんが、仮想マシンにRDP接続すればローカル側のサウンドカードで仮想マシンのサウンドを再生できます。
(8)仮想マシンのネットワーク接続種別については以下の3種類あります。
・外部:ホストOSの物理ネットワークに接続する形態
・内部:ホストOSとゲストOS間の通信
・Private:ゲストOS間限定の通信
(9)64ビット版Windows 8付属のHyper-Vのリモート管理は32ビット版Windows 8以外に
Windows 7用「リモート管理ツール(Windows Server 2008/2008/R2/2003のリモート管理ツール)」に含まれる「Hyper-Vマネージャ」でも行えます。
(10)Windows 8対応のHyper-VはWindows Server 2012 R2対応のHyper-Vと比べて簡易的なものであり、
「ライブマイグレーション」や「Hyper-Vレプリカ」などのサーバOS対応の機能は当然ながらサポートされていません。
しかしWindows 8のHyper-Vヘルプには「Hyper-Vレプリカ」の記載も残ったままになっています。
更に親パーティションと子パーティション(ゲストOS)の双方向のクリップボード(テキスト、ファイル等)の共有はできませんが、
親パーティションから子パーティションへのテキストのコピーは可能です。


ここでは主に以下について紹介致します。
・32ビット版Windows 8と64ビット版Windows 8のデュアルブート環境の構築(32ビット版Windows 8は仮想ディスクのマウント検証用)。
・64ビット版Windows 8でのHyper-V仮想マシンサーバ環境の構築。
・64ビット版Windows Vista SP2(子パーティション)用仮想マシンの構築。
・32ビット版Windows 8でのHyper-Vマネージャ利用。
・32ビット版Windows 7でのHyper-Vマネージャ利用。
・仮想マシン内の64ビット版Windows VistaへのiPhoneからのRDP接続(VPN環境)。
・Windows 7 Windows Virtual PC上の仮想マシンのWindows 8 Hyper-Vへのマイグレーション
・Windows 8におけるWindows Virtual PC/Windows XP Modeの廃止について
・32ビット版Windows 8.1(子パーティション)用仮想マシンの構築。

今回使用したPCのハードウェア/ソフトウェア構成は以下の通りです。



■ 32ビット版Windows 8と64ビット版Windows 8のデュアルブート環境の構築

  1. 32ビット版Windows 8のインストール
    まっさらな160GB HDDを用意してその中の約50GBのパーティションに32ビット版Windows 8をクリーンインストールします。
    (1)インストール後のパーティション構成は以下のようになります。
    ・ドライブ0のパーティション1(システムで予約済み):350MB
    ・ドライブ0のパーティション2(プライマリ):約50GB
    ・ドライブ0の割り当てられていない領域:約100GB
    (2)PC名:i7win8x86 ※i7はIntel Core i7を指し、x86は32ビット版を指します。
    (3)Microsoftアカウント:以前取得済みのものを利用。
    (4)インストール完了後にAdministratorアカウントを有効にしてパスワードも設定しておきます。
    ※以降の作業はAdministratorアカウントで行います。
    (5)ネットワークインタフェースには固定IPアドレスを割り当てておきます。
    (6)SLAT確認
    「システム情報」で[Hyper-V - 第2レベルアドレス変換拡張機能 はい」となっていることを確認します。
    ※「システム情報」での4個のHyper-V情報はHyper-Vをインストールしなくても表示されます。
    (7)32ビット版Windows 8はHyper-V仮想マシンサーバになれませんが
    念のためにHyper-VをインストールしてOS再起動してもハイパバイザ環境は存在しないままです。
    これはWindows Sysinternals(トラブルシュート用ツール群)に含まれるcoreinfoコマンドで確認できます。
    coreinfo -vの表示において「HYPERVISOR - Hypervisor is present」となっているのがハイパバイザ環境が存在しないことを表しています。
    ※ハイパバイザ環境が存在すれば「HYPERVISOR * Hypervisor is present」と表示されます。

  2. 64ビット版Windows 8のインストール
    32ビット版Windows 8をインストールしたHDDの[ドライブ0の割り当てられていない領域:約100GB]に64ビット版Windows 8をインストールします。
    (1)インストール中に一瞬「オペレーティングシステムの選択」画面が表示されますがすぐに64ビット版Windows 8の方が起動されます。
    (2)PC名:i7win8x64 ※i7はIntel Core i7を指し、x64は64ビット版を指します。
    (3)Microsoftアカウント:上記32ビット版Windows 8のインストールで使用したものを利用。
    (4)インストール完了後にAdministratorアカウントを有効にしてパスワードも設定しておきます。
    ※以降の作業はAdministratorアカウントで行います。
    (5)ネットワークインタフェースには固定IPアドレスを割り当てておきます。

  3. 「オペレーティングシステムの選択」画面のOS名表示内容の変更
    32ビット版Windows 8の後に64ビット版Windows 8をインストールしたデュアルブート環境での
    「オペレーティングシステムの選択」画面ではどちらもOS名は「Windows 8」と表示されます。
    但し、1番目の「Windows 8」には「場所:ボリューム3」も表示され、
    2番目の「Windows 8」には「場所:ボリューム2」も表示されますので
    1番目のOSが64ビット版Windows 8であるという区別は一応付きます。
    しかしOS名だけで区別が付く方が分かりやすいので64ビット版Windows 8の方のOS名を「Windows 8(x64)」にします。
    具体的にはbcdedit /vコマンドを実行してWindowsブートローダーセクションで
    64ビット版Windows 8側のidentifierを確認して以下のコマンドを実行します。
    bcdedit /set {64ビット版Windows 8側のidentifierの値} description "Windows 8(x64)"
    これを実行した後のbcdedit -vの表示内容はこちらです。
    この変更によって「オペレーティングシステムの選択」画面は以下のように分かり易くなります(場所情報は表示されません)。





■ 64ビット版Windows 8でのHyper-V仮想マシンサーバ環境の構築

  1. Hyper-Vのインストール
    64ビット版Windows 8へのHyper-VのインストールはWindows Serverの場合よりもかなり簡素化されています。
    まず、[コントロールパネル]-[プログラムと機能]-[Windowsの機能の有効化または無効化]で[Hyper-V]にチェックを入れます。



    [Hyper-V]にチェックを入れるとその下の階層にある[Hyper-V プラットフォーム]と[Hyper-V 管理ツール]にもチェックが入ります。
    ※Hyper-V 管理ツールは[Hyper-V GUI 管理ツール]と[Windows PowerShell 用 Hyper-V モジュール]から構成されます。
    <OK>ボタンを押すと必要なファイルがインストールされます。
    Hyper-Vのインストール後は64ビット版Windows 8を再起動します。

  2. 64ビット版Windows 8の再起動後の確認事項

  3. Hyper-Vマネージャでの設定
    スタート画面からHyper-Vマネージャを起動して仮想スイッチの定義を行います。
    (1)Hyper-Vマネージャの起動
    スタート画面の「Hyper-Vマネージャ」をクリックしてHyper-Vマネージャを起動します。
    (アプリ一覧の「Hyper-V管理ツールグループの中に「Hyper-Vマネージャ」があるのでそれを起動しても同じです)
    Hyper-Vマネージャを起動すると仮想マシンサーバとしてlocalhostの「I7WINX64」が表示されます。
    (2)localhostの仮想マシンサーバである「I7WINX64」を選択します。
    (3)その仮想マシンサーバの[仮想スイッチマネージャ]をクリックして起動します。
    (4)「どの仮想スイッチを作成しますか」に対して「外部」を選択。
    (5)仮想スイッチのプロパティでの設定
    ・仮想スイッチの名前:例えば「仮想スイッチ外部1」と指定します。
    ・外部ネットワークとして[Intel PRO/1000 GT Desktop Adapter]を選択します。
    ・[管理オペレーティングシステムにこのネットワークアダプターの共有を許可する]はoffにします。
    ※これをonにすると親パーティション側でのネットワーク通信が不安定になることがあります。

  4. Hyper-Vマネージャでのサービスについて
    Hyper-Vマネージャには[サービスの停止]や[サービスの開始]があります。
    これは「Hyper-V Virtual Machine Management」というサービスとは別のサービスで、
    Hyper-Vマネージャの[サービスの停止]を実行するとどこのHyper-Vマネージャからも当該仮想マシンサーバへの接続はできなくなります。

  5. 補足
    (1)仮想マシンサーバがスリープ状態になると仮想マシンが「一時停止」状態になって仮想マシン接続画面が暗くなります。
    仮想マシンサーバのスリープ状態を解除した後で仮想マシン接続画面の[操作]-[再開]でゲストOSを再開させるのは煩雑になるため
    仮想マシンサーバ側の電源オプションでスリープ状態にしない設定にしておくのがベターかと考えます。



■ 64ビット版Windows Vista(子パーティション)用仮想マシンの構築

  1. 仮想マシン定義

  2. 子パーティションへのゲストOS(64ビット版Windows Vista)のインストール

  3. 32ビット版Windows 8での仮想ディスクのマウント検証
    64ビット版Windows 8では仮想ディスクをマウントして通常のドライブとしてアクセスできますが32ビット版Windows 8でも同様です。
    尚、Windows 7での仮想ディスクの「マウント」と「マウント解除」は管理ツールの「コンピュータの管理」の「ディスクの管理」で行う必要がありました。
    しかしWindows 8ではWindowsエクスプローラから簡単に仮想ディスクの「マウント」と「マウント解除」ができるようになりました。
    ※Windows 8でもWindows 7同様に「ディスク管理」の[VHDの接続]と[VHDの切断]操作ができるようになっています。
    (1)64ビット版Windows 8側の64ビット版Windows Vistaの仮想ディスク(拡張子:vhdx)を32ビット版Windows 8側にコピー。
    (2)32ビット版Windows 8のWindows Explorerでその仮想ディスクを右クリックして[マウント]選択。
    (3)仮想ディスクにアクセスできます。
    (4)仮想ディスクのマウント解除は仮想ディスクの右クリックメニューの[取り出し]で行います。



■ 32ビット版Windows 8でのHyper-Vマネージャ利用

仮想マシンサーバ(64ビット版Windows 8)とは別のPCで動作している32ビット版Windows 8でのHyper-Vマネージャ利用について紹介します。

  1. Hyper-Vのインストール
    [コントロールパネル]-[プログラムと機能]-[Windowsの機能の有効化または無効化]で[Hyper-V]にチェックを入れます
    <OK>ボタンを押すと必要なファイルがインストールされます。
    「Hyper-V Virtual Machine Management」というサービスは存在しません。

  2. 32ビット版Windows 8でのセキュリティ制限の緩和
    32ビット版Windows 8のデフォルトのセキュリティ設定状態でHyper-V仮想マシンサーバに接続しようとすると、
    「アクセスが拒否されました。'仮想マシンサーバ名'と'接続元マシン名'との間の通信を確立できません。」というエラーになります。
    これを回避するために以下のようにセキュリティ制限の緩和設定を行います。
    (1)32ビット版Windows 8側の[コントロールパネル]-[管理ツール]で[コンポーネントサービス]を起動します。
    (2)「コンポーネントサービス」画面の[コンソールルート]-[コンピュータ]-[マイコンピュータ]の右クリックメニューから[プロパティ]を開きます。
    (3)「マイコンピュータのプロパティ」画面の「COMセキュリティ」タブを開きます。
    (4)「COMセキュリティ」タブの「アクセス許可」セクションの<制限の編集>ボタンを押下します。
    (5)「セキュリティの制限」のグループ名またはユーザ名一覧から
    [ANONYMOUS LOGON]を選択してアクセス許可の[リモートアクセス]の[許可]にチェックを入れます(OS再起動は不要です)。

  3. Hyper-Vマネージャでの仮想マシンサーバへの接続
    32ビット版Windows 8でのHyper-Vマネージャの[操作]-[サーバに接続]での「コンピュータの選択」ダイアログで仮想マシンサーバを指定します。
    そのHyper-Vマネージャに「I7WIN8X64」という仮想マシンサーバとvmvistax64という仮想マシンの名前が表示されます。

  4. 仮想マシンへの接続
    スタート画面の「Hyper-V仮想マシン接続」タイルを起動して仮想マシンサーバ(i7win8x64)と仮想マシン(vmvistax64)を指定します。
    これによって仮想マシン(vmvistax64)に対する仮想マシン接続画面が表示されます。

  5. 仮想マシンの起動
    仮想マシン接続画面の[操作]-[起動]でゲストOS(64ビット版Windows Vista)が起動します。

  6. 32ビット版Windows 8での仮想マシン接続の様子

  7. 仮想マシン接続OSからゲストOSへのテキストコピー
    仮想マシン接続OS(ここでは32ビット版Windows 8)からゲストOS(ここでは64ビット版Windows Vista)にテキストをコピーすることができます。
    具体的には仮想マシン接続OS側でクリップボードにコピーしたテキストは仮想マシン接続画面の
    [クリップボード]-[クリップボードからテキストを入力]でゲストOS側に貼り付けることができます。
    ※Ctrl+V操作では仮想マシンサーバ側でクリップボードにコピーしたテキストがゲストOSに貼り付けられるようです。
    尚、RDPのような双方向のクリップボード共有はWindows 8のHyper-VではサポートされていませんのでゲストOSから仮想マシン接続OS側へのコピー&ペーストはできません。

  8. 仮想マシンのサウンド再生
    Hyper-Vの仮想マシン内ではサウンド再生はできません。
    しかしその仮想マシンにRDP接続すればローカル側(RDP接続元)のサウンドカードでサウンド再生ができます。
    RDP接続によるWindows Media Playerのサウンド再生例

  9. Windowsストアアプリのリモートデスクトップからの仮想マシン接続
    仮想マシンサーバ上で動作している仮想マシン(ここでは64ビット版Windows Vista)にWindowsストアアプリのリモートデスクトップから接続してみました。
    ビルトインアカウントであるAdministratorではWindowsストアアプリを利用できませんのでMicrosoftアカウントでサインインして以下の操作を行います。
    (1)Windowsストアから「リモートデスクトップ」アプリをインストールします。
    (2)スタート画面(またはアプリ一覧画面)に表示される「リモートデスクトップ」を起動します。
    (3)接続先マシンとして仮想マシンを指定して[接続]をクリックします。
    (4)接続のための資格情報を入力します。
    (5)仮想マシンのデスクトップがフルスクリーンで表示されます。
    (6)画面上部の中央に表示される接続バーをクリックしてメニューを表示することができます。
    (7)RDPセッションはAlt+F4キーで終了させることができます。



■ 32ビット版Windows 7でのHyper-Vマネージャ利用

仮想マシンサーバ(64ビット版Windows 8)とは別のPCで動作している32ビット版Windows 7でのHyper-Vマネージャ利用について紹介します。

  1. Hyper-Vマネージャの導入
    Windows Server 2008/2008 R2/2003をリモート管理するツールとして各クライアントOS別に「リモートサーバ管理ツール」(無償)というものが存在します。
    その「リモートサーバ管理ツール」の中には「Hyper-Vマネージャ」も含まれています。
    Windows 7用の「リモートサーバ管理ツール」を32ビット版Windows 7にインストールしてHyper-Vマネージャを導入する手順は以下の通りです。
    ※今回使用したWindows 7はMacBook Pro上で動作しているものです。
    (1)Windows 7用の「リモートサーバ管理ツール」(Windows6.1-KB958830-x86-RefreshPkg.msu)をダウンロードします。
    (2)Windows6.1-KB958830-x86-RefreshPkg.msuを起動します。
    その際にWindows用更新プログラム(KB958830)もインストールします。
    (3)[コントロールパネル]-[プログラムと機能]-[Windowsの機能の有効化または無効化]を開きます。
    (4)[Windowsの機能] ダイアログで[リモートサーバー管理ツール]を展開します。
    (5)[リモートサーバー管理ツール]の中の[Hyper-Vツール]にチェックを入れます。
    このHyper-VツールにはHyper-Vマネージャが含まれます。
    (6)<OK>ボタンを押すと必要なファイルがインストールされます。
    リモートサーバー管理ツールのヘルプファイルもインストールされます。

  2. 32ビット版Windows 7でのセキュリティ制限の緩和
    32ビット版Windows 7のデフォルトのセキュリティ設定状態でHyper-V仮想マシンサーバに接続しようとすると、
    「アクセスが拒否されました。'仮想マシンサーバ名'と'接続元マシン名'との間の通信を確立できません。」というエラーになります。
    これを回避するために以下のようにセキュリティ制限の緩和設定を行います。
    (1)32ビット版Windows 7側の[コントロールパネル]-[管理ツール]で[コンポーネントサービス]を起動します。
    (2)「コンポーネントサービス」画面の[コンソールルート]-[コンピュータ]-[マイコンピュータ]の右クリックメニューから[プロパティ]を開きます。
    (3)「マイコンピュータのプロパティ」画面の「COMセキュリティ」タブを開きます。
    (4)「COMセキュリティ」タブの「アクセス許可」セクションの<制限の編集>ボタンを押下します。
    (5)「セキュリティの制限」のグループ名またはユーザ名一覧から
    [ANONYMOUS LOGON]を選択してアクセス許可の[リモートアクセス]の[許可]にチェックを入れます(OS再起動は不要です)。

  3. 「Windows Remote Service」サービスの起動
    「net start winrm」コマンドを実行して「Windows Remote Service」サービスを起動します。
    または[コントロールパネル]-[管理ツール]-[サービス]の中の「Windows Remote Service(WS-Management)」サービスを起動します(更にスタートアップの種別を[手動]から[自動]にするのがベター)。

  4. Hyper-Vマネージャの起動と仮想マシンサーバへの接続
    [コントロールパネル]-[管理ツール]の中にあるHyper-Vマネージャを起動します。
    32ビット版Windows 7でのHyper-Vマネージャの[操作]-[サーバに接続]での「コンピュータの選択」ダイアログで仮想マシンサーバを指定します。
    そのHyper-Vマネージャに「I7WIN8X64」という仮想マシンサーバとvmvistax64という仮想マシンの名前が表示されます。

  5. 仮想マシンへの接続
    Hyper-Vマネージャに表示されたvmvistax64という仮想マシンの名前を右クリックして[接続]を実行します。
    これによって仮想マシン(vmvistax64)に対する仮想マシン接続画面(モニタ画面)が表示されます。

  6. 仮想マシンの起動
    仮想マシン接続画面の[操作]-[開始]で資格情報入力画面が表示されます。
    ※Windows 7用の仮想マシン接続画面の[操作]-[開始]はWindows 8用での[操作]-[起動]に相当します。
    資格情報入力画面にAdministratorアカウントのパスワードを入力するとゲストOS(64ビット版Windows Vista)が起動します。

  7. 32ビット版Windows 7での仮想マシン接続の様子(Windowsへのログオン画面)


■ 仮想マシン内の64ビット版Windows VistaへのiPhoneからのRDP接続(VPN環境)

  1. RDP(リモートデスクトップ)アプリのインストール
    MochaSoftの「RDP」というアプリをiPhoneにインストールします。



  2. Hyper-V仮想マシンサーバの属するLANへのVPN接続
    iPhoneからHyper-V仮想マシンサーバの属するLANへのVPN接続を行います。



  3. RDPアプリでの仮想マシン接続設定
    RDPアプリで64ビット版Windows Vista(vmvistax64)用仮想マシンへの接続設定を行います。

  4. 64ビット版Windows Vista(vmvistax64)用仮想マシンへのRDP接続名を選択して接続します。



  5. RDP接続した64ビット版Windows Vista(vmvistax64)のデスクトップ画面が表示されます。



    拡大表示はこちらです。

  6. 補足
    (1)iPhoneからのVPN接続環境ではその接続先のLANに接続されているLinux等にも自由に接続できるので大変重宝します。
    MacBook Pro上で稼働しているFedoraへのiPhoneからのVNC接続例 (拡大画像はこちらです)


■ Windows 7 Windows Virtual PC上の仮想マシンのWindows 8 Hyper-Vへのマイグレーション

Windows 7でサポートされた「Windows Virtual PC/Windows XP Mode」機能はWindows 8では省かれました。
※Windows 7のWindows Virtual PCはVirtual PC 2007とほぼ同等な機能ですがユーザインタフェースが刷新されたものです。
※Virtual PC 2007の「バーチャルマシン追加機能」はWindows Virtual PCでは「Virtual PC 統合コンポーネント(通称:統合機能)」に名称が変わりました。
Windows 7のWindows Virtual PCで作成した仮想マシンはHyper-Vの仮想マシンにマイグレーション(移行)させることができます。
以下にその移行手順を紹介します。
※下記はWindows 7側のAdministratorユーザで作成した仮想マシン(OS:Windows XP SP3)をHyper-V仮想マシンサーバの稼働するWindows 8に移行させる手順です。
1.前提条件
(1)Windows 7のWindows Virtual PCでの仮想マシン
・仮想マシン名:VPCWinXP
・仮想ディスクファイル:VPCWinXP.vhd
(2)Windows 8のHyper-Vでの仮想マシン
・仮想マシン名:HVWinXP
・仮想ディスクファイル:VPCWinXP.vhd(移行前と同じ名称です)
※Windows 7側のVPCWinXP.vhdは事前にWindows 8側にコピーしておきます。
Windows 8側でのファイルパスを仮にC:\VPCmig\HVWinXP\VPCWinXP.vhdとします。
尚、仮想ディスクが 「親バーチャルハードディスク」と「差分ファイル(差分バーチャルハードディスク)」から構成されている場合はその両方を同じフォルダに格納しておきます。
(3)移行先仮想マシン定義
Hyper-Vマネージャで仮想マシン「HVWinXP」を新規に定義します。
仮想マシンの新規作成ウィザードでの「仮想ハードディスクの接続」では[既存の仮想ディスクを使用する]オプションを選択して仮想ディスクファイルパスを指定します。
仮想ディスクが 「親バーチャルハードディスク」と「差分ファイル(差分バーチャルハードディスク)」から構成されている場合は差分バーチャルハードディスクを選択します。
(4)上記によって標準では以下のファイルが作成されます。
・C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\aaaaaaaa-bbbb-cccc-dddddddddddd.xml(仮想マシン構成ファイル)
(5)Hyper-Vマネージャで仮想マシン「HVWinXP」に接続してその仮想マシンを起動させます。
(仮想マシンにHyper-Vの統合サービスをインストールするまではかなり動きが重いです)
(6)新しいハードウェアの検索ウィザードは常に<キャンセル>します。
(7)仮想マシンが起動したところでコントロールパネルの[プログラムの追加と削除]で「Virtual PC 統合コンポーネント」をアンインストールして再起動します。
(8)再起動後の新しいハードウェアの検索ウィザードも常に<キャンセル>します。
(9)Hyper-Vの統合サービスのインストールを実施して再起動します。
64ビット版Windows 8(Hyper-V仮想マシンサーバ)での仮想マシン接続の様子
Hyper-Vの統合サービスのインストール後の仮想マシンは軽快に動作します。
(10)Windowsのライセンス認証をし直します。


■ Windows 8におけるWindows Virtual PC/Windows XP Modeの廃止について

Windows 7限定でサポートされていた「Windows Virtual PC/Windows XP Mode」はWindows 8ではサポートされていません。
「Windows Virtual PC/Windows XP Mode」を組み込んでいたWindows 7をWindows 8にアップグレードインストールすると、
「Windows Virtual PC/Windows XP Mode」用の実行ファイルはWindows 8から自動的に消えます。
具体的にはコントロールパネルの「プログラムと機能」から[Windows Virtual PC(KB958559)]が消えます。
exeファイルとしては、例えば以下のようなファイル等がC:\Windows\System32から消えます。
(a)VMWindow.exe:仮想マシンフォルダを開くプログラム
(b)vpc.exe:仮想マシンを実行させるために必要な仮想マシン実行用ホストプロセス
(c)VPCWizard.exe:仮想マシン作成ウィザードプログラム
消えたファイルはC:Windows.old側に残っています
尚、仮想ディスクファイルは削除されずに残ります。
Windows Virtual PCで作成した仮想マシンは64ビット版Windows 8のHyper-V仮想マシンサーバに移行することができます。
(但し、Windows XP Mode base.vhd/Windows XP Mode.vhdのWindows 7以外での使用はライセンス上禁じられています)


■ P2VによるHyper-V環境でのWindows XP Mode(XPM)の実行

Windows 7のWindows XP Mode及びWindows Virtual PCはWindows 7専用のものでありWindows 8にインストールすることはできません。
仮にWindows XP Modeの仮想ディスクをHyper-V上に移したとしてもそのWindows XPのライセンスを継続して認証させることはできません。
Windows 8環境でWindows XP ModeのWindows XPをライセンス再認証なしで使用可能とする最も簡単な方法はWindows XP Modeを含んだWindows 7自体をP2V化してHyper-V上で動作させることです。
Windows 7自体をP2V化してHyper-V上でWindows 7を動作させてそのWindows 7の中でWindows XP Modeを実行させる手順は以下のようになります。
(1)Windows 7の実機環境でDisk2vhdを実行してそのWindows 7がインストールされている物理HDDから仮想ディスクを作成します。
(2)Windows 7の仮想ディスクをHyper-Vホスト(Windows 8のHyper-Vサーバ)側に持っていきます。
(3)Hyper-VでWindows 7用仮想マシンを定義します(仮想ディスクはDisk2vhdで作成した仮想ディスクファイルを指定します)。
(4)Hyper-VでWindows 7用仮想マシンを起動します。
(5)Hyper-VでWindows 7用仮想マシンを起動して「お使いのPCは修復する必要があります。...エラーコード:0xc000000e」エラーとなった場合には、
Windows 7のインストールDVDからブートして[コンピュータを修復する]操作を行います。
(6)Hyper-VでWindows 7用仮想マシンを起動し、仮想マシン接続の[操作]-[統合サービスセットアップディスクの挿入]を選択して
Windows 7にHyper-V統合サービスをインストールして仮想マシンを再起動します。
(7)Hyper-V上のWindows 7の中でWindows XP Modeを起動します。
(8)このWindows XP Modeの起動で「統合機能を有効にしています」という表示がされますが最終的に統合機能の有効化は失敗するようです。
しかしネットワーク機能は問題なく使用できます。
(9)Windows 7実環境を丸ごとP2V化してHyper-V仮想マシンとして実行させた場合はその中のWindows XP ModeのWindows XPはライセンス認証された状態のままです。
※Windows XP ModeのWindows XPのプラットフォームはP2V化されてもWindows Virtual PCという仮想ハードウェアレイヤが維持されるためライセンスの再認証は求められません。
(10)P2V化されたWindows 7についてはP2V化によってハードウェアやハードウェアドライバの多くの変更が検出されるためライセンスの再認証が必要となります。

Hyper-Vホスト/Windows 7用仮想マシン/Windows XP Modeの3個のOSが同時に動作しているWindows 8のデスクトップ例

勿論、Hyper-Vホスト上のWindows 7用仮想マシン上のWindows Virtual PC環境でもWindows 7は動作します。
(統合機能が有効化される場合はRDP接続となり画面解像度の変更は不可で、スタートメニューの[シャットダウン]も非表示となります)


■ 32ビット版Windows 8.1(子パーティション)用仮想マシンの構築

Windows 7のWindows Virtual PCではWindows 8/8.1を仮想マシンにインストールすることはできません。
・仮想マシンにWindows 8/8.1をインストールする際「Your PC needs to restart...Error Code: 0x0000005D...」エラーで仮想マシンが停止します。
(Windows 7上のVMwareの仮想マシンにWindows 8/8.1をインストールする際にも「Your PC ran into a problem ...」エラーとなります)
更に、Windows 7のWindows Virtual PCでの仮想マシンにWindows 7をインストールしてからWindows 8にアップグレードしようとすると、
「インストールする準備ができました」画面まで至らず「プロダクトキーを入力してください」画面が出る直前に
CPU速度が1GHzを下回っているため、Windows 8をインストールして実行することができません。」というエラーになったりします。
しかし64ビット版Windows 8でのHyper-V仮想マシンサーバ環境においてはWindows 7をインストールしてから
Windows 8にアップグレードすることができます(「CPU速度が1GHzを下回っているため...」等のエラーは発生しません)。
もちろん仮想マシンへのWindows 8/8.1のクリーンインストールや実行についても特に問題は発生しません)。
(補足:Windows 8/8.1にはHyper-Vの統合サービス対応機能が内蔵されていますので明示的な統合サービスインストールは不要です)
Hyper-Vの仮想マシンにWindows 8.1をインストールしている様子
Hyper-Vの仮想マシンでWindows 8.1が動作している様子
尚、Hyper-V仮想マシンサーバ環境で作成したWindows 8/8.1用仮想ディスク(拡張子vhdx)を
Hyper-Vの仮想ディスクの編集機能でvhd形式に変換して、その仮想ディスクをWindows 7のWindows Virtual PCで使用しても
インストールと同じ「Your PC needs to restart...Error Code: 0x0000005D...」エラーとなります。