ふるきのガベージコレクション2

脳内を通り過ぎたイメージの残骸の記録

WSL2でWindowsバイナリが動かない

WSLのアップデートでWindowsのバイナリ(win32yank.exe)が動かなくなったので対策。
(情報源)
https://tech.buty4649.net/entry/2023/04/21/170643
https://qiita.com/shigeokamoto/items/5cc30443d579808bf15b

原因はsystemdが動いている環境では、systemd-binfmtというサービスが動いてバイナリの起動処理の設定をするようなのだが、このサービスは設定ファイルがないと何もしないが、設定ファイルが存在すると動作する。これまでは設定ファイルがなくて動作しない状態だったのだが、python3関連の設定が追加されたため、このサービスが動作するようになりこのサービスと排他的に動いていたWSLInteropという設定が自動起動されなくなって、Windowsバイナリが動かなくなったらしい。

対策は以下の手順でWSLInteropのsystemd-binfmt用設定を追加すること。
$ echo ":WSLInterop:M::MZ::/init:PF" | sudo tee /usr/lib/binfmt.d/WSLInterop.conf
$ sudo systemctl restart systemd-binfmt
=> 無事、Windowsバイナリが動作するようになった。