仮想化アプリケーションが動作しない場合、どうすればよいでしょうか?
Hyper-V または関連サービスがインストールされている Windows マシンに仮想化アプリケーションをインストールすると、エラーが発生することがよくあります。Hyper-V 以外の仮想化アプリケーションで仮想マシン(VM)を実行した際に発生するエラーは、深刻な問題を引き起こすことがあります。このブログ記事では、これらのエラーの原因、その解決方法、および Hyper-V がインストールされているコンピュータで他の仮想化アプリケーションを実行する方法について解説します。
背景と動作原理
WindowsマシンにVMware Workstation、VMware Player、またはOracle VirtualBoxをインストールした後、これらの仮想化アプリケーションでVMを起動しようとすると、エラーが発生することがあります。このエラーは、その時点でHyper-VのVMが実行されていなくても発生します。VMware WorkstationとVirtualBoxを同じコンピュータにインストールし、VMwareのVMとVirtualBoxのVMを実行することは可能ですが、同時に実行することはできません。Hyper-Vに関するこの問題の原因は何でしょうか? 詳しく見ていきましょう。
VMware Workstation、VMware Player、およびVirtualBoxはタイプ2ハイパーバイザーであるのに対し、Hyper-Vはタイプ1ハイパーバイザーです。タイプ2ハイパーバイザーは、ハードウェア上で動作しているオペレーティングシステム上にインストールされます。タイプ1ハイパーバイザーは、ハードウェアの直上にインストールされます。すべてのハイパーバイザーには、ハードウェア仮想化のための命令セットであるプロセッサ仮想化拡張機能(Intel VT-xまたはAMD-V)が必要です。 Hyper-Vは、Windowsの起動時に仮想化拡張機能の制御を引き継ぎます。Windowsの読み込み時には、VMware WorkstationやVirtualBoxではこれらの仮想化拡張機能を利用できません。Intel VT-xまたはAMD-Vを同時に使用できるソフトウェアコンポーネントは1つだけです。
この非互換性はHyper-Vによって引き起こされます。これは、Hyper-Vロールが有効になっているWindowsマシンにインストールされたタイプ2ハイパーバイザーに対して、仮想化拡張機能が公開されていないためです。
VMware Workstationのエラー:
VMware Workstation and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware Workstation.
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential guard.
VirtualBoxのエラー:
BSOD, such as BSOD with SYSTEM_SERVICE_EXCEPTION
VT-x is not available (VER_VMX_NO_VMX). E_FAIL (0x80004005).
A VirtualBox VM works too slowly and uses the paravirtualisation (emulation) mode.
最も興味深いのは、ユーザーがHyper-Vをインストールしていないにもかかわらず、VMware WorkstationやVirtualBoxの使用中に前述のエラーのいずれかに遭遇する場合です。このエラーは、Windowsの自動更新が有効になっているときに発生します。更新プログラム(Windows 10 v1607およびWindows Server 2016以降の対応するWindows Serverバージョン)により、Windowsユーザーの同意なしに、Hyper-V関連の新しい機能が自動的にインストールされ、有効化されます。これらの機能は、 Device Guard および Credential Guardです。 Windowsの更新プログラムは既知の脆弱性を修正しますが、新たな問題を引き起こしたり、正常に動作している構成を破壊したりする可能性があります。そのため、多くのユーザーは自動更新を好まないのです。
Device Guard は、Windowsに搭載されている一連のセキュリティ機能です。この機能を実装する目的は、悪意のあるコードの実行を困難にすることです。 Device Guard は、Windows 10、Windows Server 2019、およびWindows Server 2019で利用可能です。主な要件は、ネイティブモードで動作するUEFIと、 Secure Boot が有効になっていることです。 Credential Guardは、悪意のあるコードがすでに実行されている場合に攻撃の影響を最小限に抑えるための機能で、システムとユーザーの秘密を分離して危険を回避します。
Virtual Secure Mode (VSM)は、プロセッサの仮想化拡張を活用してデータを独立したメモリ領域に保護する機能です。HVCIはハイパーバイザー保護コードの完全性であり、LSAはローカルセキュリティの権限です。
仮想化に基づくセキュリティ(VBS)は、Windowsにセキュリティを提供するためにVSMを含む仮想化拡張を利用する技術のクラスです。これらの機能を有効にするには、Hyper-Vロールが必要です(Hyper-V管理ツールは必要ありません)。
ハイパーバイザー(Hyper-V)は最初にロードされ、その後オペレーティングシステム(Windows)がロードされます。Hyper-Vはハードウェアとオペレーティングシステムの間の抽象化層を提供します。VSMは特定の重要なプロセスとそれによって使用されるメモリを、Hyper-Vによって制御される独立したオペレーティングシステムとしてタグ付けすることができます。これは、各VMがプロビジョニングされたハードウェア資源のみを利用できる場合の、Hyper-Vホスト上で動作する2つのVMの隔離に似ています。
注意: VMwareのタイプ1ハイパーバイザーを必要とする場合は、VMware ESXiとVMware vSphere環境を使用してください。これらのブログ投稿でさらに詳しく学びましょう: Hyper-V 対 VMware, VMware Workstation 対 VMware Player, Hyper-V に ESXi をインストールする方法。
Hyper-Vとその他の仮想化アプリケーションの互換性の問題を解決する方法を詳しく見ていきましょう。
方法1: GUIでHyper-Vをアンインストールする
CMDで次のコマンドを実行してWindowsの設定に関するシステム情報を確認してください:
msinfo32.exe
システム情報ウィンドウが開きます。次のスクリーンショットで、Hyper-Vが有効である(ハイパーバイザーが検出されている)ことと、Device Guard Virtualizationベースのセキュリティが稼働していることがわかります。これでこれらの機能を削除できます。
次に表示されるHyper-V関連の機能が、Hyper-Vを削除した後には利用できなくなります:
- Hyper-V
- Credential Guard and Device Guard
- Virtual Machine Platform
- Windows Sandbox
- WSL2.
GUIでControl Panel, Add Roles,とFeaturesウィザードを使用してHyper-V機能を削除します。
Windows 10でControl Panelを開き、Programs and Featuresをクリックし、その後Turn Windows features on or offをクリックします。
Windows Featuresウィンドウが開きます。
Hyper-Vのチェックボックスの選択を解除し、OKを押してください。
Hyper-Vの削除を完了するには、コンピュータを再起動してください。
Windows 10およびWindows Server 2016でのHyper-V削除の手順は類似しています。
Windows Server 2016では、Server Manager を開き、Manage > Remove Roles and Featuresをクリックしてください。 Remove Roles and Featuresウィザードで に進み、Server Roles のステップに進み、Hyper-V を解除してください。各ステップで Next を押して続行してください。Hyper-V の役割を削除するには再起動が必要です。
方法 2: PowerShell を使用して Hyper-V 機能を無効にする
GUI の代わりにコマンドラインインターフェースを使用して同様の操作が行えます。
管理者として PowerShell にログインし、Hyper-V 機能を無効にするコマンドを実行してください:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
ホスト マシンを再起動してください:
shutdown -r -t 0
方法 3: BCDedit を使用して Hyper-V を無効にする
この方法の背後にある考え方は、ブート構成データを編集して、Hyper-V のブートをアンインストールせずに無効にすることです。
管理者として PowerShell にログインするか、昇格したコマンド プロンプトからコマンドを実行して Hyper-V を無効にしてください:
bcdedit /set hypervisorlaunchtype off
Hyper-V を再度有効にしてデフォルト値に戻したい場合は、次のコマンドを実行してください:
bcdedit /set hypervisorlaunchtype auto
より多くの制御と利便性のために、Windows 10 で高速ブートを無効にしてください。Windows レジストリエディターを開き、次の場所に進みます:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPower
HiberbootEnabled パラメーターを 0 に設定してください
時々、Hyper-V VM を使用する必要がある場合、Windows ブート ローダー用に 2 つのエントリーを作成します: Hyper-V で Windows をブートするためのものと、Hyper-V なしで Windows をブートするためのもの。次に、Windows を起動する前に必要なオプションを選択します。このアプローチは、Hyper-V を有効または無効にするたびに手作業で PowerShell でコマンドを実行する必要を防ぎます。
bcdedit /copy "{current}" /d "No Hyper-V"
"The entry was successfully copied to {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}."
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. の代わりに値をコピー&ペーストしてください
bcdedit /set "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" hypervisorlaunchtype off
コンピューターを再起動します。
コンピューターが再起動すると、Windows ブート マネージャーで 2 つのオプションが表示されるはずです。
No Hyper-V ブート エントリーを削除したい場合は、/delete の bcdedit. オプションを使用してください
現在のブート エントリーの一覧を取得してください:
bcdedit /v
出力にすべてのエントリーとその識別子が表示されます。削除したいエントリーの ID をコピーし、次のコマンドを実行してください:
bcdedit /delete "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
方法 4: dism.exe で Hyper-V の役割を PowerShell でアンインストールする
この方法の背後にある考え方は、コマンドラインインターフェイスでデプロイメント イメージ サービシングと管理ツールを使用して Hyper-V をアンインストールすることです。
CMD または PowerShell に管理者としてログインしてください。次のコマンドを実行して Hyper-V をアンインストールします:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
Hyper-V をインストールする を再度使用する場合は、このコマンドを使用してください:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
方法 5: Windowsで仮想化ベースのセキュリティをオフにする
この方法は、Hyper-V に関連する Device Guard と Credential Guard の機能を無効にするために使用されます。 ローカルマシンのグループポリシーエディターを起動します。グループポリシーエディターはWindows 10 Pro, EnterpriseとEducationで利用可能です。コマンドプロンプトでgpedit.mscを実行します。
Local Computer Policy > Computer Configuration > Administrative Templates > System > Device Guardに移動します。
Turn On Virtualization Based Security.をダブルクリックします。デフォルトでは、この設定の状態はNot configured.です。
開いたウィンドウで、Disabledを選択し、OKを押して設定をセーブします。その後、ウィンドウを閉じます。
レジストリの編集は代替方法として
ができます。
Windows 10 Homeではグループポリシーエディターがないため、Windowsレジストリで仮想化ベースのセキュリティを無効にすることができます。
エラーや問題を避けるために、レジストリ設定を変更する前にWindowsレジストリのバックアップを作成してください。
レジストリエディターを開きます。管理者として開いたのregeditコマンドラインでを実行します。
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuardに移動します。
このエントリがない場合は、EnableVirtualizationBasedSecurityエントリを作成します。新しいエントリを作成するには、DeviceGuardディレクトリの空き領域を右クリックし、コンテキストメニューでNew > DWORD (32-bit) Valueをクリックします。このレジストリエントリのEnableVirtualizationBasedSecurity名を入力してください。デフォルトでは、このエントリのデータセットは0であるべきです(次のスクリーンショットを参照してください)。EnableVirtualizationBasedSecurityをダブルクリックして、0を手動で設定することもできます。
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsaに移動します。
Lsaディレクトリに新しいレジストリエントリを作成します。Registry Editorウィンドウの右ペインの空きスペースを右クリックします。コンテキストメニューでNew > DWORD (32-bit) Value.をクリックします。
この値のLsaCfgFlags名を入力してください。この値は0に設定する必要があります。
レジストリエディターを閉じて、コンピュータを再起動してください。
次のWindows起動時にDevice GuardとCredential Guardを無効にするために、管理者としてPowerShellで以下のコマンドを実行できます。
未使用のボリュームを選択して、UEFIシステムパーティションをドライブX:にマウントします:
mountvol X: /s
ファイルが存在する場合、上書きオプション付きでC:WindowsSystem32SecConfig.efi to X:EFIMicrosoftBootSecConfig.efiをコピーします。このファイルはWindowsセキュリティ構成ツールのブートイメージです。
copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y
ID{0cb3b571-2f2e-4343-a879-d86a476d7215}とDebugTool名を持つ新しいオプションをブートメニューに作成します:
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
前のステップで作成したブートオプションを次にEFIMicrosoftBootSecConfig.efiするよう設定します:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.efi"
次回の再起動のデフォルトとして、新しいエントリをWindowsブートマネージャーが使用する設定をします。その後、再起動したらWindowsは通常のブートに戻ります。
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
ブートローダーがファイルを起動するときに、DISABLE-LSA-ISO,DISABLE-VBSオプションをSecConfig.efiファイルに渡すようにブートローダーを設定します。
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
起動したドライブのパーティションをX: ドライブに設定します:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
システムからX:ドライブをアンマウントします:
mountvol X: /d
メソッド 6: VMware Workstation
を更新する
物理コンピュータにWindows 10 バージョン2004(20H1)ビルド19041以降をお持ちの場合、VMware WorkstationをVMware Workstation 15.5.6以降にアップグレードして、Hyper-VやVirtualization Based Security(VBS)機能、Device GuardおよびCredential Guardを無効化またはアンインストールせずにWindows上でVMware仮想マシンを実行できるようになります。
多くの顧客からの苦情を受けて、MicrosoftとVMwareは、Microsoft Windows Hypervisor Platform (WHP) APIを採用し、Hyper-Vが有効化されているホスト上でVMware Workstationなどのタイプ2ハイパーバイザーを実行できるようにする共同プロジェクトを開発することを決定しました。これらのAPIは、アプリケーションがCPUリソースを管理し、レジストリ値を読み書きし、CPUの動作を終了し、中断を生成することを可能にします。
バージョン15.5.5以前のVMware Workstationは、CPUおよび仮想化命令セットに直接アクセスできる仮想マシンモニタ(VMM)を使用します。VMMは特権モードで操作します。Windowsホストで仮想化ベースのセキュリティ機能が有効化されている場合、ハードウェアとWindowsの間に追加のハイパーバイザー層(Hyper-V)が追加されます。Hyper-Vは、ハードウェア仮想化に使用されるCPU機能に直接アクセスでき、VMMはCPU仮想化機能にアクセスできません。
VMwareは、Microsoft WHP APIを使用して製品の互換性問題を解決するためにVMware Workstation 15.5.6のアーキテクチャを変更しました。これにより、VMMはユーザーレベル(特権モードではなく)で、WHP APIを使用して仮想マシンを実行することで、CPU仮想化拡張機能に直接アクセスせずに実行できるようになりました。このモードはユーザーレベルモニター(ULM)またはホストVBSモードと呼ばれます。WindowsホストからHyper-V関連機能をアンインストールすると、VMware Workstationが自動的にそれを検出し、VMMはCPU仮想化拡張機能への直接アクセス(特権モードでの実行)に切り替わります。
Hyper-Vが有効化されている物理Windowsマシンに、Windows Hypervisor Platform (WHP)がインストールされている必要があります。このマシンでVMware WorkstationがVMware仮想マシンを実行できるようにするためです。コントロールパネルでWindows Hypervisor Platform機能をインストールするには、Turn Windows features on or offをクリックしてください。
したがって、物理マシン上のWindows 10とVMware Workstationを更新して、Hyper-V関連の機能とVMware Workstation仮想マシンを同一マシン上で実行できるバージョンにアップグレードすることができます。
ホストVBSモードの制限事項:
- Windows Hypervisor PlatformはWindows Server 2016および他のWindows Server バージョンとエディションではサポートされません。 その結果、VMware ワークステーションは、物理マシンで Windows Server を実行しているホストの VBS モードで VM を実行することができません。
- ネストされた仮想化はサポートされていません。VMware ワークステーション VM 内でネストされた VM を実行することはできません。
- VMware VM は遅くなる場合があります。
- X86 パフォーマンスモニタリングカウンタ(PMC)はサポートされていません。
- ユーザーモードの保護キー(PKU)機能は利用できません。
- 制限付きトランザクショナルメモリー(RTM)およびハードウェアロックエリーション(HLE)機能は利用できません。
VirtualBox と Hyper-V
VirtualBox は、バージョン 6.0 以降、Hyper-V、Device Guard、および Credential Guard と共存できます。VirtualBox 6 は、Windows 10 v1803 x64 上の VMware ワークステーションと同様に、Hyper-V API と連携して動作します。
以下の機能をホスト Windows マシンで有効にする必要があります。こうすることで、VirtualBox が Hyper-V API と連携することができます。
- Hyper-V
- Windows ハイパーバイザ プラットフォーム
Hyper-V 機能が有効になっているものの、Windows ハイパーバイザー プラットフォーム機能が無効になっている場合、VM 構成の概要にある System > Acceleration で、Paravirtualisation modeがオンになっていることが確認できます。VM を起動しようとすると、VirtualBox から Windows ハイパーバイザー プラットフォームを有効にする必要があるという注意が表示され、エラーメッセージが表示されます。
エラーメッセージ:
WHvCapabilityCodeHypervisorPresent is FALSE! Make sure you have enabled the 'Windows Hypervisor Platform' feature.
(VERR_NEM_NOT_AVAILABLE).
VT-x is not available (VERR_VMX_NO_VMX).
必要な Hyper-V 関連機能が有効になっている場合、VM のシステムセクションに以下の情報が表示されます。
Acceleration: VT-x/AMD-v, Nested Paging, Paravirtualization Hyper-V

