ICT Diary

Network、Server系の内容を気まぐれにUPしていく。

WSLとVMware PlayerのネストVT-x仮想マシンの共存

概要

WSL2を使用した状態でVT-x機能を使用した仮想マシンを起動するとVT-xが使用できないと警告が表示される。
無視してVMを起動することもできるが、VT-x機能は使用できないままとなる。
これらWSLと仮想マシンのVT-x機能を共存させるための手法のまとめ。

問題となっている事象

VMware Playerで作成した仮想マシン内で仮想化機能を使用するため、VT-xオプションを有効化して作成。
Localでの作業のため、WSL2をインストール。
この状態で仮想マシンを起動するとVMware Playerで以下の警告がでてVT-x機能が使えない。

仮想 Intel VT-x/EPT はこのプラットフォームではサポートされていません。
仮想化された Intel VT-x/EPT を使用せずに続行しますか。

仮想マシンのVT-xが機能しない理由

仮想マシンのVT-xが機能しないのは、Hyper-Vが起動していてVT-xが占有され仮想マシン側で使用できなくなっているため。
これを解決するには以下のコマンドを実行すればいい。

bcdedit /set hypervisorlaunchtype off

WSLが起動しない理由

Hyper-Vを無効化した状態でWSLを起動すると以下の警告がでてWSL2が起動しない。
これはWSL2がHyper-Vに依存関係にあり、Hyper-Vが無効になっていると正常に動作しないことが原因。

WSL2 は、現在のマシン構成ではサポートされていません。
エラー コード: Wsl/Service/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED

WSLと仮想マシンのVT-x機能の共存

WSL2にはHyper-Vが起動している必要があり、Hyper-Vが起動していると仮想マシンのVT-x機能が使用できない。
これらの問題はHyper-V上で動作するWSL2ではなく、WSL1を使用することで共存をさせることができる。
Linuxに依存する一部のツールが使用できなくなるが、今回は仮想マシンでVT-x機能を使用できるようにすることを優先する。
どうしてもWSL2を使用する必要がある場合は、VMware PlayerやVirtualBoxなどのサードパーティーの仮想化ソフトではなくHyper-Vを使用して仮想マシンを構築すればよい。

共存させるための手順

1. 一時的にHyper-Vを有効化

bcdedit /set hypervisorlaunchtype auto

2. PC再起動

一度PCの再起動を実施 (Hyper-VのOn/Offの反映に必要)

3. WSL2をWSL1に変更

wsl -l -v
  • 使用するものをバージョン1に変更
wsl --set-version [ディストリビューション名] 1

4. Hyper-Vの無効化

bcdedit /set hypervisorlaunchtype off

2. PC再起動

一度PCの再起動を実施 (Hyper-VのOn/Offの反映に必要)