WSL2上でcode
コマンドを使ってVSCodeを開こうとしたらハングしてしまった。WSL2の再起動や高速スタートアップを無効にしてもWindowsの再起動をしても治らないし、code
コマンドだけではなくexplorer.exe
もハングしてしまう。
調査していると、Windows上のパス(/mnt/c/
)だと問題なく動作することがわかった。そこで、code
も explorer.exe
も内部で利用しているであろう wslpath
がおかしいのではないかと思い、wslpath -m
を実行してみると以下のようになった。
$ wslpath -m / //wsl.localhost/Ubuntu/ $ wslpath -m /mnt/c C:/
WSL2上のパス(/
など)だと//wsl.localhost/Ubuntu/
のようになっていてなにかおかしい。WSL2上のパスは//wsl$/<ディストリビューション名>
のはずである。さらに調査していると、どうやら、Build 21354 で //wsl$/<ディストリビューション名>
から //wsl.localhost/<ディストリビューション名>/
に変更になり、今後はこちらが使われるらしい(現状は//wsl$/<ディストリビューション名>
でも開ける)。
しかし、//wsl.localhost/Ubuntu
でアクセスしてもハングしてしまいアクセスできない。このことから不具合の原因は wslpath
でもなく //wsl.localhost/Ubuntu
でアクセスできないことによるらしいことがわかった。また、ほかのディストリビューションでは問題なくアクセスできるのでWSL2自体に問題はなく、自分が使用している Ubuntu ディストリビューションが壊れているらしいことがわかった。
具体的にどこがおかしいか調査をしたかったが、いまいちわからなかったので Ubuntu をクリーンインストールしたところ治った。
なお、環境は以下のとおりである。
- OS: Windows 11 Pro
- バージョン: 21H2
- ビルド番号: 22000.466
- WSL:
- WSLバージョン: 0.51.2.0
- カーネル バージョン: 5.10.81.1
- WSLgバージョン: 1.0.30
- Linuxディストリビューション: Ubuntu 20.04.3 LTS
- WSLバージョン: 2