movq

Wherein I Move A Lot of Words Around

A Nice Story about Steam on Linux

Once upon a time I had a Linux box acting as a home server. It was nice.

Then I wanted a home internet gateway/router and put it at the network edge. That, too was nice.

Then it was slow. Given where it was, that made everything slow. So, I rebuilt it as something bigger than it needed to be and put a SATA RAID in it, a dual Intel server NIC card, and installed Plex server on it. Then it was very nice.

Since it was serving AFP for my Macs, I chose XFS for the RAID filesystem. That, too was very nice.

Then I realized that when I was messing around with it and had to reboot it because of changes to the file or media server bits, the home internet was down. This made the lady unhappy, which made me unhappy. This was not nice.

So I took all the old parts out of the junk box and rebuilt the original machine and made it the internet gateway. That left the beefy machine doing media and files and general stuff I threw at it. For a long time, that was perfect.

Then one day I realized that the very nice CPU was idle more often than not, and that was a shame. So I got an Nvidia GTX 750 Ti card and a nice display and made a Linux desktop out of it. A Linux desktop with an 8TB internal RAID and an SSD boot drive. A machine more than powerful enough to play some games, really. To do so, however, would mean booting out of Linux and into Windows (generally) which I did not have a full copy of and generally did not want to. Which is when I remembered all my games are in Steam and Steam runs on Linux — and now I have a nice video card. This could be nice.

Could be. But there’s always one thing, and this time was no exception.

I installed Steam from the website and after many progress bars I pulled down Portal 2 to test with (because it’s nice). It wouldn’t start. Says it couldn’t find filesystem_steam.so and other random Steam shared libraries that, confusingly, were exactly where it said it couldn’t find them. I played with ldd and friends for a while and realized that Steam was simply insane because the World was in Order and Steam was confused.

So, I searched. Then I found. Staring at the screen, I sighed. Then I laughed. Then I made an annoyed grunt.

filesystem_steam.so doesn’t exist on large non-ext4 file systems

XFS support: Source games need to use stat64/64-bit ints or be compiled for 64-bit.

Warning to XFS users on linux.

Steam games won’t run from a separate hard disk. “I only have two XFS drives and this Ext4 SSD. The games work if I install them on the SSD.”

Steam on Linux: Many games won’t start? Read this!

It turns out that many games on Steam are still 32-bit games. I have a 64-bit CPU, OS, and — as luck would have it — a large enough filesystem that it’s using 64 bits for inode values (file IDs). Well, that’s generally not a problem when the disk is young and not full of files, but on a server RAID that’s had quite the long-standing history mine has, those file IDs are out of the 32-bit range. When code that’s using 32-bit inode values gets that large number it’s not valid, so it can’t open the file.

The solution was fairly simple. I went to Steam’s preferences and created a library on the ext4-formatted SSD boot drive (it had plenty of space for my small games) and installed the games there.

They run like a charm now. It’s nice.