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:
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:
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.
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.
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
It probably just needs the drives use a format with unix file permissions. I have a mix of ext4 and btrfs and Steam has never had issues with that.
Me too: My mix of btrfs and ext4 doesn’t give steam any issues.
Yep, updated the title to be more correct
A good writeup, but the wrong conclusion. I used exFAT for a while for my secondary drive. It has nothing to do with what your primary drive is, but exFAT’s hard limitations. The largest of which is that as you assumed, exFAT does not support symlinks which in gaming is extremely important. That’s why reformatting to ext4 worked.
why is it important, and where is it used, though? on windows you cant make symlinks without admin rights by default, and steam usually does not need admin rights to install a game
No it doesn’t… I have an ext4 drive, btrfs drive, and NTFS drive. Each one with games on it through steam
I’ve updated the title so it’s more correct
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.
exFAT is an extension of the FAT32 filesystem that allows for larger drive sizes and file sizes and is mostly used on SD cards. Despite the name similarities it has nothing to do with the ext filesystem, and won’t support the same features as it (such as symlinks).
Exfat is just a bad filesystem. Many Linux programs require a fully functional filesystem, including unix-style permissions.
Wine/Proton is just plain buggy on NTFS drives.
Ext4, BTRFS work fine, that’s my current setup.
exFAT apparently doesn’t support symlinks so that is the problem, not the interaction between ext4 and exFAT.
definitely not true as my laptop(not my main gaming device) has both my windows and linux drives (seperate ssds) with different formats. Linux is on btrfs, and windows on ntfs. my steam on windows works perfectly fine on storing games on my btrfs portion. (i do it sometimes because linux is on my larger SSD). id imagine its how steam, or some elemement on steam on linux, handles NTFS
As some other commenters are saying, it’s an exFAT symlink issue (theyrr not supported). I’ve not had issues with ntfs so far.
I have had no issues. You just have to add the drive in steam settings. It let’s you add separate drives to the list since it defaults to the steam install drive, and then choose which is your default for game files.
This is plainly incorrect
EDIT: nvm OP has edited the post
You can use the human readable IDs under
/dev/disks/by-id/
instead of UUIDs in/etc/fstab
.