Steam on Debian Stable

I like the idea of being able to play games on Linux, so the announcement of Steam for Linux was a big thing. Too bad Debian Stable has too old C-library for it. During the past year I’ve occasionally tried to get Steam running on Debian Stable (Wheezy) with usually little success. Currently I think installing Debian Testing (Jessie) to a chroot is the most easiest way. It is not as complicated as it may first sound.

One catch is that you need to be running the same version of NVIDIA’s drivers inside the chroot and outside of it so they need to be built.

On my gaming PC I use self-compiled kernel and the latest drivers from NVIDIA. On my media box in the living room I have some old integrated NVIDIA chip. Trine 2 runs nicely on my Gaming PC (GTX 760) and awfully on the integrated chip. I assume it’s about the chip and not about the different driver version (319.72 vs 331.20) and I doubt I’ll install the latest drivers just to verify that.

Update NVIDIA drivers from Jessie:
(Updated 11.06.2014)

Inside the chroot:

$ cd $HOME
$ mkdir nvidia
$ cd nvidia
$ apt-get source nvidia-driver

And then outside the chroot:

$ cd $HOME/nvidia
$ cd nvidia-drv-
$ dpkg-buildpackage -b
$ cd ..
$ sudo apt-get install -t wheezy-backports module-assistant
$ sudo dpkg -i *deb

It’s not mandatory to use Debian packaged NVIDIA drivers. Just be sure to install the same NVIDIA driver package inside the chroot that you are running outside with the 32bit OpenGL libraries. You should skip installing the kernel module inside the chroot:

$ sudo sh --no-precompiled-interface --no-runlevel-check --no-kernel-module --no-x-check --no-kernel-module-source --no-distro-scripts --no-nvidia-modprobe --accept-license

If you see “ERROR: Unable to create ‘(null)’ for copying (Bad address)” just hit OK several times. Also you may need to add /etc/ with “/emul/ia32-linux/usr/lib/” in it and run “sudo ldconfig” after adding it.

Create Jessie schroot

These instructions are adapted from and assumes 64bit host Debian.

WARNING: removing schroot with “rm -rf” while it is active will delete your home directory as well! You should reboot and make sure there is nothing mounted inside the chroot before removing it.

Install schroot for chrooting and debootstrap for creating the Jessie root filesystem:

$ sudo apt-get install schroot debootstrap
$ sudo mkdir -p /srv/chroot/jessie

Create the Jessie rootfs (the last parameter is optional for faster downloads):

$ sudo debootstrap --include sudo jessie /srv/chroot/jessie http://ftp.[your country domain here]
$ sudo mkdir /srv/chroot/jessie/run/shm
$ sudo chmod 1777 /srv/chroot/jessie/run/shm

Configure Jessie schroot (note that you need to add your user account’s group name in there):

$ sudo vi /etc/schroot/schroot.conf

description=Debian Jessie (testing) 64-bit
groups=[your group name]

$ sudo vi /etc/schroot/default/fstab
# Uncomment /run/shm

The /etc/group is shared between the chroot and the host Debian. Rest of the instructions assume your account belongs to the sudo group:

$ sudo adduser [your user name] sudo

Finishing the schroot

Schroot into Jessie and verify sudo:

$ schroot
$ cat /etc/debian_version
# Should say Jessie
$ sudo -l
# Should show that you can run ALL

Configure APT to use non-free packages and multiarch with i386:

$ sudo vi /etc/apt/sources.list
# Append "non-free contrib"
$ sudo dpkg --add-architecture i386
$ sudo apt-get update

Install Steam from Jessie and some dependencies:

$ export LC_ALL=C
$ sudo apt-get install python xdg-utils less libvdpau-dev libalut0 pciutils lsb-release libopenal1:i386 libvorbisfile3:i386 libglu1-mesa:i386 build-essential libgl1-nvidia-glx:i386 libgl1-nvidia-glx:amd64 steam
$ exit

The schroot is now ready and you can launch Steam directly from the host Debian:
(Updated 11.10.2014, See github issue for details)

sudo /etc/init.d/dbus start

If you spot a mistake in the instructions do leave a comment below so I know to fix it.