So, I discovered weird behavior when trying to play games on an NTFS file system in Linux.

When i auto mount the drive through a fstab entry, it is only able to launch Linux native games (I think I read somewhere that this is a permission issue).

However, if I mount it through steams “select a drive” option, it works without a problem (so far at least).

I assume this is again a permission issue, as when I mount the drive through steam, I get a Polkit password prompt.

Anyone got a clue what’s going on, and/or maybe a way to make the auto mount work, so I don’t have to manually mount it after every boot?

Distro:

Arch

Kernel (according to neofetch):

6.11.1-zen1-1-zen

NTFS driver:

ntfs-3g

Proton version:

GE-Proton9-10

tested games:

  • Terraria (Tmodloader)
  • Project Wingman
  • Hades II

fstab entry:

#/dev/nvme1n1p1

UUID=E01A2CEC1A2CC180 /mnt/games ntfs nofail 0 3

full system update a few hours ago

date for future visitors (dd.mm.yyyy):

01.10.2024 at 14:44 (02:44 pm)

edit: formatting and adding proton version

  • rtxn@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    3 hours ago

    NTFS doesn’t support symlinks

    It does. You can create them on Windows using the mklink command. It creates a file link if no switch is passed, directory link with /D, directory junction (different thing) with /J, and hardlink with /H. The ntfs-3g driver has complete support for links.

    Some Windows programs, like the Scoop package manager, make extensive use of symlinks and directory junctions.

    • muhyb@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      3 hours ago

      Huh, interesting. Didn’t know about mklink. So with this, can Steam games be used from NTFS directory?

      • rtxn@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        2 hours ago

        Not really, because some files in the wineprefix will have invalid names.

        When an NTFS volume is mounted, it implicitly uses the windows_names option, which restricts the character set that can be used in filenames, in order to preserve compatibility with Windows. The specific character in question is the colon – it is permitted by NTFS, but it’s a reserved character in Windows, which means it is also restricted by the windows_names mount option. This prevents Wine from creating its c: and z: symlinks, which are required for Wine to operate.

        You could try some symlink fuckery, like linking .../steamapps/common to the NTFS drive, since all of the problematic files are located outside of that, in .../steamapps/compatdata. Or you could mount the NTFS volume directly to the common directory. If you do, I’d love to hear the results.

        Relevant issue: https://github.com/storaged-project/udisks/issues/713

        • muhyb@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          2 hours ago

          That makes sense. Thanks for the detailed reply.

          Though you could ask this to OP, they might try it. Personally I don’t use NTFS even on my external HDDs.