protonscr

Proton 5.0-5 fails to extract bin folder on NTFS

protonopen
ValveSoftware/Proton#3680 · opened 2020-03-23 by BlueGoliath · updated 2020-04-05 · 6 comments · github
BBlueGoliath 2020-03-23 github

On Proton 5.0-5 the "bin" folder within the "dist" folder will fail to extract from the archive when Proton is on NTFS. The "bin" folder may be extracted manually by opening the archive and dragging the "bin" folder from within to the "dist" folder and games should then launch. All other folders from the archive extracts correctly.

On earlier versions of Proton(4.11-13), this also fails. The extraction script, however, seems to work differently in that when it fails to extract the "bin" folder it will delete the "dist" folder and try again... only to fail over and over.

All of this is repeatable after multiple Proton install moves between the Linux drive and the NTFS one and reboots.

Distro: Arch Linux(up-to-date)
Windows chkdsk: no disk errors detected.

I'm guessing this is a bug with a system package, but no clue which.

Aaeikum 2020-03-23 github

Using Proton with Steam libraries on NTFS isn't recommended. I'd suggest switching to a Linux filesystem. If you must stick with NTFS, can you try looking further into why extracting bin fails? There might be some revealing output from the proton script if you run Steam in a terminal.

BBlueGoliath 2020-03-23 github

Using Proton with Steam libraries on NTFS isn't recommended. I'd suggest switching to a Linux filesystem. If you must stick with NTFS, can you try looking further into why extracting bin fails? There might be some revealing output from the proton script if you run Steam in a terminal.

I'm aware. This, however, never used to be an issue. It only started recently, which makes me think that a system package is borked.

Unless i'm missing something, there is no error message from the Proton script. The only error is when Steam attempts to execute wineserver from bin.

If there was a feature-rich alternative filesystem that works on both Windows and Linux i'd use it, but there isn't AFAIK. UDF support in botch Linux and Windows is borked.

Aaeikum 2020-03-23 github

Could be a bug, or some bad error handling, in Python's tar extraction, I guess.

If you're able to successfully extract the dist tar by hand, something like this should work:

cd Proton\ 5.0/
mkdir dist/
tar  -C dist/ -xf proton_dist.tar
cp version dist/version

Proton should only wipe the dist/ directory if the version files don't match (the one that lives in the tar has a different version tag, so you have to overwrite it; I should fix this).

BBlueGoliath 2020-03-23 github

Given that it can be extracted by hand, would it be safe to rule out any possibility that the cause is NTFS?

Aaeikum 2020-03-23 github

I can't say that without more information. For example maybe the Python tar extraction is failing because it's trying to set some file attribute which NTFS doesn't support.

WWaistless 2020-04-04 github

I would propose that when steam detects a library on an NTFS drive, steam symlinks the proton folder to the one in the main steam installation (i.e $HOME/.steam). I would strongly suggest this happen this for the compatdata folder as well since it can create invalid file names for an NTFS filesystem (drive symlinks such as C: Z:)

It might even preferable to do this automatically for all steam libraries. Because lets say you install a proton game in library A, and a proton game in library B, you'll have the same version of proton installed in both libraries A and B, when a simple symlink would cut down on used space.

Also, when automounting with fstab, make sure the user using steam with this drive has full ownership, for example uid=1000,gid=1000,rw,user,exec,umask=000

defaults actually works with most proton games, but in rare situations such as Doom Eternal, it was causing crashes on startup, rectified by setting ownership.

If you want to have a steam library shared across Windows and Linux, here's how I set mine up to avoid any conflict or filesystem issue:

  • Create a separate folder i.e SteamLinux on that drive to use as the library

Symlink the following to their Windows steam library counterparts:

  • The common folder
  • Each appmanifest_steamgameid.acf file for the steam games you want to use. When installing new games to this drive from linux, move the appmanifest file across and symlink it, then restart steam.
    This way, game updates are tracked across both operating systems and should never re-download unnecessarily.

Symlink the following to your home linux drive counterparts:

  • Each proton version folder within common
  • The compatdata folder

Proton versions