ぶていのログでぶログ

思い出したが吉日

WSLでsystemctl status --userがNo such file or directoryになる / Failed to connect to a Wayland serverとなってWalyandにつながらない

最近、おそらく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/

これで解決するはず。

参考

*1:apt updateしてからこの挙動になったのでUbuntuのアップデートを疑っている。直近でsystemd-252.5-2.ubuntu3.1になっているのでこのバージョンが怪しい?