The Steam Deck OS is immutable, so by default you can’t install anything outside of the user partition. If you really want to, there’s a command you can run to install things outside of it but when there’s an OS update, it will all be wiped.

This is where Distrobox comes in. You can install it in the user directory, and it won’t be removed when there’s an OS update. There’s also the added bonus of being able to install almost any Linux distro you’d like. If you’ve ever used the Windows Subsystem for Linux, this is the same idea.

Set a root password

Start with setting a root password in Konsole if you haven’t already. Run the following command and follow the instructions in the terminal:

passwd

Download Distrobox and Podman

We need to install Distrobox and Podman statically. Use these following commands to install both to your ~/.local directory:

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/install-podman | sh -s -- --prefix ~/.local

Now add both of these to your path so you can easily use them. First open your ~/.bashrc:

nano ~/.bashrc

Then add these two lines to the bottom of it, then save it:

export PATH=$PATH:$HOME/.local/bin
export PATH=$PATH:$HOME/.local/podman/bin

If you want to run an app with a UI, add this to your ~/.bashrc too:

xhost +si:localuser:$USER

Choose a Linux distro

View all the Linux distro images here, under the “Containers Distros” heading.

Create a distro image

For example, if you want to install Arch Linux, you would run this:

distrobox create --image archlinux

And for Debian 12:

distrobox create --image debian:12

And then follow the instructions in the terminal.

For more details on distrobox create, view the docs here.

Enter the Linux distro

To see all the distros that you’ve installed, and their names that you need to run the next command with, use:

distrobox list

Once the distro of your choice is created, you can enter it using:

distrobox enter <distro-image-name>

For example, we’d use this to enter the Debian 12 distro we made above:

distrobox enter debian-12

Now you should see your terminal slightly change, instead of seeing something like this:
(deck@SteamDeck ~)$, you should see something like this: deck@debian-12:.

Exit a distro

Once inside a distro image, if you want to exit it but have it still running:

exit

Stop a distro

If you want to stop a distro image, run this command with the same name that you entered it with:

distrobox stop <distro-image-name>