エラー概要
コマンドプロンプトからwlsコマンドを実行してログインしようとすると、以下のようなエラーメッセージが出力されてログインできないケースがあります。
本稿はこの事象の原因と対応を記したものとなります。
wslコマンド実行時エラー
C:\Users\yourname>wsl
Processing fstab with mount -a failed.
<3>WSL (18) ERROR: CreateProcessEntryCommon:370: getpwuid(0) failed 2
<3>WSL (18) ERROR: CreateProcessEntryCommon:374: getpwuid(0) failed 2
<3>WSL (18) ERROR: CreateProcessEntryCommon:577: execvpe /bin/sh failed 2
<3>WSL (18) ERROR: CreateProcessEntryCommon:586: Create process not expected to return
原因
WSLのデフォルトディストリビューションが、「docker-desktop-data」など、OSとしてログインできないものになっている場合に発生するようです。
WSLのデフォルトディストリビューション確認
C:\Users\yourname>wsl --list
Windows Subsystem for Linux Distributions:
docker-desktop-data (Default)
Ubuntu
docker-desktop
以下のようなシチュエーションで発生します。
- Docker Desktop for Windowsをインストールし、またWSLのUbuntuディストリビューションをインストールする。
- Ubuntuディストリビューションを初期化するため、 これをアンインストール/インストールする。
それまではデフォルトディストリビューションがUbuntuであったものが、アンインストールした時点でほかのものに変わってしまうことが原因です。
対処法
デフォルトディストリビューションをUbuntuなど、OSとしてログインできるものに変更します。
デフォルトディストリビューションの変更
C:\Users\yourname>wsl --setdefault Ubuntu
The operation completed successfully.
デフォルトディストリビューションが変更されたことを確認します。
デフォルトディストリビューションの変更
C:\Users\yourname>wsl --list
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
docker-desktop-data
docker-desktop
これで、wslコマンドでログインできるようになります。
wslコマンドによるログイン
C:\Users\yourname>wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
yourname@YOURHOST:/yourname/c/Users/yourname$