仮想マシン上でWSL2がエラー(0x80370102) 対処法は?

Windows全般
スポンサーリンク

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仮想マシンの場合

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 仮想マシンの場合 ※未確認

※筆者の環境では、後述のエラーのため実際にエラーの解消まで確認できていません。他サイト様の情報(参考リンクに記載)で確認した手順を紹介しています。

VMware Workstation Player 仮想マシン 仮想化機能の有効化手順
  • step1
    仮想マシンを停止する

    最初に、該当の仮想マシンを停止状態にします。仮想マシンをシャットダウンし、VMware Workstation Playerで仮想マシンの状態が「パワーオフ」であることを確認します。

  • step2
    仮想マシン設定を開く

    仮想マシンを右クリックして「設定」を選び、「仮想マシン設定」画面を開きます。

  • step3
    該当の設定項目をON

    下図のように「プロセッサ」を選択し、右ペインの「Intel VT-x/EPT または AMD-V/RVIを仮想化」チェックをONにします。その後、仮想マシン設定画面を「OK」ボタンで確定して閉じます。

  • step4
    仮想マシンをパワーオン

    あとは仮想マシンをパワーオンします。WSL2のLinux環境が使えることを確認できればOKです。

VMware Workstation Playerのパワーオンでエラーが出る場合

筆者の環境では、上記設定後に仮想マシンをパワーオンしたところ、下記のエラーが表示され、仮想マシンを実行できませんでした。

同環境ではHyper-Vの機能を有効化しています。この場合、下記コミュニティサイトの情報によると、Hyper-Vの機能を無効化する必要があるとのことです。

本記事執筆時点では、実際にHyper-Vの機能を無効化することで、このエラーが解消しWSLが使用できるかどうかは確認できていません。申し訳ありませんが、後日確認できたら追記します。

参考:他の仮想化環境では

本記事では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月時点)。

参考サイト

入れ子になった仮想化による仮想マシンでの Hyper-V の実行
入れ子になった仮想化を使用して仮想マシンで Hyper-V を実行し、通常は複数のホストを必要とする構成をエミュレートする方法について説明します。
Error 0x80370102 · Issue #4120 · microsoft/WSL
i Reinstalled wsl and virtual machine in Windows features

おわりに

今回の記事は以上です。

当サイトでは、ITインフラ関連の知識やノウハウをメインに紹介しています。下の関連記事にも役立つ情報があるかもしれませんので、ぜひご覧下さい。

また、知識やノウハウを効率的に学ぶ方法として、Udemy の「ながらセミナーもおすすめです。三日坊主にならず、普段の生活の中でスキルアップする方法です。これについては下の記事で紹介していますので、良ければご覧下さい。

もとだて
もとだて

最後まで読んでいただき、ありがとうございました。

フィードバック

コメント

タイトルとURLをコピーしました