最近、おそらくUbuntuのアップデート*1をしてからというもの以下の現象が起こっている。
- systemctl status --userを実行すると No such file or directory となってエラーになる
- wl-copyやwl-pasteを実行すると Failed to connect to a Wayland server となってエラーになる
どちらのコマンドも私にとってはかなり重要なコマンドなのでこれがないと生産性が大きく落ちるのでなんとかしたく調査した結果、一応の復旧はできたのでメモしておく。
環境
- WSL
- WSL バージョン: 2.0.0.0
- カーネル バージョン: 5.15.123.1-1
- WSLg バージョン: 1.0.57
- MSRDC バージョン: 1.2.4485
- Direct3D バージョン: 1.608.2-61064218
- DXCore バージョン: 10.0.25880.1000-230602-1350.main
- Windows バージョン: 10.0.22621.2283
- Ubuntu-23.04
systemctl status --userのエラーの解決方法
どうもwslにログインしたときにsystemd-logindが起動していない?ようなので以下のコマンドを実行して手動で起動させるとエラーが解消されるはず。
$ sudo systemctl start user@1000
上記のコマンドを実行後は正しく実行できるようになるはず。
$ systemctl status --user ● MYPC State: running Units: 149 loaded (incl. loaded aliases) -- snip --
Failed to connect to a Wayland serverの解決方法
Wayland自体は起動しているが、WaylandとアクセスするためのUnixドメインソケットが存在していないのが原因のようだった。
WSLgが提供するWaylandのUnixドメインソケットファイルは /mnt/wslg/runtime-dir
配下にある。
$ ls /mnt/wslg/runtime-dir/
dbus-1 pulse wayland-0 wayland-0.lock
これらのファイルへのシンボリックリンクを /run/user/1000
配下に作れば解決する。
$ ln -s /mnt/wslg/runtime-dir/wayland-0* /run/user/1000/
これで解決するはず。
参考
systemd
doesn't create user (d)bus · Issue #8842 · microsoft/WSL- When enable systemd the gui not work · Issue #140 · microsoft/wslg
*1:apt updateしてからこの挙動になったのでUbuntuのアップデートを疑っている。直近でsystemd-252.5-2.ubuntu3.1になっているのでこのバージョンが怪しい?