From Zero to Steam with Debian (sid) in 2021

DRAFT status. Commands likely have typos as I’m doing it live. Help fix?

Rationale

Debian - 3 flavors:

Stable
Testing
Unstable

I would translate this as:

Almost-Obsolete UltraStable
Prettymuch Perfectly Stable
Stable-ish

The always-current but unstable iteration of Debian is codename sid. The other versions start life out as sid and then become some other codename like Buster, Stretch, etc at some point in time. Most development and changes are happening on sid. If you have newer hardware, this is pretty much what you need to use. The Debian team is not large enough to spend a lot of time backporting new features to older kernels and packages (more than they already do) – which are the “more stable” non-sid variants of Debian.

It’s perhaps a bit philosophical in that a lot of these developers see new hardware as having ‘teething issues’ and won’t go out of their way to support it until the bugs are worked out. I don’t necessarily disagree, but it is an extremely conservative viewpoint and doesn’t always lead to the best end-user experience with newer hardware.

I don’t recommend Debian for the desktop use case for some of these reasons, but it is is otherwise an incredibly stable and reliable distro. In a sort of paradox: I trust the individuals maintaining this distro to ‘fight for the user’ far more than any other distro.

Installation

It seems clear that the Debian team doesn’t have access to the latest and greatest hardware. Installation is a bit of a pain. (If anyone verifiably on an open source dev team needs access to new stuff to test stuff, my IPMI door is always open. Contact me.)

The debian netinst installer was unusable with corrupt video on RX570, RX5600 and Vega64. Ouch. It is probably a framebuffer driver. The “failsafe” seemed to fail into corrupt video and even specifying nofb would lead to corruption as soon as the graphical grub screen exited. If you can, grab the ‘sid’ installer.

It was necessary (and easiest) to temporarily install a crappy old dual DVI GPU to complete the installation in my case. YMMV.

During the install I picked ssh-server and gnome for the desktop environment.

The first thing post-install is to update /etc/apt/sources.list with ‘sid’ sources, unless you installed with a sid iso (and not testing or stable).

Disable Sleep

Debian, out of the box, will happily put the system to sleep via ‘Automatic Suspend’. Even when someone is connected remotely, if you install the GUI/desktop experience.

Steam

I was delighted to find the Debian Steam Wiki page. It’s great! Use that as a reference.

For my amdgpu RX 5600 needs I did:

# from a root shell/prompt

echo "deb http://deb.debian.org/debian/ buster main contrib non-free" >> /etc/apt/sources.list
dpkg --add-architecture i386
apt update

apt install steam
# accept EULA nonsense

# vulkan
apt install mesa-vulkan-drivers libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386

Troubleshooting? See the section on the Debian steam wiki.

Oh, and though the Wiki doesn’t even mention it, I would recommend installing the Microsoft fonts package. So steam doesn’t look weird.

# as root
 apt install ttf-mscorefonts-installer

Firmware Issues

Debian stores firmware in the non-free repositories. However, the hardware is too new for the firmware to have been added:

W: Possible missing firmware /lib/firmware/amdgpu/tahiti_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navy_flounder_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/sienna_cichlid_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi14_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi10_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/green_sardine_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/renoir_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_vcn.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navy_flounder_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/sienna_cichlid_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi14_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi10_smc.bin for module amdgpu

Once again, it is necessary to

cd /usr/src/local
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/

and copy the amdgpu firmware to /var/lib/firmware/amdgpu manually. I’m not sure why building the linux firmware packages from this git repo aren’t totally automated! It’s more than a year on since the 5000 series GPUs are updated, and still this is necessary. I must be doing something wrong, or is Debian this hostile toward blobs still?

TODO addtl details

Update the initial ramdisk (which should no longer have firmware warnings!)

/sbin/update-initramfs -u

… and finally reboot to ensure everything loads properly.

Other Quality of Life Improvements

apt install chrome-gnome-shell
I like to install gnome extensions. This lets me do it through gnome’s extension website. Install cpufreq obviously.

I also like tiling, but i3. Fortunately the amazing folks at system76 have implemented reasonably decent tiling in GNome. And because you’re on sid your gnome is new enough for this to matter.

Pop Shell on Debian Sid

