22H2 が出始めたあたりからか、仕事で使っている Windows11 環境で WSL を使おうとすると次のようなエラーが出て利用できない状況が発生している
❯ wsl
スタブは正しくないデータを受信しました。
Error code: Wsl/Service/0x800706f7
根本解決までいかないものの、対処療法を見つけたのでメモしておく。( 大分前に toot はしていたのだけど、改めてまとめる)
結論
この記事執筆時 2023-03-13 時点では、以下を管理者権限のPowerShellなりcmdで実行してsocket接続のリセットをすればOK 1
❯ netsh winsock reset
Winsock カタログをリセットしました。
リセットを完了するためにコンピューターを再起動する必要があります。
ひとつ注意があり、実行後に「リセットを完了するためにコンピューターを再起動する必要があります」と表示がされるが、WSLを使いたいのであれば 再起動はやってはいけない。再起動するまでのひと時の間のみ、WSLが利用できるようになる。
このコマンドはWindowsを起動するたびにやらなければならないのが面倒ではあるが、Dockerも依存しているのでWSLそのものが使えないよりははるかにマシである。(なので、この方法はあくまでも対処療法)
余談1: この件のIssueは立っている
ちなみにこの件は WSL に Issue は立っている
この対処療法も次のコメントで発見した。
In my case using this cmd solved the issue:
netsh winsock reset
https://github.com/microsoft/WSL/issues/9413#issuecomment-1370201447 より
余談2: 原因が本当によくわからない
この件は本当に原因がよくわからない。(自分のWindows関連の知識不足というのももちろんあるのだが)
そもそもで、この現象はプライベートで使っている、同じく windows11 環境では発生していない。なので最初は業務PC特有のウィルスソフトや監査周りのツールを疑ったが、社内で協力を得て切り分けするも「これが原因である」というものを特定するには至らなかった。
Issue が上がっていることから、おそらくウィルスソフト・セキュリティソフトとの相性の悪さという話では無いのかもしれない。
いずれにせよ、毎回コマンドが必要なのは億劫なところではあるので1日も早い根本解決を願うのみ...
-
スクリーンショットの sudo は scoop でインストール可能な Windows 向けの sudo コマンドを利用している ↩