トラブルシューティング

WSL

WSL が root で実行される

初回起動時のユーザー名、パスワード登録中に WSL で別のインスタンスを実行すると以下のように、 プロンプトの末尾が # になり、スーパーユーザーである root で入力待ちのになることがあります。

root@HOSTNAME:/mnt/c/Users/USERNAME#

おそらく初回起動時のユーザー名、パスワード登録を行っているウインドウがあるはずですなので前面に戻して、登録を完了させてください。 root で入力待ちになっているウインドウ閉じましょう。 登録完了後、新たなインスタンスを実行すると以下のような状態で入力待ちになるはずです。

USERNAME@HOSTNAME:~$

上手く解決出来ない場合は powershell から wsl --unregister Ubuntu して一旦 Ubuntu の登録を解除した後、 再度 install し直すと解決するかもしれません。

wsl --unregister Ubuntu
wsl --install -d Ubuntu

WSL 2 の動作要件を確認する

WSL 2 を利用するためには仮想化メカニズムである Hyper-V が利用可能である必要があります。 Hyper-V が利用可能か否かを調べるには systeminfo コマンド実行して末尾の「Hyper-V の要件」を確認してください。

systeminfo

実行例 1

PS C:\WINDOWS\system32> systeminfo

ホスト名:               ********
OS 名:                  Microsoft Windows 10 Pro
OS バージョン:          10.0.19044 N/A ビルド 19044
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン ワークステーション
OS ビルドの種類:        Multiprocessor Free
...
... <中略>
...
Hyper-V の要件:         VM モニター モード拡張機能: はい
                        ファームウェアで仮想化が有効になっています: はい
                        第 2 レベルのアドレス変換: はい
                        データ実行防止が使用できます: はい

実行例 2

PS C:\WINDOWS\system32> systeminfo

ホスト名:               ********
OS 名:                  Microsoft Windows 11 Pro
OS バージョン:          10.0.22000 N/A ビルド 22000
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン ワークステーション
OS ビルドの種類:        Multiprocessor Free
...
... <中略>
...
Hyper-V の要件:         ハイパーバイザーが検出されました。Hyper-V に必要な機能は表示されません。

上記、実行例 1 のように「Hyper-V の要件」の項目がすべて「はい」になっているか、 実行例 2 のように既に動作中のハイパバイザーが検出された場合は、 WSL2 を実行するために必要な「Hyper-V の要件」は満たされています。

Hyper-V の要件が満たされてない場合は、BIOS や UEFI の設定画面から VT-x や VT-d を有効にする必要があります。 UEFI の設定画面に入るには、SHIFT キーを押しながら Windows の再起動を実行して、 「トラブルシューティング」→「詳細オプション」→「UEFIファームウェアの設定」に移動し、再起動します。 UEFI の設定画面に入ったら、Virtualization や VT-x、VT-d 等の項目を見つけて、 無効になっているものがあれば有効にしてください。

WSL 2 の実行ができない

WindowsOptionalFeature の VirtualMachinePlatform (仮想マシン プラットフォーム) が無効な状態で WSL の既定バージョンを 2 にして wsl --install -d Ubuntu すると、Ubuntu の初回起動時に以下のようなエラーが発生します。

PS C:\Users\USERNAME> wsl --install -d Ubuntu
Ubuntu は既にインストールされています
Ubuntu を起動しています...
PS C:\Users\USERNAME>
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/enablevirtualization
Press any key to continue...

この場合、powershell から wsl コマンドを実行してみると、以下のような案内が確認出来るはずです。

PS C:\Users\USERNAME> wsl
Windows の仮想マシン プラットフォーム機能を有効にして、BIOS で仮想化が有効になっていることを確認してください。
詳細については、https://aka.ms/wsl2-install を参照してください

前述の Hyper-V の要件が満たされてない場合は、案内に従って BIOS や UEFI の設定画面から VT-x や VT-d を有効にしてください。 UEFI の設定画面に入るには、SHIFT キーを押しながら Windows の再起動を実行します。

もし、Hyper-V の要件が既に満たされているのに、この案内が出る場合は、WindowsOptionalFeature の VirtualMachinePlatform (仮想マシン プラットフォーム) が無効になっているケースが考えられます。

管理者権限で実行した PowerShell から以下のコマンドで確認しましょう。

Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

もし管理者権限が得られない端末の場合でも、以下のコマンドを使うと状況の確認は可能です。

Get-WmiObject Win32_OptionalFeature |? Name -m VirtualMachinePlatform

実行例

PS C:\WINDOWS\system32> Get-WmiObject Win32_OptionalFeature |? Name -m VirtualMachinePlatform


__GENUS          : 2
__CLASS          : Win32_OptionalFeature
__SUPERCLASS     : CIM_LogicalElement
__DYNASTY        : CIM_ManagedSystemElement
__RELPATH        : Win32_OptionalFeature.Name="VirtualMachinePlatform"
__PROPERTY_COUNT : 6
__DERIVATION     : {CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER         : SURFACEPRO5
__NAMESPACE      : root\cimv2
__PATH           : \\SURFACEPRO5\root\cimv2:Win32_OptionalFeature.Name="VirtualMachinePlatform"
Caption          : 仮想マシン プラットフォーム
Description      :
InstallDate      :
InstallState     : 2
Name             : VirtualMachinePlatform
Status           :
PSComputerName   : SURFACEPRO5

上記 InstallState : 2 は Disabled を意味します。

VirtualMachinePlatform が無効になっていた場合、 管理者権限で実行した PowerShell から以下のコマンドで有効にします。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

管理者権限を得られない端末の場合は、以下のコマンドを用いて WSL の既定のバージョンを 2 から 1 に変更しましょう。

wsl --set-default-version 1

実行例

PS C:\Users\USERNAME> wsl --set-default-version 1
この操作を正しく終了しました。

wsl --status で現在の既定のバージョンが確認出来います。

wsl --status

実行例

PS C:\Users\USERNAME> wsl --status
既定のバージョン: 1
Windows の仮想マシン プラットフォーム機能を有効にして、BIOS で仮想化が有効になっていることを確認してください。
詳細については、https://aka.ms/wsl2-install を参照してください

あとは、インストール済みの Ubuntu を WSL 1 に変更するか、一旦 Ubuntu の登録を解除してから再度 install するために、 以下のいずれかのコマンドを実行しましょう。

wsl --set-version Ubuntu 1
wsl --unregister Ubuntu
wsl --install -d Ubuntu

仮想化ソフトウェア

WSL の導入後、仮想化ソフトウェアが動かなくなった

WSL2 は Hyper-V による仮想化機構を利用しているため、VMWare や VirtualBox 等、 他の仮想化機構を利用しているソフトウェアと競合して動作を妨げることがあります。

まず、「設定」→「アプリ」→「プログラムと機能」→「Windows の機能の有効化または無効化」 (以上の手順で C:\Windows\System32\OptionalFeatures.exe が起動する) から、 以下の項目を有効にして再起動する必要があります。

  • ☑ Windows ハイパバイザー プラットフォーム

管理者権限で実行した PowerShell から リスト 137 のコマンドを実行する事でも Windows ハイパバイザー プラットフォームを有効化することができます。

リスト 137 Windows ハイパバイザー プラットフォームをインストールするコマンド
Enable-WindowsOptionalFeature -online -FeatureName HypervisorPlatform

詳しくは以下の記事を参考にしてください。

Windows ハイパバイザー プラットフォームの有効化では問題を解決出来なかった場合は、 「Distro 毎の WSL バージョン変換」の方法で WSL1 にバージョンダウンして使う方法もあります。