VM は正常に起動するはずです。VirtualBox ウィンドウの下部パネルに緑色のタートルアイコンが表示されます。このアイコンは、VM が通常 VirtualBox が CPU 仮想化拡張を直接利用する場合に使用されるネイティブモードではなく、Hyper-V 準仮想化モードで実行されていることを示しています。Hyper-V と関連機能が有効になっているマシンでは、VirtualBox VM のパフォーマンスが低下します。以前に説明したように Hyper-V を無効にするか削除することで、CPU 仮想化拡張を直接使用して VirtualBox で VM をネイティブモードで実行できます。
VirtualBox 対 Hyper-V 比較もご覧ください。および VirtualBox 対 VMware 比較。
結論
Virtualization Based Security(Device Guard と Credential Guard)、Windows サンドボックス、Hyper-V エンジンを使用する WSL などの新しい Windows 機能は、他のハイパーバイザー(たとえば、VMware ワークステーション、VirtualBox、QEMU、および Google Android エミュレーター)を使用しているユーザー、管理者、およびソフトウェア開発者に多くの問題を引き起こします。 これらの互換性の問題を解決するには、2つの方法があります。Hyper-Vを無効化またはアンインストールするか、Microsoftが提供するWindows Hypervisor Platform APIなど、Hyper-V APIとの連携をサポートする新しいバージョンの仮想化アプリケーションを使用することです。
APIを使用して、Hyper-Vが搭載されたマシン上でVirtualBox、VMware Workstation、その他のハイパーバイザーでVMを実行すると、Hyper-V以外のVMのパフォーマンスが低下する可能性があります。仮想化アプリケーションに障害が発生した場合、データのバックアップは極めて重要です。 まだご自身の環境に最適な Hyper-V バックアップソリューションをお選びでない場合は、NAKIVO Backup & Replication をご検討ください。このソリューションは、堅牢なバックアップ、ランサムウェア対策、災害復旧などの機能を提供します。無料版をダウンロードして、ソリューションの実際の動作をご確認ください。











