

TL;DR: Don’t use NTFS on Linux, especially for games. Not because the Linux driver is bad, but because Windows itself introduces compatibility issues, and the workaround breaks Wine.
It’s not just Valve. Wine itself doesn’t work right if the wineprefix is located on an NTFS filesystem because not even Windows is fully compliant with the NTFS specs.
The reason: colons. The device file names in WINEPREFIX/dosdevices
are named in the Windows style, like c:
, d:
, etc. This is not an issue with ext* filesystems, but presents a conflict when NTFS and Windows become involved. The :
character is not specified by NTFS as a reserved character, but it is reserved by Windows to separate the drive letter in paths. You can create a file containing a colon in its name on an NTFS filesystem without problem, but doing so will make the drive unmountable in Windows. I know because I’ve done it.
To overcome this, NTFS filesystems in Linux can be mounted using the windows_names
option (specified in /etc/fstab
or the mount
command). This will raise an error if you try to create a filename that contains a Windows-reserved character. As a result, Wine can’t create the dosdevices
files because their names contain colons.
The reason Valve specifically recommends against this is because the Steam library contains both the game content files (SteamLibrary/steamapps/common
) and the wineprefixes (SteamLibrary/steamapps/compatdata
), meaning that creating the library on an NTFS filesystem will necessarily create the wineprefixes on the same filesystem. Again, you could just mount it without the windows_names
option, but that would immediately make it unmountable in Windows, and you’d be better off reformatting it as ext4 or btrfs.
(edit) I should probably explain what a wineprefix is.
Wine (and Valve’s fork Proton) is a compatibility suite that presents a Windows-like runtime environment to Windows programs and translates their calls to their Linux equivalents. One part of that is the wineprefix. It’s a directory that contains device files needed by Windows (drives and COM interfaces), the registry files, and a miniature C: drive containing reimplemented essential Windows software (cmd, explorer, Internet Explorer, etc) and an isolated userdir. When you launch a Windows app, it will see this directory as the C: drive, it will install dependencies (e.g. the Visual C++ Runtime) here, and the game’s save files will also be located there.
Steam creates individual wineprefixes for every game inside the SteamLibrary/steamapps/compatdata
directory, identified by the game’s Steam ID. For example, the wineprefix of Baldur’s Gate 3 on my computer is located at /games/SteamLibrary/steamapps/compatdata/1086940
.
Not me, but I was assigned to train a new machine operator at a factory, and he lasted about 80 minutes. I could barely explain the scope of his responsibilities. He went on a scheduled break and then I never saw him again.
I didn’t blame him, morale was low because of COVID and supply chain issues, and he started on a night shift.