技術・開発

【Windows10】WSL2のインストール手順と、ESXi環境でのエラー(0x80370102)回避方法

2021年8月1日

Windows 10(バージョン 1903 / ビルド 18362以降)から、公式ツールのみで手軽にインストールできるようになった「WSL2(Windows Subsystem for Linux 2)」。

今回は、Microsoftの公式ドキュメントを参考にしつつ、基本のインストール手順から、少し特殊な「ESXi上のWindows 10(ネスト環境)」で構築する際のエラー回避方法までを詳しく解説します。

1. 設定環境の確認

今回利用するOS環境は以下の通りです。

  • OS: Windows 10(バージョン:21H1 / ビルド:19043.1151)
  • システムの種類: x64 ベース プロセッサ
Windowsのバージョン情報確認画面

【Tips】バージョンやプロセッサの確認方法
・バージョン確認:「Windowsキー + R」で「ファイル名を指定して実行」を開き、winver と入力。
・プロセッサ確認:「Windowsキー + X」から「システム」を開くか、PowerShellで systeminfo と入力。

2. WSL2の有効化と基本設定

① Linux 用 Windows サブシステムの有効化

WSLを利用するために、まずはWindows側の機能を有効化します。
管理者権限でPowerShellを起動し、以下のコマンドを実行してください。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
サブシステム有効化コマンドの実行画面

② 仮想マシンの機能を有効化する

WSL2はWindowsの仮想化機能を利用するため、「仮想マシン プラットフォーム」も併せて有効化します。同じくPowerShellで以下を実行します。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
仮想マシンプラットフォーム有効化の実行画面

※コマンド実行が完了したら、一度Windowsを再起動してください。

③ Linux カーネル更新プログラムのインストール

再起動後、x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージをダウンロードして実行します。

カーネル更新プログラムのインストーラー

インストーラーが起動したら、「Next」を押して指示通りに進めていけばOKです(途中で管理者権限の許可が求められます)。

④ WSL 2 を既定のバージョンに設定する

再びPowerShellを開き、今後のデフォルトバージョンをWSL2に設定します。

wsl --set-default-version 2
デフォルトバージョン設定の実行画面

3. ディストリビューション(Ubuntu)のインストール

Microsoft Storeを開き、お好みのLinuxディストリビューションをインストールします。 (※Ubuntu、Debian、openSUSEなどが選択可能です。CentOSは一覧にありませんが、非公式の手順を踏めば一応インストール可能です)

Microsoft StoreでのLinux検索画面

今回は定番の「Ubuntu 20.04 LTS」を選択しました。

Ubuntu 20.04 LTSのインストール画面

容量が約450MBほどあるので、ダウンロード完了を待ってから「起動」をクリックします。

インストール完了後の起動ボタン

4. 【要注意】起動エラー「0x80370102」の解決方法

Ubuntuの初回起動時、環境によっては以下のようなエラーメッセージが表示されて起動に失敗することがあります。

WslRegisterDistribution failed with error: 0x80370102

0x80370102 エラー画面

これは、公式のトラブルシューティングにも記載がある通り、「CPUの仮想化(ハードウェアレベル)」が有効になっていないことが原因です。 物理マシンの場合は、BIOS/UEFIの設定に入って「Virtualization Technology(VT-xなど)」をONにする必要があります。

ESXi上の仮想マシン(Windows10)でWSL2を動かす場合の対処法

今回の私の環境のように、**VMware ESXi上に構築したWindows 10のゲストOS内でWSL2を動かしたい場合(Nested仮想化)**は、ESXi側で以下のひと手間を加える必要があります。

① vhv.allow を有効にする

ESXiでSSHを有効にし、TeraTermなどでログインします。 /etc/vmware/config ファイルを開き、末尾に以下の1行を追記してください。

vhv.allow = "TRUE"
ESXi SSHでのconfig編集画面

② ゲストOS(Windows10)のCPU設定を変更

ESXiのWebコンソール画面から、対象となるWindows 10(ゲストOS)の「設定の編集」を開きます。 [CPU] の項目を展開し、[ハードウェア仮想化(ハードウェア アシストによる仮想化をゲストOSに公開)] にチェックを入れて保存します。

ESXi ハードウェア仮想化の設定画面

5. Ubuntuの初期設定(完了)

上記のエラー回避設定が完了し、再度Ubuntuを起動すると、無事に初期化処理が進みます。 最後に、UNIX用の「ユーザー名(username)」と「パスワード(password)」を設定すれば準備完了です!

Ubuntuのユーザー名とパスワード設定画面

これで、Windows上で手軽にLinux環境を動かせるようになりました。

まとめ・雑感

今回、ESXi上の仮想マシンとして構築したWindows 10の中にさらにWSL2を入れる(ネスト仮想化)ということで、途中の起動エラーに少し手間取りましたが、ESXi側の設定を見直すことで無事に稼働させることができました。

同じように仮想環境下でWSL2を構築しようとしてハマっている方の参考になれば幸いです!

参考リンク

-技術・開発
-, , , , , , ,