仮想化アプリケーションが動作しない場合、どうすればよいでしょうか?

Hyper-V または関連サービスがインストールされている Windows マシンに、他の仮想化アプリケーションをインストールすると、エラーが発生することがよくあります。Hyper-V 以外の仮想化アプリケーションで仮想マシン(VM)を実行した際に発生するエラーは、深刻な問題を引き起こす可能性があります。このブログ記事では、これらのエラーの原因、その解決方法、および Hyper-V がインストールされたコンピュータで他の仮想化アプリケーションを実行する方法について解説します。

Hyper-V バックアップ用 NAKIVO

Hyper-V バックアップ用 NAKIVO

Hyper-V向けのエージェントレスかつアプリケーション認識型のバックアップ。ランサムウェア対策、バックアップからのVM即時起動、その他の仮想/物理プラットフォームへの対応など。

背景と動作原理

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つだけです。

How Hyper-V and Windows applications work on a computer

この非互換性は、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バージョン)により、Hyper-Vに関連するいくつかの新機能が、ユーザーの同意なしに自動的にインストールされ、有効化されます。これらの機能は Device Guard そして Credential GuardWindowsの更新プログラムは既知の脆弱性を修正しますが、新たな問題を引き起こしたり、正常に動作していた設定を台無しにしたりすることもあります。そのため、多くのユーザーは自動更新を好まないのです。

Device Guard は、Windows に搭載されている一連のセキュリティ機能です。この機能を実装した目的は、悪意のあるコードの実行を阻止することにあります。 Device Guard Windows 10、Windows Server 2019、および Windows Server 2019 で利用可能です。主な要件は以下の通りです:ネイティブモードで動作する UEFI および Secure Boot 有効化されています。

Credential Guard これは、悪意のあるコードがすでに実行されている場合でも、システムやユーザーの機密情報を隔離することで侵害を困難にし、攻撃による影響を最小限に抑える機能です。

Virtual Secure Mode (VSM) これは、プロセッサの仮想化拡張機能を活用し、メモリ内の隔離された領域でデータを保護する機能です。HVCIとは、ハイパーバイザー保護コード整合性(Hypervisor-protected code integrity)の略称です。LSAとは、ローカルセキュリティオーソリティ(Local Security Authority)の略称です。

仮想化ベースのセキュリティ(VBS) これは、VSMを含む仮想化拡張機能を利用してWindowsのセキュリティを確保する一連の技術です。これらの機能を利用するには、Hyper-Vロールが必要です(Hyper-V管理ツールは不要です)。

まずハイパーバイザー(Hyper-V)が読み込まれ、その後オペレーティングシステム(Windows)が読み込まれます。Hyper-Vは、ハードウェアとオペレーティングシステムの間に抽象化レイヤーを提供します。 VSM を使用すると、特定の重要なプロセスおよびそれらが使用するメモリにタグ付けを行うことができます。これにより、それらのリソースは Hyper-V によって制御される独立した別のオペレーティングシステムに属するものとして扱われます。この仕組みは、Hyper-V ホスト上で実行される 2 つの仮想マシン (VM) の分離と類似しており、各 VM は自身に割り当てられたハードウェアリソースのみを使用できます。

Virtualization Applications Are Not Working: What Do You Do?

注: 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– ベースのセキュリティ機能が実行されています。これで、これらの機能を削除できます。

Viewing system information in Windows

Hyper-V を削除すると、以下の Hyper-V 関連の機能は利用できなくなる点にご注意ください:

  • Hyper-V
  • Credential Guard and Device Guard
  • Virtual Machine Platform
  • Windows Sandbox
  • WSL2.

以下の手順に従って、グラフィカルユーザーインターフェイス(GUI)からHyper-V機能を削除します。 Control Panel, Add Roles, そして Features ウィザード。

Windows 10 では、[ファイルエクスプローラー] を開き、 Control Panel、クリック Programs and Features、その後、[クリック] Turn Windows features on or off.

The Windows Features ウィンドウが開きます。

選択を解除します。 Hyper-V チェックボックスを選択し、クリックする OK.

Hyper-V のアンインストールを完了するには、コンピュータを再起動してください。

Removing Hyper-V in Windows 10 to allow other virtualization applications to work properly

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 ロールの削除を完了するには、再起動が必要です。

Removing Hyper-V in the Remove Roles and Features wizard

方法 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 ロールをアンインストールすることなく、ブート構成データを編集して 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 仮想マシンを時折使用する必要がある場合は、Windows ブートローダーに 2 つのエントリを作成してください。1 つは Hyper-V を有効にして Windows を起動するためのもの、もう 1 つは 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

Editing boot configuration in Windows

コンピュータを再起動してください。

コンピュータが再起動すると、Windows ブートマネージャに 2 つのオプションが表示されます。

