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>