WSL2を使えるように設定すると、VMWare Workstation Playerのインスタンスが起動できなくなることがあります。ハードウェアの要件で、Intel Ivy Bridge(第3世代)含め、以前の古いCPUだと、Hyper-Vが有効な状態でVMWare仮想環境が共存できないことが原因のようです。
このような現象に遭遇した場合に、Hyper-V有効/無効の両環境を切り変えて使えるようにする方法を紹介します。
Hyper-Vを無効にするには
コマンドプロンプトを管理者として実行します。
「bcdedit」コマンドを実行して、現在の状態を確認します。下図の最終行で、「hypervisorlaunchtype」が「auto」になっていることがわかります。これを「OFF」に変更します。
>bcdedit /enum {current} Windows ブート ローダー -------------------------------- identifier {current} device partition=C: path \Windows\system32\winload.exe description Windows 11 locale ja-JP inherit {bootloadersettings} recoverysequence {20534ba7-7cc1-11ec-90f7-9cd9120e3379} displaymessageoverride Recovery recoveryenabled Yes allowedinmemorysettings 0x15000075 osdevice partition=C: systemroot \Windows resumeobject {20534ba5-7cc1-11ec-90f7-9cd9120e3379} nx OptIn bootmenupolicy Standard hypervisorlaunchtype Auto
下記の通り実行します。
>bcdedit /set hypervisorlaunchtype off この操作を正しく終了しました。
再起動後、下の通り、VMWareから起動できるようになりました。
この状態では、VMWareのインスタンスが起動できる代わりに、下図のようにWSL2を起動すると失敗するようになります。
Hyper-Vを有効にするには
管理者モードのコマンドラインから「bcdedit」コマンドを下のように実行します。
実行後、「bcdedit /enum {current}」の実行結果から、「hypervisorlaunchtype」が「Auto」に戻っていることが確認できます。
>bcdedit /set hypervisorlaunchtype auto この操作を正しく終了しました。 >bcdedit /enum {current} Windows ブート ローダー -------------------------------- identifier {current} device partition=C: path \Windows\system32\winload.exe description Windows 11 locale ja-JP inherit {bootloadersettings} recoverysequence {20534ba7-7cc1-11ec-90f7-9cd9120e3379} displaymessageoverride Recovery recoveryenabled Yes allowedinmemorysettings 0x15000075 osdevice partition=C: systemroot \Windows resumeobject {20534ba5-7cc1-11ec-90f7-9cd9120e3379} nx OptIn bootmenupolicy Standard hypervisorlaunchtype Auto
再び再起動を行うと、WSL2が起動できるようになっています。
さいごに
それにしても、ここで紹介した手順は面倒です。
ちなみに、VirtualBoxはこのような手順を踏まなくても問題なく動作しました。
そもそも、古いマシンでハイパーバイザ型の仮想環境を使うこと自体が非効率なので、このような問題に遭遇することがレアケースなのかもしれません。