Two boot options in Windows Boot Manager

もし……を削除したい場合は No Hyper-V ブートエントリを設定するには、 /delete ~のオプション bcdedit.

現在のブートエントリの一覧を取得します:

bcdedit /v

出力には、すべてのエントリとその識別子が一覧表示されます。削除したいエントリのIDをコピーし、次のコマンドを実行してください:

bcdedit /delete "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"

方法 4: PowerShell で dism.exe を使用して Hyper-V ロールをアンインストールする

この方法の目的は、コマンドラインインターフェースの"Deployment Image Servicing and Management"ツールを使用して、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

How to uninstall Hyper-V in the command line interface

方法 5: Windows で仮想化ベースのセキュリティを無効にする

この方法は、無効にするために使用されます Device Guard そして Credential GuardこれらはHyper-V関連の機能です。

ローカル マシンのグループ ポリシー エディターを開きます。グループ ポリシー エディターは、 Windows 10 Pro, Enterprise、および Educationコマンドプロンプトで、次のコマンドを実行します gpedit.msc

移動 Local Computer Policy > Computer Configuration > Administrative Templates > System > Device Guard

ダブルクリック Turn On Virtualization Based Security. デフォルトでは、この設定の状態は Not configured.

Turn Off Virtualization Based Security that uses Hyper-V

開いたウィンドウで、[選択] をクリックします Disabled そしてクリック OK 設定を保存して、ウィンドウを閉じます。

Close the Group Policy Editor and restart your computer to make changes take effect

別の方法としてレジストリを編集する

グループ ポリシー エディターが搭載されていない Windows 10 Home では、Windows レジストリで"仮想化ベースのセキュリティ"を無効にすることができます。

エラーや問題の発生を防ぐため、レジストリ設定を変更する前に Windows レジストリのバックアップを作成してください。

レジストリ エディターを開きます。実行 regedit ~の中で コマンドライン 管理者として開く必要があります。

にアクセスしてください HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard

作成する EnableVirtualizationBasedSecurity このエントリがない場合は、エントリを追加してください。新しいエントリを作成するには、 DeviceGuard ディレクトリで、コンテキストメニューから[クリック] New > DWORD (32-bit) Value. を入力してください EnableVirtualizationBasedSecurity このレジストリエントリの名前。デフォルトでは、このエントリに設定されるデータは 0 (次のスクリーンショットを参照)。をダブルクリックすると、 EnableVirtualizationBasedSecurity そして設定する 0 手動で。

Editing registry to disable Virtualization Based Security in Windows

移動 HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa

に新しいレジストリエントリを作成します Lsa ディレクトリ。右ペインの何もない場所を右クリックして、 Registry Editor ウィンドウ。コンテキストメニューで、[クリック] New > DWORD (32-bit) Value.

""を入力してください LsaCfgFlags この値の名前。この値は 0.

How to disable LSA in Windows Registry

レジストリ エディタを閉じ、コンピュータを再起動してください。

PowerShell(管理者として)で次のコマンドを実行して、無効にすることができます Device Guard そして Credential Guard 次回のWindows起動時。

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 や、Device Guard や Credential Guard を含む仮想化ベースのセキュリティ (VBS) 機能を無効化またはアンインストールすることなく、Windows マシン上で VMware 仮想マシンを実行できます。

お客様からの多くの要望を受け、Microsoft と VMware は、Microsoft Windows Hypervisor Platform (WHP) API を採用した共同プロジェクトを開発することを決定しました。これにより、VMware Workstation などのタイプ 2 ハイパーバイザーを、Hyper-V が有効になっているホスト上で実行できるようになります。これらの API により、アプリケーションは CPU リソースの管理、レジストリ値の読み書き、CPU 操作の終了、および割り込みの生成が可能になります。

バージョン 15.5.5 以前の VMware Workstation は、CPU および仮想化命令セット (Intel VT-x または AMD-V) に直接アクセスする仮想マシンモニター (VMM) を使用しています。 VMMは特権モードで動作します。Windowsホストで仮想化ベースのセキュリティ機能が有効になっている場合、ハードウェアとWindowsの間に追加のハイパーバイザー層(Hyper-V)が挿入されます。Hyper-Vはハードウェア仮想化に使用されるCPU機能に直接アクセスできますが、VMMはCPU仮想化機能にアクセスできません。

VMwareは、自社製品がMicrosoft WHP APIを使用できるようにし、互換性の問題を修正するために、VMware Workstation 15.5.6のアーキテクチャに変更を加えました。これにより、VMMはWHP APIを使用してユーザーレベル(特権モードではない)で動作し、CPU仮想化拡張機能に直接アクセスすることなくVMを実行できるようになりました。このモードは、ユーザーレベルモニター(ULM)またはホストVBSモードと呼ばれます。 WindowsホストからHyper-V関連の機能をアンインストールすると、VMware Workstationはそれを自動的に検出し、VMMはCPU仮想化拡張機能への直接アクセス(特権モードでの実行)に切り替わります。