So there is a bit of a landmine here with the keyboard shortcuts. It cwill change default gnome keyboard shortcuts We’ll come back to that. Fortunately, Gnome has an easy “Reset All” keyboard shortcuts button. Know that option is in the GUI should you need it.

First, we need the extension and it isn’t on the Gnome shell extensions website (probably because of the landmines).

#as Root do: 
apt install git make gnome-shell-extensions node-typescript
cd /usr/local/src
git clone https://github.com/pop-os/shell
make local-install

Then to restart Gnome, do Alt+F2 and type restart.

Finally, run the Gnome Teak utility and enable Native Window Placement You’ll get a new icon in the top panel, and from there you can enable Tiling Windows (and set exceptions to tiling, such as the cpufreq popup).

You’ll probably want to add Steam, and its windows, to the exceptions for the tiling window manager. It doesn’t work that well with Pop’s window snap thing. (But better than i3…)

TODO

8 Likes

Actually, unstable is always named Sid, after that unstable toy torturer kid in Toy Story. :smiley:

But yeah, like you say, Unstable is stable-ish, then there is experimental if you want a rolling distro with Debian. :slight_smile:

1 Like

hmm, I suppose one might read that that way. Maybe I could change the phrasing to the always-current unstable iteation of Debian is codename sid to avoid confusion.

2 Likes

I also had a hard time with gaming usage of debian on my machine. I did keep some notes on my experience with the install process…

My notes have a couple more drivers from the AtiHowTo, specifically

# apt-get install firmware-amd-graphics libgl1-mesa-dri libglx-mesa0 mesa-vulkan-drivers xserver-xorg-video-all

but I don’t recall the reason, if there is one.

I think you need bullseye non-free and firmware-amd-graphics? Navi architecture isn’t include on the firmware-amd-graphics details page until bullseye, but presumably sid would also work.

I tested on my desktop with Ryzen 1600 and RX5700XT. Bullseye installer worked for me but on first boot I had black screen with blinking cursor, so I changed to console with Alt+F2. Edited /etc/apt/sources.list to look like

deb http://deb.debian.org/debian/ bullseye main non-free contrib
deb-src http://deb.debian.org/debian/ bullseye main non-free contrib

sudo apt update, then install firmware with (change amd64-microcode to intel-microcode for intel)

sudo apt install amd64-microcode firmware-linux-nonfree firmware-amd-graphics linux-image-amd64

Then my graphics appeared to be “normal” but I didn’t test extensively.

Worth noting that I ended up switching to Fedora for a slightly easier gaming experience out of the box.

2 Likes

Sids fw package didn’t have what I needed. Some fw was in there but not for the 5600. It was very odd.

Good notes here though.

2 Likes

Awesome stuff! I may try a few things as I’m trying to install proxmox over “bulls eye”. I have found it to work well so far with my B550 chipset, and my gtx 1660ti (after install of proprietary nvidia drivers). Im attempting to overcome some dependency errors.

The following packages have unmet dependencies:
 criu : Depends: python-future but it is not installable
    Depends: python-ipaddr but it is not installable
    Depends: python-protobuf but it is not installable
 libpve-u2f-server-perl : Depends: perlapi-5.28.1 but it is not installable
 librados2-perl : Depends: perlapi-5.28.1 but it is not installable
 pve-cluster : Depends: corosync (>= 2.3.4-1) but it is not going to be installed
           Depends: libqb0 (>= 0.17.1-1) but it is not installable
           Depends: perlapi-5.28.1 but it is not installable
           Depends: libcmap4 (>= 1.99.9) but it is not going to be installed
           Depends: libcpg4 (>= 2.3.4-1) but it is not going to be installed
           Depends: libquorum5 (>= 2.3.4-1) but it is not going to be installed
 pve-qemu-kvm : Depends: libnettle6 but it is not installable
 qemu-server : Depends: libjson-c3 (>= 0.10) but it is not installable

Will these dependancies be possible to overcome? I’ve only been using linux for about 5 months on and off and could use some sage advice lol. This all came about because the 3700x, B550, GTX 1660Ti is my only other system to use as a test bed at the moment so I dont disturb the stable Proxmox server I have going on the 2700 and ASRockRack X470. If I need to I can change out the mother board to a more linux friendly ASUS ROG X470i, but I like to learn how to make things work. It also has the more agreeable Intel NIC.