steam-runtime icon indicating copy to clipboard operation
steam-runtime copied to clipboard

Can't start container when automounts exist, with misleading error message about userns

Open kakra opened this issue 5 months ago • 4 comments

Your system information

  • Steam client version (build number): 1751405894
  • Distribution: Gentoo Linux x86_64 23.0
  • Opted into Steam client beta?: Yes/No
  • Have you checked for system updates?: Yes
  • Steam Logs: steam-logs.tar.gz
  • GPU: NVIDIA GeForce RTX 3080 Ti

Please describe your issue in as much detail as possible:

After some update to Plasma, the desktop seems to launch much faster and earlier. It looks like the network is not fully initialized, thus NFS automounts fail to mount if apps try to access it early. Steam's bwrap most likely trips over this:

# systemctl --user status app-steam\\[email protected]
● app-steam\[email protected] - Steam Autostart
     Loaded: loaded (/home/kakra/.config/autostart/steam-silent.desktop; generated)
     Active: active (running) since Sat 2025-07-05 13:58:38 CEST; 8min ago
 Invocation: 7841310b1c754a10a0c4be1e758e0334
       Docs: man:systemd-xdg-autostart-generator(8)
   Main PID: 4722 (bash)
      Tasks: 14 (limit: 37865)
        CPU: 3.173s
     CGroup: /user.slice/user-1000.slice/[email protected]/app.slice/app-steam\[email protected]
             ├─4722 bash /home/kakra/.local/share/Steam/steam.sh -srt-logger-opened -no-cef-sandbox -silent
             ├─4780 /home/kakra/.local/share/Steam/ubuntu12_32/steam-runtime/usr/libexec/steam-runtime-tools-0/srt-logger --sh-syntax --rotate=8388608 --log-directory /home/kakra/.local/share/Steam/logs --filename console-linux.txt --log-fd=7 --j>
             └─5131 /bin/zenity --error "--text=Steam now requires user namespaces to be enabled.\n\nThis requirement is the same as for Flatpak, which has more detailed\ninformation available:\nhttps://github.com/flatpak/flatpak/wiki/User-namesp>

Jul 05 13:58:38 jupiter steam-runtime-steam-remote[4747]: steam-runtime-steam-remote: Steam is not running: No such device or address
Jul 05 13:58:38 jupiter steam[4780]: steam.sh[4722]: Running Steam on gentoo 13.0 64-bit
Jul 05 13:58:38 jupiter steam[4780]: steam.sh[4722]: STEAM_RUNTIME is enabled by the user
Jul 05 13:58:38 jupiter steam[4780]: setup.sh[4835]: Steam runtime environment up-to-date!
Jul 05 13:58:44 jupiter steam[4780]: steam.sh[4722]: Log already open
Jul 05 13:58:45 jupiter steam[4780]: steam-runtime-check-requirements[5043]: W: Child process exited with code 1: bwrap: Can't bind mount /oldroot/ on /newroot/: Unable to apply mount flags: remount "/newroot/srv/laniakea/git": Operation not perm>
Jul 05 13:58:45 jupiter steam[4780]: steam.sh[4722]: Error: Steam now requires user namespaces to be enabled.
Jul 05 13:58:45 jupiter steam[4780]: This requirement is the same as for Flatpak, which has more detailed
Jul 05 13:58:45 jupiter steam[4780]: information available:
Jul 05 13:58:45 jupiter steam[4780]: https://github.com/flatpak/flatpak/wiki/User-namespace-requirements

The following prominent message is shown on the desktop: Image

Just clicking "OK" and running the Steam client again successfully launches it.

I think Steam should wait for network being available before working with NFS mountpoints - or maybe ignore them (although some users may need access to NFS mounts from within games).

At the very least, the error message is just wrong and misleading. The client doesn't properly detect the real error.

Steps for reproducing this issue:

  1. Setup NFS mounts (via systemd automounts)
  2. Configure the desktop for autologin
  3. Configure Steam to autolaunch in KDE Plasma
  4. Reboot

Additional information

# grep nfs /etc/fstab
laniakea-nfs:/volume1/backups           /srv/laniakea/backups   nfs     noauto,noatime,x-systemd.automount,nfsvers=4,x-systemd.idle-timeout=3600
laniakea-nfs:/volume1/casync            /srv/laniakea/casync    nfs     noauto,noatime,x-systemd.automount,nfsvers=4,x-systemd.idle-timeout=3600
laniakea-nfs:/volume1/git               /srv/laniakea/git       nfs     noauto,noatime,x-systemd.automount,nfsvers=4,x-systemd.idle-timeout=3600
laniakea-nfs:/volume1/video             /srv/laniakea/video     nfs     noauto,noatime,x-systemd.automount,nfsvers=4,x-systemd.idle-timeout=3600
laniakea-nfs:/volume1/music             /srv/laniakea/music     nfs     noauto,noatime,x-systemd.automount,nfsvers=4,x-systemd.idle-timeout=3600

My system does not use NetworkManager because it slows down boot considerably for me.

kakra avatar Jul 05 '25 12:07 kakra

Jul 05 13:58:45 jupiter steam[4780]: steam-runtime-check-requirements[5043]: W: Child process exited with code 1: bwrap: Can't bind mount /oldroot/ on /newroot/: Unable to apply mount flags: remount "/newroot/srv/laniakea/git": Operation not perm>

I assume there would be an "Operation not permitted" here if you look at the non-truncated log.

The error message is oversimplifying because it can't reliably tell the difference between "bwrap failed to run because user namespaces are disabled" (the most common reason) and "bwrap failed to run for some unrelated reason"; but either way, none of what Steam does with containers is going to work here, because bwrap doesn't have permission to do some of what it needs to do (locally remount mount points as nosuid,nodev). I assume this would work on NFS mounts if the NFS mount was active (really mounted), but does not work on an inactive automount?

https://github.com/containers/bubblewrap/issues/653 would likely avoid this.

smcv avatar Aug 07 '25 14:08 smcv

@kisak-valve please could you retitle this to something along the lines of "can't start container when automounts exist, with misleading error message about userns"? The interaction with automounts is the main problem here, and misleading error message is secondary.

I think Steam should wait for network being available before working with NFS mountpoints - or maybe ignore them

At the point in its startup at which compatibility with the container framework is checked, Steam doesn't yet know whether the network is available, whether automounts exist, or whether they are going to get mounted any time soon. The command that it's testing is something along the lines of bwrap --bind / / true, which has no idea whether Steam is going to interact with /srv.

smcv avatar Aug 07 '25 15:08 smcv

I assume this would work on NFS mounts if the NFS mount was active (really mounted), but does not work on an inactive automount?

"running the Steam client again successfully launches it" suggests that the answer is yes: real NFS mount points can be remounted nosuid,nodev, but automount points acting as a placeholder for where NFS might appear later cannot be remounted.

smcv avatar Aug 07 '25 15:08 smcv

suggests that the answer is yes

Confirming.

kakra avatar Aug 07 '25 18:08 kakra