VMware Workstationがこのマシン上でVMware VMを実行できるようにするには、Hyper-Vが有効になっている物理WindowsマシンにWindows Hypervisor Platform (WHP) をインストールする必要があります。インストールしてください。 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 のバージョンやエディションではサポートされていません。そのため、Windows Server を実行している物理マシン上では、VMware Workstation でホスト VBS モードの仮想マシンを実行することはできません。
  • ネストされた仮想化はサポートされていません。ネストされたVM(VMware WorkstationのVM内に配置されたVM)を実行することはできません。
  • VMwareの仮想マシンは動作が遅くなることがあります。
  • x86のパフォーマンス監視カウンタ(PMC)はサポートされていません。
  • ユーザーモード保護キー(PKU)機能は利用できません。
  • 制限付きトランザクショナルメモリ(RTM)およびハードウェアロックエリジョン(HLE)機能は利用できません。

VirtualBox と Hyper-V

VirtualBox 6.0 以降では、Hyper-V、Device Guard、および Credential Guard と共存できるようになりました。VirtualBox 6 は、Windows 10 v1803 x64 上の VMware Workstation と同様に、Hyper-V API を利用できます。

VirtualBox が Hyper-V API を利用できるようにするには、ホストとなる Windows マシンで以下の機能を有効にする必要があります:

  • Hyper-V
  • Windows ハイパーバイザー プラットフォーム

Hyper-V 機能が有効になっているが、Windows Hypervisor Platform 機能が無効になっている場合、 System > Acceleration VM構成の概要では、次のことが確認できます。 Paravirtualisation mode が有効になっています。VMを起動しようとすると、VirtualBoxから"Windows Hypervisor Platform"を有効にする必要があるという警告が表示され、エラーメッセージが表示されます。

エラーメッセージ:
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).

Windows で必要な Hyper-V 関連の機能が有効になっている場合、[システム] セクションに、その仮想マシンに関する以下の情報が表示されます。

Acceleration: VT-x/AMD-v, Nested Paging, Paravirtualization Hyper-V

Hyper-V and VirtualBox are installed on the same Windows host

仮想マシンは正常に起動するはずです。VirtualBox ウィンドウの下部パネルに緑色のカメのアイコンが表示されます。このアイコンは、仮想マシンが、VirtualBox が通常 CPU 仮想化拡張機能と直接やり取りする際に使用するネイティブモードではなく、Hyper-V 準仮想化モードで実行されていることを示しています。 Hyper-Vおよび関連機能が有効になっているマシンでは、VirtualBox VMのパフォーマンスが低下します。前述の手順に従ってHyper-Vを無効化または削除することで、CPU仮想化拡張機能を直接使用し、VirtualBox上でVMをネイティブモードで実行することができます。

以下の記事も参照してください。 VirtualBox 対 Hyper-V 比較と VirtualBox 対 VMware 比較。

結論

Hyper-Vエンジンを利用する"仮想化ベースのセキュリティ(Device GuardおよびCredential Guard)"、"Windows Sandbox"、"WSL"といったWindowsの新機能は、Windowsマシン上でVMware Workstation、VirtualBox、QEMU、Google Androidエミュレーターなどの他のハイパーバイザーを使用しているユーザー、管理者、およびソフトウェア開発者に多くの問題を引き起こしています。 これらの互換性の問題を解決するには、Hyper-Vを無効化またはアンインストールするか、Microsoftが提供するWindows Hypervisor Platform APIなど、Hyper-V APIとの連携をサポートする新しいバージョンの仮想化アプリケーションを使用する、という2つのアプローチがあります。

APIを使用してHyper-V搭載マシン上でVirtualBox、VMware Workstation、その他のハイパーバイザー上でVMを実行すると、Hyper-V以外のVMのパフォーマンスが低下する可能性があります。仮想化アプリケーションが障害を起こした場合に備え、データのバックアップは不可欠です。 まだご自身の環境に最適なHyper-Vバックアップソリューションを選定されていない場合は、以下の点を検討してください。 NAKIVO Backup & Replicationこのソリューションは、堅牢なバックアップ、ランサムウェア対策、災害復旧などの機能を提供します。無料版をダウンロードして、実際の動作をご確認ください。

試してみてください NAKIVO Backup & Replication

試してみてください NAKIVO Backup & Replication

無料トライアルをご利用いただき、本ソリューションのデータ保護機能をすべてお試しください。15日間無料です。機能や容量の制限は一切ありません。クレジットカードも不要です。

People also read