仮想環境のWindowsでWSL 2を動かす方法

仮想環境でさらに仮想環境を実現する機能は「ネストされた仮想化」「ネストされた仮想環境」「入れ子になった仮想化」といった言葉で表現されることが多い。Hyper-Vでこの機能を実現するには、有効化したい仮想環境を停止してから管理者権限で次のコマンドレットを実行すればよい。

仮想環境でネストされた仮想化を有効化するコマンドレット

Set-VMProcessor -VMName '仮想マシン名' -ExposeVirtualizationExtensions $true
  • 仮想環境でネストされた仮想化を有効化するコマンドレットの実行例

    仮想環境でネストされた仮想化を有効化するコマンドレットの実行例

設定を変更したらシステムを再起動する。再起動しないまま使おうとすると、先ほど示したエラーのうち「0x80370109」のエラーが表示されるだろう。

ネストされた仮想化が有効化されているかどうかは、次のコマンドレットで確認することができる。

ネストされた仮想化が有効になっていることを確認する方法

Get-VMProcessor -VMName '*' ft VMName,ExposeVirtualizationExtensions
  • ネストされた仮想化が有効になっているかどうか確認する方法の実行例

    ネストされた仮想化が有効になっていることを確認するコマンドの実行例

上記のスクリーンショットでは、「Windows 11」という仮想環境がネストされた仮想化の機能に対応していることになる。この仮想環境ではWSL 2が実行できるということだ。

仮想環境のWindowsでWSLの動作を確認

次のスクリーンショットは、Windows 10のHyper-V仮想環境で動作しているWindows 11開発版でWSL 2を使ってLinuxのGUIアプリケーションやLinuxのCUIコマンドを実行している様子だ。

  • Hyper-V仮想環境で動作しているWindows 11開発版でWSL2を使ってLinuxのGUIアプリケーションやLinuxのCUIコマンドを実行している様子

    Hyper-V仮想環境で動作しているWindows 11開発版で、WSL 2を使ってLinuxのGUIアプリケーションやLinuxのCUIコマンドを実行している様子

最近、業務でクラウド環境を使うケースが増えている。こうした環境は基本的に仮想環境になっていることが多く、仮想環境において仮想環境機能を使っていることは、もう日常になっているのだ。

本稿では仮想環境としてMicrosoftのHyper-Vを取り上げたが、これはVMware WorkstationやOracle VirtualBoxといった仮想環境でも同じだ。仮想環境側で「ネストされた仮想化」の機能を有効にすることで、今回紹介したように仮想環境のWindowsでWSL 2の機能を使うことができる。

この機能はデフォルトでは無効化されているので、気が付かないと仮想環境のWindowsではWSL 2の機能が利用できないと思ってしまうかもしれない。しかし、実際には設定を変更することで使うことができるのだ。動かずに諦めていた方は、ぜひこの方法を試してもらえればと思う。