With SMB networked drive, it will be missing a lot of file system features that wine relies on.
what exact file system features are required for proton that CIFS doesn't provide?
Just to clarify your issue is related to symbolic linking the entire common library, including proton, and not specific games correct?
Yes, I believe so. It's been a while since I tried to install a proton app on the share, so let me try it again and I'll report back. The issue might've been resolved since then.
Yes, I believe so. It's been a while since I tried to install a proton app on the share, so let me try it again and I'll report back. The issue might've been resolved since then.
Well my issue is that when you create the library on steam within NFS/Samba it can't launch proton games. But if you symbolic link the games manually from local -> Samba it works fine. I tried the entire common folder at one point, didn't work though from my initial testing.
If your issue is something different, not sure why my help request was closed and linked here. :)
Hello @tsalwierz, this is a substantially different scenario than you described in https://github.com/ValveSoftware/steam-for-linux/issues/6538. My understanding is that the game dependencies that get installed on first run of a game are handled by Proton when it is enabled and not the Steam client, which makes the Proton issue tracker the right place to investigate your issue instead of the steam-for-linux issue tracker.
The free space check is separate and being tracked at https://github.com/ValveSoftware/steam-for-linux/issues/1496.
Mount samba drive with mfsymlinks to solve this issue.
To properly support posix symlinks over SMBv3 it requires POSIX Extensions, which is not implemented yet in Linux.
Server side: Add server min protocol = NT1 to smb.conf (if you run Samba >= 4.11)
Client side: Mount with vers=1.0
Problem: Symlinks pointing to /dev/* can be created, however hidden from the mount point. Reason unknown (I rg'ed the codes of CIFS module and Samba server really quickly, didn't find much info. I'd appreciate it if anyone can provide some insights).
Some filenames are not shown correctly cos they are reserved in MS Windows when mounting a Samba share with mfsymlinks and SMBv3. For instance,
$ touch com1
$ ls
CR23RR~9
Thankfully the kernel can still recognise the original filenames and so far I haven't noticed any side-effects. If this is a concern, I found out that this can be avoided by using mfsymlinks with SMBv1.
Finally another issue with Samba, or any network fs perhaps, is that Wine seems to do quite a lot of (random?) IO during initialisation. (~1min for my game to load over a gigabit ethernet link.) If you only access the Steam library via 1 or 2 machines, it's probably better to keep the Wine directory on your local disk, e.g. ln -s ~/.local/share/Steam/steamapps/compatdata /to/samba/SteamLibrary/steamapps/compatdata.
My Samba share works great on Windows but not on Linux. When I click on "PLAY" the game tries to load for one second and then says "PLAY" again indicating that it never ran. There are no Steam logs generated for my games, either.
Here are my mount options:
$ mount | grep smb
\\<SERVER_HOTSNAME>\<SAMBA_SHARE> on /smb type cifs (rw,relatime,vers=1.0,cache=strict,username=<USER>,uid=1000,forceuid,gid=1000,forcegid,addr=<IP_ADDRESS>,10,soft,unix,posixpaths,serverino,mapposix,acl,mfsymlinks,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,_netdev)
Here are the related Samba settings I am using that, from what I have read, are required:
[global]
acl allow execute always = yes
server min protocol = NT1
All of the server and client settings mentioned in this GitHub issue have already been applied. I have also tried with (and without) a symlink to my local drive for the compatdata folder.
Interestingly enough, manually running Proton games outside of Steam works perfectly fine.
STEAM_COMPAT_DATA_PATH="$HOME/.steam/steam/steamapps/compatdata/448510" WINEPREFIX="$HOME/.steam/steam/steamapps/compatdata/448510/pfx" "$HOME/.steam/root/compatibilitytools.d/Proton-6.1-GE-2/proton" run /smb/steam/steamapps/common/Overcooked/Overcooked.exe
UPDATE 1: I have tracked down a permissions issue (none of my files are executable) and confirmed it is an issue with my Samba server configuration. I will report back with my findings once I get it all figured out.
UPDATE 2: In one terminal I started steam-runtime so I could see the Steam output. In terminal two, I started a game with steam-runtime steam://launch/976730/option1 (Halo MCC without EAC). In terminal one, I saw the permission error. A Steam Linux Runtime script was not executable.
/bin/sh: line 1: /smb/steam/steamapps/common/SteamLinuxRuntime_soldier/_v2-entry-point: Permission denied
The Samba container I was using provided a very opinionated configuration file that forced files to be non-executable. I had to remove the following global configuration options (alternatively, though not recommended, a person can reconfigure these to make all files executable) and restart the server:
Then I deleted the Steam Linux Runtime files and verified files via Steam so that it could redownload the files with the correct permissions.
$ rm -rf /smb/steam/steamapps/common/SteamLinuxRuntime_soldier/*
It works perfect now! Hope this helps others in the future.
proton 6.1-ge-2x1 2021-03STEAM_COMPAT_DATA_PATH="$HOME/.steam/steam/steamapps/compatdata/448510"x1 2021-03WINEPREFIX="$HOME/.steam/steam/steamapps/compatdata/448510/pfx"x1 2021-03
Feature Request
I confirm:
contain this feature already.
Description
When exporting my ~/.local/share/Steam/steamapps/common to an SMB networked drive, native apps run but Proton apps break without any clear reason. I'd like to be able to run network attached games.
Justification [optional]
Frankly, I don't know whether this is a Wine or a Proton problem, but I figure that since the feature will be uniquely usable in Steam it doesn't really need to be done in upstream.
Risks [optional]
References [optional]