Windows 7 RCでの仮想アプリケーション(仮想Windows XPモード利用)


Windows 7には仮想Windows XP Mode(通称XPM)が追加されます。
仮想Windows XPモードとはWindows 7上の仮想マシン(Virtual PC)内でWindows XPを実行するモードです。
その仮想Windows XPにインストールしたアプリケーションを仮想アプリケーションと呼び、仮想マシンの存在を意識せずに実行できます。

ここではExcel/WordやIEをWindows 7(RC)の仮想アプリケーションとして実行する手順を紹介します。

尚、仮想Windows XPモードはIntel-VT対応マシン(Intel Core 2 Duo等)上のWindows 7でサポートされます。
(今回主に使用したPCのCPUはCore 2 Duo E6600で、実メモリは3GBです)

更に、VHDファイルのマウントブートインストール機能についてもその手順を紹介します。

  1. はじめに(Windows 7 RCの見た目の特徴はこちらです)
    Windows 7用のVirtual PCは従来のVirtual PC 2007とは異なるアーキテクチャをもつ仮想マシンソフトで、
    Windows Server 2008のHyper-V/RemoteAppの要素技術を応用しています。
    そのVirtual PCの大きな特徴は以下の通りです。
    (1)Intel VTまたはAMD-Vを必須条件とした仮想化機構の実現
    (2)ホストOSとゲストOSの協調性を実現する統合コンポーネントの装備
    (3)RDP(リモートデスクトップ)クライアントとしての機能も装備
    (4)Virtual PCにインストールしたアプリケーションのルートレスモードでの実行(仮想アプリケーション)
    ※仮想アプリケーションのフォントは奇麗には表示されないようです。

    尚、XPMで使用するVirtual PCはWindows XP限定のものではなく他のWindowsやLinuxもゲストOSとして実行できます。

  2. Windows 7 RCのクリーンインストール
    今回はWindows 7 RCをクリーンインストールしました。
    クリーンインストールではHDD上にsystem reserverdパーティションが自動生成されます。
    (1)system reserverdパーティションはHDDの先頭パーティションでNTFS形式のアクティブなプライマリパーティションです(100MB)。
    (2)system reserverdパーティションにはbootmgr, BOOTSECT.BAK(8192バイト)等があります。
    (3)system reserverdパーティションがあるHDDについてもLinux等とのマルチブートが可能です。
    例えばFedora 11を追加インストールした場合にはGrub定義に「Other」というエントリが作成されます。
    その「Other」というエントリを選択してブートするとWindows 7 RCが問題なく起動できます。

  3. Windows XPモードの導入手順
    ここでは32ビット版Windows 7でのWindows XPモードの導入手順について紹介します。
    (64ビット版Windows 7では64ビット版Windows Virtual PCを使用しますがその仮想マシンはHyper-Vとは異なり64ビットOSを実行できません)


  4. 仮想アプリケーションのインストール
    仮想マシンのWindows XP上で仮想アプリケーション(ここではExcel 97)をインストールします。
    (1)ホスト側のDドライブにExcel 97のインストールCDをセットします。
    (2)仮想マシンのWindows XPのマイコンピュータに表示されるホスト側のDドライブを開いてExcel 97のインストーラを起動します。
    (3)Excel 97をネーティブインストールする手順と同じようにインストールします(Excel 97のインストールの様子)。
    ※インストール先は当該ユーザだけの差分ファイルですので別ユーザと仮想アプリケーションを共用することはできないという課題もあります。
    (4)Excel 97のインストールが終了するとExcel 97はVirtual Windows XP側のターミナルサービスアプリケーションとしてレジストリ登録されます。
    それと同時にホスト側の「Virtual Windows XPアプリケーション」メニューやレジストリにもそのExcel 97が自動登録されます。
    ※メニュー上のExcel 97の名称は「Microsoft Excel (Virtual Windows XP)」となります。
    ※「Microsoft Excel (Virtual Windows XP)」のリンク先は以下のような情報(例)になっています。
    %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\VMCPropertyHandler.dll,LaunchVMSal "Virtual Windows XP" "||e956e1b6" "Microsoft Excel"
    (ここでの「e956e1b6」は仮想マシン内でターミナルサービスアプリケーションとしてレジストリ登録された値です)
    ※Excel 97のアイコンはC:\Users\ユーザ名\AppData\Local\Microsoft\Windows Virtual PC\Virtual Applications\Virtual Windows XP\Microsoft Excel.icoとなります。



    (5)仮想マシンのWindows XPをシャットダウンします。
    ※スタートボタンの[Windowsセキュリティ]メニューを起動して「Windowsセキュリティ」画面の<シャットダウン>ボタンをクリックします。


    (6)ホスト側の[Windows Virtual PC]メニューの[仮想マシン]フォルダを開くとVirtual Windows XPの状態が表示されます。



    「Virtual Windows XP.vmcx」という設定ファイルの中には「Virtual Windows XP.vmc」ファイル(Virtual PC 2007用設定ファイル)の場所が保持されています。
    尚、[仮想マシン]フォルダにある[仮想マシンの作成]メニューは仮想マシンを新規に作成するものであり後述します。

  5. 仮想アプリケーションの実行
    仮想アプリケーションの実行メカニズムはWindows Server 2008のRemoteApp実装技術が利用されているようです。
    (1)ホスト側のスタートメニューの「Microsoft Excel (Virtual Windows XP)」を起動します。
    (2)Excel 97のウィンドウが透過的に(Virtual PC自体は見えずに)表示されます(XPのLunaスタイルです)。
    ※VMware Fusionのユニティビュー機能相当のものですが実際には仮想マシンの起動メッセージが表示されるため完全には「透過的」とは言えません。
    (3)仮想アプリケーション(Excel 97)とホスト側アプリケーションは相互にコピー&ペーストが可能です。



    (4)仮想環境の初期化について
    仮想マシンが一度も起動されていない状態で仮想アプリケーションを起動すると仮想環境の初期化が行われ、vpc.exeが常駐します。



    今回の環境ではそれが約40〜50秒かかりました。
    仮想アプリケーションを終了させてもvpc.exeは常駐したままです。
    vpc.exeは常駐した状態で仮想アプリケーションを起動すると仮想環境の初期化は1秒程度で完了しすぐに仮想アプリケーションが表示されます。

  6. Virtual Windows XP上のアプリケーションのホスト側への登録例
    Virtual Windows XP上のアプリケーションはホスト側の仮想アプリケーションとして簡単に登録できます。
    ここではIE6(Internet Explorer 6)をホスト側に登録してホスト側から起動する例を紹介します。

    手順は以下の通りです。

  7. Virtual PCでのWindows 7実行について
    Windows VistaではVirtual PC 2007にインストールしたWindows VistaにRDP接続してAeroテーマを利用できました
    (尚、Windows Vista上のVirtual PC 2007にインストールしたWindows 7に他のWindows 7からRDP接続してAeroテーマを利用することもできます)
    Windows 7のVirtual PCはRDPクライアントを兼ねていますのでVirtual PCウィンドウの中でWindows 7をAero表示できます。
    更に、Virtual PCのWindows 7にインストールしたアプリケーションをXPM同様の仮想アプリケーションとして実行することもできます。
    ここではVirtual PCでのWindows 7実行方法について紹介します。


  8. Virtual PC 2007からのWindowsマイグレーション

  9. Windows XP, Windows Vista, Windows 7付属のIE(Internet Explorer)群の同時実行
    上記で紹介したIE群を同時実行させてみました。
    具体的には以下のIE群です。
    ・Virtual Windows XP付属のIE6
    ・Virtual PC環境からマイグレーションしたWindows Vista付属のIE7
    ・Windows 7 Virtual PCにインストールしたWindows 7付属のIE8
    ・更にホストOS(Windows 7)付属のIE8
    IE群同時実行の様子はこちらです。


  10. VHDマウント機能(VHDファイルのマウント)
    Windows Server 2008 R2同様にWindows 7でも仮想ディスクをマウントできます。
    VMware Fuision 2.0Parallels Desktop 3.0 for Macではサポート済みの機能です。
    尚、ここでの仮想ディスクとはVirtual PC 2007/Virtual PC/Hyper-V仮想マシンのWindows仮想ディスクを指します。

    VHDファイルの利用手順は以下の通りです。
    また管理ツールのディスクの管理の[操作]−[VHDの作成]でVHDファイルを作成できます。
    作成したVHDファイルは自動的に接続されますので、ディスクの初期化を実行してシンプルボリューム化すれば利用可能となります。


  11. VHDブート機能
    Windows 7ではWindows 7用仮想ハードディスクからブートさせることができるようになりました(Ubuntu 8.04のWubi機能に若干類似)。
    但し、Windows 7のOSローダでロードできるOSの仮想ハードディスクでなければVHDブート機能は利用できません。
    ※Windows XP/VistaやLinux用仮想ハードディスクからのブート設定自体はできますがWindows 7とのブート機構の違いにより実際のブートはできません。

    Windows 7には実機上でなければ利用できない機能があります(XPM等)。
    Windows 7はWindows Virtual PCの仮想マシンにインストールできますが仮想マシン上ではXPMは使用できません。
    しかし、実機でWindows 7用VHDファイルから直接そこにインストールされているOSを起動できればXPMも利用可能となります。
    VHDブートするとVHDブートした実機用のドライバに入れ替わるためVHDブートしたVHDファイルは実質的に実機専用ファイルシステムとなります。
    VHDブートの最大の利点は実機でなければ利用できない機能をもつOSをVHD形式のファイルとして保存・管理・実行できる点にあります。
    VHDブートは基本的には後述するVHDインストールしたVHDファイルからブートするものです。

    さて、コマンドプロンプトでのブート構成データストアエディタ(bcdedit)コマンドの実行手順は以下のようになります。
    (VHDファイルをマウントせずに実行します)
    C:\Users\Administrator>bcdedit /copy {current} /d "Windows 7 test" ※本コマンドでGUIDの値が表示されます。
    エントリは {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee} に正常にコピーされました。
    ※ {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}部分がGUIDの値部分です。

    C:\Users\Administrator>bcdedit /set {上記GUIDの値} device vhd=[C:]\MyVHDisk\vpcwin7test.vhd
    この操作を正しく終了しました。

    C:\Users\Administrator>bcdedit /set {上記GUIDの値} osdevice vhd=[C:]\MyVHDisk\vpcwin7test.vhd
    この操作を正しく終了しました。

    C:\Users\Administrator>bcdedit /set {上記GUIDの値} detecthal on
    この操作を正しく終了しました。
    (1)ここで実機を再起動します。
    (2)するとWindowsブートマネージャにデフォルトのWindows 7の他に上記で指定した「Windows 7 test」が追加表示されます(追加表示例)。
    (3)「Windows 7 test」を選択します。
    (4)通常ブート障害発生時は自動ブートが自動的に繰り返され、原因究明が困難となります。
    そこでF8キーで詳細ブートオプション画面を表示します。
    次に、[システム障害時の自動的な再起動を無効にする]を選択してEnterを押します。
    (5)これでVHDブートが開始されます。
    (6)VHDブートではVHDの拡張処理が行われるためホストOS側に十分な空きスペースが必要となります。
    この空きスペースが不足している場合、ブルー画面に空きスペース不足の旨の表示がなされます。
    (7)VHDブートの簡易テスト(Virtual PC 2007上で行うと確実にVHDブートが行えます)
    ・Windows Vista上にVirtual PC 2007 SP1を導入し、二つの仮想マシン(64GBのVHDと12GBのVHD)にWindows 7 RCをインストールします。
    ※両方のOSにVirtual PCの追加機能を導入します。
    ・一方の仮想マシン(ホスト側に相当)のOS上(64GBのVHD)にもう片方のVHDファイル(12GBのVHD)をコピーし上記bcdeditを実行します。
    ・ホスト側に相当する仮想マシンを起動して、「Windows 7 test」をブートします。
    ・「Windows 7 test」に相当するVHDのファイルからブートされます。
    ・VHDブートするとホスト側のドライブやSystem ReservedまでもWindowsエクスプローラに自動表示されてアクセス可能となります。
    VHDブートされたOSのデスクトップ例 ※ネットワークも利用可能です。
    ※元々VPC 2007で動作していたVHDファイルを実機ではなく同じ仮想マシン(VPC 2007)でVHDブートするのですから動作して当然です。

    (8)ちなみに「Windows 7 test」エントリの削除は以下のコマンドで行えます。
    bcdedit /delete {上記GUIDの値} /cleanup
    この操作を正しく終了しました。


    (9)VPC 2007でWindows 7をインストールしたVHDファイルのVMware ServerでのVHDブート例


  12. VHDインストール機能(VHDファイルへの実デバイス対応Windows 7インストール)
    Windows 7ではWindows 7インストールDVDから実マシンをブートしてVHDファイルへWindows 7をインストールできます。
    ここでは便宜上、実ハードディスクに最初にインストールしたWindows 7を「ホストWindows 7」と呼びます。
    またそのホストWindows 7上のVHDファイルにインストールした実デバイス対応Windows 7を「VHD型Windows 7」と呼びます。
    尚、今回はホストWindows 7及びVHD型Windows 7共に64ビット版のWindows 7を使用してみました(実メモリは8GB)。
    更に、今回はVHD型Windows 7のインストールの過程においてVHDファイルを作成するものとします。
    [注意事項]
    (1)Windows 7のVHDインストール機能ではWindows VistaをVHDファイルにインストールすることはできません。
    (2)これはWindows VistaのDiskPartではvdisk指定が未サポートのためです(volumeとpartitionしかありません)。



  13. Virtual PCでのLinux実行について
    Windows Vista上のVirtual PC 2007ではLinuxをインストールして利用できました。
    しかし仮想Windows XPモード用のVirtual PCでも一応Linuxは動作するようです(動作しないケースもあり)。
    下記はUbuntu 8.04のインストール例です。


  14. Virtual PC 2007からのLinux/NetBSDマイグレーション

  15. LinuxとNetBSDのライブ実行テスト
    Vine Linux 4.0用に定義した仮想マシンで下記のライブ実行テストをしてみました。
    (1)KNOPPIX 5.1.1(DVD)のライブ実行を試してみましたが問題なく利用できました。
    boot:プロンプトで「knoppix i8042.noloop」を追加指定することでマウスが使用できるようになります。
    KNOPPIX 5.1.1のデスクトップ

    (2)NetBSD Live ! 2007 (NetBSD 4.0_BETA)はデスクトップ操作・ネットワーク接続もできました。
    設定はすべてデフォルトのため言語種別はde(ドイツ語)です。
    NetBSD Live ! 2007 (NetBSD 4.0_BETA)のデスクトップ

  16. その他

  17. 印象
    (1)XPM自体がどの程度利用されるかは未知数です。
    (2)しかし同じアプリケーションの別バージョンをホスト側とXPM側(仮想アプリ)で比較するのには適しているかも知れません。
    (3)またWindows XPで使用していた周辺機器(スキャナ等)付属のアプリケーションがWindows Vistaに対応していないこともありました。
    Windows 7のXPMはそのようなケースにも対応できるので助かります。
    つまりWindows Vistaで動作しなかったWindows XPアプリがWindows 7 XPMで息を吹き返すことになります。
    (4)個人的にはWindows 7と相性のよい仮想化ソフト(Windows Virtual PC)でLinux等が使えるので「歓迎」と考える人もいるでしょう。
    (5)LinuxアプリケーションもXPMのルートレスモードの仮想アプリケーションのように実行できればベターかも知れません。
    [補足]
    ・Windows Virtual PCの仮想アプリのルートレスモードはParallels Desktop 2.5 for Mac 日本語版でのコヒーレンス機能同様にWindowsアプリ限定です。
    ・Linuxアプリのルートレスモードは「VMware Fusion 2.0のユニティモード」として既にサポートされています。