Hyper-V上のWindows 11 開発環境でWSL2(Ubuntu)を利用するには入れ子仮想化を有効に
はじめに
最近自分のPCをWindows 11にアップデートしました。
Hyper-Vマネージャーを覗くと『Windows 11 開発環境』が利用できるようです。(Windows 10でもあった)
「評価版 Windows 11」が手軽に起動できるので、さらにその環境上でWSL2のUbuntuを起動しようとしたところ、以下のメッセージが表示され起動することができません。
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS
WSL2は内部でHyper-Vを利用するので、今回のHyper-V上の開発環境では「Hyper-V on Hyper-V」の入れ子状態となるため、仮想化機能をHyper-Vに対して有効化する必要があります。
今回はその経緯と対策手順を記載します。
手順1:仮想化有効まえ
Hyper-V 仮想マシンの作成
Hyper-V マネージャーを起動し、「クイック作成...」を選択。
「仮想マシンの作成」から「Windows 11 開発環境」を選択し、「仮想マシンの作成」ボタンを押下。
仮想マシンの起動
対象の仮想マシンを起動。
PowerShellの起動
仮想マシンにログイン後、PowerShellを「管理者モード」で起動。
wslコマンドで起動可能なディストリビューションの確認
wsl --list --online
上記コマンドでWSL2で利用可能なディストリビューションを確認。
実行結果
wslコマンドによる起動:失敗時
wsl --install -d Ubuntu
上記のwslコマンドでUbuntuの起動を試みますが、この時点では仮想化を有効にしていないのでUbuntuのウインドウが起動されるものの、前述の「仮想化機能を有効にしてください」という旨のメッセージが表示され、Ubuntuは利用できません。
起動しないケース
手順2:仮想化有効化まで
この作業はホスト側の作業です。
仮想マシンの名称確認
仮想マシンの名称を確認します。 Hyper-Vマネージャーに表示される名称で問題ないのですが、今回はPowerShellで同じ名称になるかを確認しました。
参考
管理者モードでPowerShellを起動し、以下のコマンドを実行。
Get-VM
ここでは「Windows 11 開発環境_1」を対象に作業を進めます。(作業の都合、名称を変更しています)
仮想化機能を有効にする
「Hyper-V on Hyper-V」の入れ子を可能にするにはPowerShell上で「Set-VMProcessor」コマンドを利用して仮想マシンごとに仮想化を有効にします。
参考URL:入れ子になった仮想化による仮想マシンでの Hyper-V の実行
Set-VMProcessor -VMName "Windows 11 開発環境_1" -ExposeVirtualizationExtensions $true
Set-VMProcessorコマンドの結果
手順3:仮想化有効後
ここの作業は仮想マシン上で行います。
仮想マシンでPowerShellを起動
仮想マシンへログインし、「管理者モード」でPowerShellを起動
wslコマンドによる起動:成功
手順1と同じようにwslコマンドでの起動を試みる。
wsl --install -d Ubuntu
Ubuntuの別ウインドウが起動し、Ubuntuへのログインが確認できました。
※この時点で気づいたんですが、"wsl --install -d Ubuntu"を実行時にUbuntuのディストリビューションはインストール済であるとメッセージにでてますね。
Ubuntu起動成功
手順は以上となります。
まとめ(と追記)
- Windows 11ではHyper-Vで「評価版 Windows 11」が利用できる
- Hyper-V上の「評価版 Windows 11」でWSL2が利用できるが「仮想化有効」のためのコマンドを叩く必要あり
~追記~
- 「評価版 Windows 11」にはすでにWSL2のUbuntuがインストール済みなので、すぐ使えて楽
- 仮想マシン上でのwslコマンドでUbuntuをインストールするにはPowerShellは一般ユーザーでもできた
おわりに
WSL2自体のインストールはかなり簡略化されましたが、WSL2自体をお試しであれこれする環境が欲しかったので、これで環境の汚染や破壊を恐れずに作業できそうです。