Arch Linux on the Steam Deck?

I think I am obsessed with Neovim. After finding out that the default Neovim currently distributed with SteamOS is only 0.6, I became determined to install the current git version, 0.8. This led me down an interesting rabbit hole, which while ultimately unsuccessful, may be possible in the future.

The idea is simple enough: install Arch Linux and use the linux-steamos AUR package to get the full hardware support. But it just didn’t work out that way. Installing Arch Linux is simple enough. Just image a USB and boot from it. On the Steam Deck, this is accomplished by plugging a bootable USB into the dock and holding down the volume down key while powering on until you hear the chime.

Following the Arch Linux installation instructions was easy enough too, once all the required packages were installed. First, yay-bin from GitHub, then use yay to install update-grub (This is apparently just a convenient alias for grub-mkconfig).

Getting it to boot the default OS is easy enough, and so is installing the KDE Plasma desktop (yay -S plasma xorg sddm plasma-wayland-session). Unfortunately, the current Arch Linux kernel doesn’t support the Steam Deck audio or bluetooth hardware. This, of course, makes it quite unusable for gaming.

So, there’s a package in the AUR called linux-steamos. This is theoretically the answer to the problem above, since it would have all the necessary hardware support. However, after several hours, I find I am unable to get the system to boot using the new kernel.

My first attempt, I used an ext4 root file system, but continued to get error messages about an unknown root file system type. And indeed, there’s no ext4 module for grub to insmod. I recalled that the default SteamOS is using btrfs. So attempt #2 was to use btrfs. Again, I got complaints about unknown filesystem type, even after dropping into the grub shell and manually entering the boot commands:

set root=(hd0,gpt2)
linux (hd0,gpt1)/vmlinuz-linux-steamos root=/dev/nvme0n1p2 rw
initrd (hd0,gpt1)/initramfs-linux-steamos.img
insmod btrfs

This has me stumped, and I’ve given up and gone back to stock SteamOS. I guess I’ll have to make do with Neovim 0.6 until the next SteamOS update. For posterity, I had one note about building linux-steamos, which is that the build will fail on linking vmlinux (i.e. right at the end, after 2 hours!) unless you modify the file scripts/ with change discussed here:

So, it’s possible to boot Arch Linux on kernel 6.0, but the hardware support for all parts of the Steam Deck isn’t there. If you try to install the package linux-steamos, I can’t seem to get it to boot no matter what I try. So, for now at least, stock Arch Linux is out of the picture. For the most part, this doesn’t matter as Valve maintains their packages. However, this does mean that you must wait for reasonably recent packages. Consider this blog post my only complaint to Valve about the Steam Deck 😛


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: