どうやら、こんな事が起きてるらしい
- WSL2 が boot した時に
/mnt/wslg/.X11-unix
を/tmp/.X11-unix
にマウントする - distro が起動した後 systemd が
tmp.mount
ターゲットを起動して/tmp
が再マウントされるBefore=local-fs.target
になってる
- その結果、
/tmp/.X11-unix
が消えてしまう
とりあえず解決策としては、/etc/fstab
に /tmp
を書いてあげれば tmp.mount
より優先されるから問題が解決するっぽい。
- fstab は WSL が処理してくれる
/mnt/wslg/.X11-unix
は fstab の後にマウントされるtmp.mount
は/tmp
があれば動かない
fstab:
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs rw,nodev,nosuid,noatime 0 0
tmpfs /var/tmp tmpfs rw,nodev,nosuid,noatime 0 0
- https://wiki.archlinux.org/title/Tmpfs
- microsoft/WSL#1278
- microsoft/WSL#11739
- https://learn.microsoft.com/en-us/windows/wsl/wsl-config#automount-settings
/run/user/<uid>/waynald-0
が消えるやつ。こんな事が起きてる。
- WSL にユーザーが (最初に?) ログインした時に
/run/user/<uid>/wayland-0
や/run/user/<uid>/pulse/native
等を/mnt/wslg/runtime-dir
から symlink してる - その後 systemd で
[email protected]
->[email protected]
と動いて、[email protected]
が/usr/lib/systemd/systemd-user-runtime-dir
を使って/run/user/<uid>
を tmpdir でマウントする - WSL が作った user runtime-dir が上書きされて
wayland-0
がなくなる。
/usr/lib/systemd/systemd-user-runtime-dir
が動かないようにすればいい。
cat <<EOF | sudo systemctl --stdin edit [email protected]
[Service]
ExecStart=
ExecStart=/bin/true
ExecStop=
ExecStop=/bin/true
EOF
[email protected]
の mask だと [email protected]
の起動に失敗するからやめた方が良い。
/var/run/user/1000/wayland-0
がないのは[email protected]
で上書きされるからっぽい。けど、これを mask すると
[email protected]
が開始できなくて、それはそれで困る。