Closed dyharlan closed 2 years ago
I also run into the same error here.
This issue seems specific to the latest version of WSL on MS Store (0.60.0), where it uses a bind mount to handle /etc/.X11-unix
instead of symlink previously. (See WSL 0.60.0 release page)
For now, a workaround is to downgrade WSL to previous version, versions before 0.60.0 works with distrod without this issue.
Describe the bug
XWayland under WSLg doesn't work anymore when installing Distrod. It seems like systemd is ignoring the x11.conf that allows the distro to bind-mount /mnt/wslg/.X11-unix to /tmp/.X11-unix
Otherwise, wayland apps run fine.
I am using systemd 251.2-1 Also, I'm using the Windows Store version of WSL.
Steps to reproduce
Expected behavior
For .X11-unix to be properly bind-mounted in /tmp and run XWayland apps.
Windows version
Microsoft Windows 11 21H2 [Version 10.0.22000.708]
Linux kernel version
5.10.102.1-microsoft-standard-WSL2
Distro
ArchWSL 22.3.18.0
How did you install that distro?
Enabled
distrod
in an existing WSL2 distroLogs
[Distrod][DEBUG] distrod-exec: exec_command_in_distro [Distrod][DEBUG] starting /init from distrod-exec [Distrod][DEBUG] WSL envs: "WSL_INTEROP" = "/run/WSL/8_interop" [Distrod][DEBUG] WSL envs: "WSL_DISTRO_NAME" = "ArchLinux" [Distrod][DEBUG] WSL envs: "WSLENV" = "WT_SESSION::WT_PROFILE_ID" [Distrod][DEBUG] Container::with_mount source: Some(HostPath("/run/distrod/cmdline")), target: ContainerPath("/proc/cmdline"), fstype: None, flags: MS_BIND, is_file: true [Distrod][TRACE] mount_distrod_run_files: path: "/opt/distrod/run/systemd" [Distrod][TRACE] mount_distrod_run_files: path: "/opt/distrod/run/systemd/system" [Distrod][TRACE] mount_distrod_run_files: path: "/opt/distrod/run/systemd/system/portproxy.service" [Distrod][DEBUG] Container::with_mount source: Some(HostPath("/opt/distrod/run/systemd/system/portproxy.service")), target: ContainerPath("/run/systemd/system/portproxy.service"), fstype: None, flags: MS_BIND, is_file: true [Distrod][TRACE] mount_distrod_run_files: path: "/opt/distrod/run/tmpfiles.d" [Distrod][TRACE] mount_distrod_run_files: path: "/opt/distrod/run/tmpfiles.d/x11.conf" [Distrod][DEBUG] Container::with_mount source: Some(HostPath("/opt/distrod/run/tmpfiles.d/x11.conf")), target: ContainerPath("/run/tmpfiles.d/x11.conf"), fstype: None, flags: MS_BIND, is_file: true [Distrod][DEBUG] DistroLauncher::launch [Distrod][DEBUG] Container::with_mount source: Some(HostPath("/run/distrod/distrod_wsl_env-uid1000")), target: ContainerPath("/run/distrod/distrod_wsl_env-uid1000"), fstype: None, flags: MS_BIND, is_file: true [Distrod][DEBUG] Spawning the command or the waiter. [Distrod][DEBUG] Executing a command in the distro. [Distrod][DEBUG] Failed to ignore signal Sys(EINVAL) [Distrod][DEBUG] Failed to ignore signal Sys(EINVAL) [Distrod][DEBUG] Distro::exec_command. [Distrod][DEBUG] Container::exec_command. [Distrod][TRACE] mounting source: Some( ContainerPath( "/run/distrod/cmdline", ), ), mount: ContainerMount { source: Some(HostPath("/run/distrod/cmdline")), target: ContainerPath("/proc/cmdline"), fstype: None, flags: MS_BIND, data: None, is_file: true } [Distrod][TRACE] mounting source: Some( ContainerPath( "/opt/distrod/run/systemd/system/portproxy.service", ), ), mount: ContainerMount { source: Some(HostPath("/opt/distrod/run/systemd/system/portproxy.service")), target: ContainerPath("/run/systemd/system/portproxy.service"), fstype: None, flags: MS_BIND, data: None, is_file: true } [Distrod][TRACE] mounting source: Some( ContainerPath( "/opt/distrod/run/tmpfiles.d/x11.conf", ), ), mount: ContainerMount { source: Some(HostPath("/opt/distrod/run/tmpfiles.d/x11.conf")), target: ContainerPath("/run/tmpfiles.d/x11.conf"), fstype: None, flags: MS_BIND, data: None, is_file: true } [Distrod][TRACE] skipping an identical mount: Some( ContainerPath( "/run/distrod/distrod_wsl_env-uid1000", ), ), ContainerMount { source: Some( HostPath( "/run/distrod/distrod_wsl_env-uid1000", ), ), target: ContainerPath( "/run/distrod/distrod_wsl_env-uid1000", ), fstype: None, flags: MS_BIND, data: None, is_file: true, } [Distrod][DEBUG] Triple fork done. [Distrod][DEBUG] dropping privilege. kmsg logging in the child ends here. [Distrod][DEBUG] The parent of the second of three forks exits. [Distrod][DEBUG] Spawning the command or the waiter. [Distrod][DEBUG] Spawning the waiter. [Distrod][DEBUG] Failed to ignore signal Sys(EINVAL) [Distrod][DEBUG] Failed to ignore signal Sys(EINVAL)
additional comment
No response