WSL2(Windows Subsystem for Linux の最新バージョン)を使うことで、Windows上でも簡単にLinux環境を使うことができます。Hyper-VやVMwareなどの仮想マシン上でもWSL2を使いたいケースは多いかと思います。
WSL2を実行するためには、仮想化機能を有効にする必要があります。しかし多くの場合、仮想マシンでは有効化されていないため、WSL2を使用しようとするとエラーが発生します。これを解消するには「仮想マシン上での仮想化」(ネストされた仮想化)を有効にする必要があります。
筆者の環境では、Hyper-V仮想マシンで実際にこのエラーに遭遇しました。本記事の対処方法を実行することで、問題なくWSL2を使うことができましたので、その方法を紹介します。
問題
Hyper-VやVMware Workstation Player上の仮想マシンに、WSL2をインストールしました。
Linux環境(デフォルトのディストリビューションであるUbuntu)を起動したところ、次のエラーが表示され、使用できません。
Installing, this may take a few minutes…
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 ??????????????????????????????????????
Press any key to continue…
原因
この原因として、WSL2を実行しようとする仮想マシンにおいて、仮想化機能が有効になっていないことが考えられます。
WSL2は、仮想化したLinux OSを内部的に実行します。そのため、WSL2の使用には仮想化機能が必要です。
この仮想化機能は、大抵の物理マシンには搭載されており、デフォルトで有効化されています。しかし仮想マシンとなると話は変わってきて、「仮想マシン上での仮想化」(ネストされた仮想化)を実現するという、少しややこしいことになります。
多くの場合、「仮想マシン上での仮想化」がデフォルトで有効になっていないため、上記のエラーになります。
対処方法
前述の原因の場合、仮想マシンでの仮想化機能を有効化することで、エラーの解消が期待できます。
仮想マシンの実行環境は複数種類がありますが、筆者の環境ではWindows 11 Pro上の「Hyper-V」と「VMware Workstation Player」で、上記の問題を確認しました。
以下に、それぞれの解決方法を紹介していきます。
Hyper-V仮想マシンの場合
- step1仮想マシンを停止する
最初に、該当の仮想マシンを停止状態にします。仮想マシンをシャットダウンし、Hyper-Vマネージャーで仮想マシンの状態が「オフ」であることを確認します。
- step2プロンプトの起動
ホストマシン(仮想マシンではなく、それを実行するマシン)上のスタートメニューを右クリックし、「Windows ターミナル(管理者)」または「Windows PowerShell(管理者)」を選択します。
- step3コマンドの実行
次のコマンドを実行します。
Set-VMProcessor -VMName {仮想マシンの名前} -ExposeVirtualizationExtensions $true ※改行せずに入力
{仮想マシンの名前}は、Hyper-Vマネージャーで表示される「名前」を指定します。
コマンドが正常に実行されても、プロンプトには何も表示されません。
例:「Windows10」という名前の仮想マシンの仮想化機能を有効化する
- step4仮想マシンをパワーオン
あとは仮想マシンをパワーオンします。WSL2のLinux環境が使えることを確認できればOKです。
VMware Workstation Player 仮想マシンの場合 ※未確認
※筆者の環境では、後述のエラーのため実際にエラーの解消まで確認できていません。他サイト様の情報(参考リンクに記載)で確認した手順を紹介しています。
- step1仮想マシンを停止する
最初に、該当の仮想マシンを停止状態にします。仮想マシンをシャットダウンし、VMware Workstation Playerで仮想マシンの状態が「パワーオフ」であることを確認します。
- step2仮想マシン設定を開く
仮想マシンを右クリックして「設定」を選び、「仮想マシン設定」画面を開きます。
- step3該当の設定項目をON
下図のように「プロセッサ」を選択し、右ペインの「Intel VT-x/EPT または AMD-V/RVIを仮想化」のチェックをONにします。その後、仮想マシン設定画面を「OK」ボタンで確定して閉じます。
- step4仮想マシンをパワーオン
あとは仮想マシンをパワーオンします。WSL2のLinux環境が使えることを確認できればOKです。
参考:他の仮想化環境では
本記事ではHyper-VやVMware Workstation Player上の仮想マシンにおける対処方法を紹介しました。それでは、他の仮想化ソフトウェアや物理マシン、あるいはパブリッククラウド上の仮想マシンではどうでしょうか。
実際に検証していないので正確な情報ではないかもしれませんが、参考リンクを紹介します。
vSphere ESXi の場合
ESXi(VMware のサーバー仮想化ソフトウェア)の場合も、同様に仮想化機能を有効化する必要があると考えられます。
設定方法は以下のURL(別サイト)が参考になりそうです。こちらに「ハードウェア アシストによる仮想化をゲスト OS に公開]」をONにする方法が記載されています。
物理マシンの場合
仮想マシン上ではなく物理マシン上で本記事のエラーが出る場合は、次の要件を満たしているか確認する必要がありそうです。
- CPUが仮想化機能に対応していること
- BIOS設定で仮想化機能(「Intel Virtualization Technology」の設定など)が有効になっていること
詳細は次のURL(別サイト)などが参考になりそうです。
パブリッククラウド上の仮想マシン
Google Cloud、AWS、Azureなどのパブリッククラウド上の仮想マシン(GCEインスタンスや、EC2インスタンスなど)でも、同様の事象が発生すると考えられます。
こちらも、パブリッククラウド上での「仮想マシン上での仮想化」(ネストされた仮想化)の設定ができれば、解決できる可能性があります。しかし、パブリッククラウドではその制約が多く、実現できないケースが多いようです。
以下の記事(「kkamegawa’s weblog」様の記事)では、各パブリッククラウドで、その可否や方法のリンクが紹介されています。こちらが参考になりそうです。
例えば、Google Cloud上のVM仮想マシンの場合、Windows環境ではネストされた仮想化に対応していないので、WSL2を使うことは不可能と思われます(2022年7月時点)。
参考サイト
おわりに
今回の記事は以上です。
当サイトでは、ITインフラ関連の知識やノウハウをメインに紹介しています。下の関連記事にも役立つ情報があるかもしれませんので、ぜひご覧下さい。
また、知識やノウハウを効率的に学ぶ方法として、Udemy の「ながらセミナー」もおすすめです。三日坊主にならず、普段の生活の中でスキルアップする方法です。これについては下の記事で紹介していますので、良ければご覧下さい。
最後まで読んでいただき、ありがとうございました。
フィードバック
あなたが抱えている疑問や悩みは解決できたでしょうか?当ブログではそれを最重視しています。今後もあなたの役に立つ情報を提供するために、ぜひ教えて下さい。
コメント