Skip Navigation

TIL Steam requires symlinks when games are on external drives

I dont post often but I struggled to find a solution to my issue so I am trying to fix that very problem by adding a resource. Hope this helps someone.

I have moved my last windows pc to Linux Mint last weekend (I had some issues writing to my other USBs and had it lying around, technically I set out to try Fedora Silverblue but that may come later down the road now). I keep all my games and important files on secondary hdds and ssds in my machine as I've had data loss many times before from moving machines go Linux.

All went well, installation worked, but when I installed Steam, nothing showed up in the 'storage' page of the settings menu. "Hmm, it's probably a permission issue" I thought, if it cant see the drives it's not allowed to. Command used to debug this was:

 sh
    
ls -ld /media/gamedrive1 /media/gamedrive2

  

which showed root had read, write and execute access but I had read access.

So next I had to change /etc/fstab and make sure my drives were mounted correctly (using ntfs-3g driver instead of ntfs on one drive, and adding my users name as the owner and group owner).

This took me a minute to get right because it relies on the uuid of the drive, not the /dev/sdX identifier (I've been informed you can also use the /dev/disks/by-id/. It was super easy to do this through the gnome-disks utility, so I didn't need to keep editing the fstab file with nano and could see partition names.

I then I had drives visible in the 'Storage' settings in Steam (I did also switch from the downloaded deb file from steams website to the apt installation but I dont think I needed to).

I try to run a game, forget proton exists, retry to run the game with compatibility mode on, then get a 'Disk Write Error' for my /media/JoshCodes/gamedrive1/SteamLibrary/steamapps/downloading/random/file.

Super weird I think, but it's probably a cache issue, some dumb file from my windows machine that didn't get permission-ed properly for some reason - idk it was 10pm. I clear my cache, reset steam entirely, manually remove the files, nothing works. On a fluke, a troubleshooting step led me to a solution by way of it not working: I tried to create a symlink between the downloads folder on the main drive and the drive I had the game library installed on. The recommendation was to use:

 sh
    
ls -s /opt/steam/downloading /path/to/steamlibrary/downloading

  

Can't remember the error but it was something like "symlinks are not able to be created as they are not compatible with this file system". Oh dammit. This drive is on a filesystem that is incompatible (exFAT) with my other file systems for some reason. Someone smarter than me clarified that Steam and video games in general rely on symlinks, which are not supported on exFAT file systems, but will work on Windows for reasons I won't get in to.

Unfortunately I did have to move everything from my exFAT drive to a 3rd drive, reformat (just used ext4 as its native linux) and put all my files back on. At this point it was like 1am but I could open Civ V and Rocket League! Huzzah, crashed and went to bed. That's the first time I've really stuck with a problem that I wasn't familiar with, learned a shitload about mounting drives and just thought it through. A little help from the internet at the end but good outcome.

I hope that helps someone else!

Edit: Added commands and fixed formatting. Changed title as it was not correct as pointed out (Sorry, that's the first thing I typed and forgot to check that before posting). Added some info stolen from the comments on why symlinks don't work.

22 comments
  • You don't need symlinks for games to work. You need a filesystem that supports Unix file permissions. I have my games spread out across two drives with ext4 partitions no problem, works out of the box.

    • Okay well, this is what I get for trusting other commenters. I'm gonna do some research here and find out some specifics, then I'll change the title and post again lol

  • No it doesn't.

    Using windows filesystems on linux is simply not a good idea.

    NTFS in particular does not support the permission system Linux uses, at all. Linux is able to kind of pretend there's a working permissions system to access the files, but I've never gotten it to work well.

    • I've updated the title so it's more correct

      • Yeah no it doesn't require that either.

        You can add additional library folder locations from steam settings. As many as you like, on whatever drives you like. If they don't work that way, then something is wrong with the filesystem, and symlinking can't fix that.

        The downloads folder is just a temp file directory for game files while they are being downloaded, it's not where the games actually get installed. I'm not sure why symlinking that anywhere would make any kind of difference.

  • I’ll have to try on Linux but my portable disk is exFAT and I use it for Steam games on my MacBook (both native and Windows) with no issues. Though, that’s through the classic way of running Steam in Wine since there’s no Proton.

    Maybe Steam tries to put the Proton prefixes on the drive along with the games and that’s the problem? Wine certainly does need symlink capable FS to work.

    If there isn’t already, I’d report this on the Steam for Linux issue tracker (on GitHub for some reason).

    video games in general rely on symlinks

    No they don’t, any more than any other application. Video game files certainly don’t contain any symlinks usually.

  • You can use the human readable IDs under /dev/disks/by-id/ instead of UUIDs in /etc/fstab.

22 comments