VMWareの仮想化オプションが使えないためHyper-Vを無効化したが無効化できない時の対処
はじめに
この現象に遭遇し、2~3時間ネットを検索しましたが有効な情報にたどり着けなかったので記録しておきます。
Hyper-Vが無効化できないのはネットワークアダプタが残っていたためというものです。
VMWareの仮想化エンジンオプションをONにすると起動できない
VMWareではプロセッサの仮想化エンジンオプションをONにするとパフォーマンスを向上させる機能があります。しかし、Hyper-Vを使用しているとこのオプションをONにした場合仮想マシンが起動しなくなります。
具体的には下記の2つのオプションをONにすると起動できなくなります。
- Intel VT-x/EPT または AMD-V/RVIを仮想化(V)
- CPUパフォーマンス カウンタを仮想化(U)
Hyper-Vの無効化
Hyper-Vの無効化はGUIかPowerShellを管理者権限で起動しコマンドを実行すると無効化できます。
コマンドで無効化
管理者権限でコマンドプロンプトを開き、下記のコマンドを実行します。
bcdedit /set hypervisorlaunchtype off
無効化したのにHyper-VがOFFにならない。
今回筆者がハマったのが、ここです。コマンドも正常終了し、オプション機能を確認してもHyper-Vが無いのに無効化できていませんでした。
coreinfoというソフトを利用して調べると下記のようになります。
HYPERVISOR * Hypervisor is present
VMX - Supports Intel hardware-assisted virtualization
SVM - Supports AMD hardware-assisted virtualization
X64 * Supports 64-bit mode
原因
原因は、Hyper-Vを無効にしたときに仮想ネットワークアダプタが残っており依存関係で無効化されていなかったというものでした。
対処
対象の「Hyper-V Virtual Ethernet Adapter」と書かれたネットワークアダプタを削除します。ネットワークアダプタを開くと下記のように表示されます。(ここからは削除できない)
①デバイスのアンインストール
削除はデバイスマネージャーから行います。「Hyper-V Virtual Ethernet Adapter」というデバイスの上で右クリックして「アンインストール」すると削除できます。
②もう一度Hyper-Vを無効化
管理者権限でコマンドプロンプトを開き、下記のコマンドを実行します。
bcdedit /set hypervisorlaunchtype off
実行した後にcoreinfoを実行すると下記のようになっているはずです。
HYPERVISOR - Hypervisor is present
VMX * Supports Intel hardware-assisted virtualization
SVM - Supports AMD hardware-assisted virtualization
X64 * Supports 64-bit mode
この状態でVMWareの仮想化エンジンオプションを設定しても仮想マシンが起動するようになります。
おわりに
今回削除したのはWSLというWSLに関係したネットワークアダプタなのでもしかしたらWSL実行時に影響があるかもしれません。VMWareとは共存できない可能性もあります。その辺りはまた調べて追記します。
Discussion
WSL2(Windows Subsystem for Linux 2)を有効にしている場合無効にする必要がありますか?