Steam Deck

Steam Deck

TheDukeOfNuke Oct 10, 2022 @ 3:58am
PSA: WARNING ⚠️ Arch Linux Repos
Just a friendly warning do not attempt to switch to or add the Mainstream Arch Linux Repos.. First: Why would you do this anyway?
Answer: the Kernel in SteamOS is older than the current kernel in Arch's Repo and some aur packages (anbox build dependents for one) requires kernel 5.18 or later in order to get the kernel plus headers that valve chose to strip from the decks repo you have to add arch's main repos.
What happens? : It will break the system if you try to update the decks files to the current versions on Archs repos the deck will just bootloop and will require a reinstall of SteamOS..
< >
Showing 1-14 of 14 comments
ClassicGOD Oct 10, 2022 @ 4:38am 
Good to know :D
Jake Sully Oct 10, 2022 @ 4:53am 
Well I read some one say that steamOS 3.3.4 probably will get kernel version 5, while we are on version 4 at the moment.
retrogunner Oct 10, 2022 @ 6:49am 
Here's a couple of alternatives if curious or concerned:

If you use https://github.com/ValShaped/rwfus to install stuff from Arch, you should not have that problem as it allows for a r/w OverlayFS of the pacman and /usr directory.
1. It does NOT require you to r/w your rootfs
2. If you did a fully system update, it would fail to update /boot as you should not have removed the r/w protection.

I started to use rwfus but then switched to Distrobox with their extras script to install podman-static:

With distrobox/podman-static, I've a GUI/X11 install of Alpine Linux, Debian, and Arch on both my Steam Deck (and Mint Linux laptop). I can use pretty much use anything I want and not mess up my Steam OS as they are all containers.

Cheers, retro.
Last edited by retrogunner; Oct 10, 2022 @ 6:57am
class101 [OLED deck] Oct 10, 2022 @ 6:52am 
Even experimented, I don't recommend swaping SteamOS for something else,

Ideally you want to keep Valve's work SteamOS untouched, and have access to your tools with the minimal overhead and I'm very satisfied of what I did instead to benefit everything from Arch Linux

Here I have Arch Linux and its repo installed in a chroot created in /home/deck/CHROOT

chroot created by a tool already provided by SteamOS and pacman called pacstrap

sudo pacstrap /home/deck/CHROOT base base-devel linux linux-headers sudo man man-db man-pages texinfo \ nano vi vim git mlocate

This will install Arch Linux base system into the dir and then you access it with arch-chroot /dir command, swap repos for arch linux inside, import keystores, and you are all set to install whatever

In case you wonder, I tested deeply, it works very well and there is no real risk to mix up system lib with steamos lib with this setup, graphical and libs are separated and the bridge is dbus, this is what I have done here

- the chroot hosts all the app I'm using normally on a real Arch Linux system
- a bind mount /steamos inside allows to access base SteamOS system
- desktop files Exec changed to pkexec chroot and to convert %F for the chrooted app
- you dont chroot X11/wayland or anything graphical, this is a DBUS environment variable redirecting to the display 0
Last edited by class101 [OLED deck]; Oct 10, 2022 @ 6:55am
Gormar Oct 10, 2022 @ 2:37pm 
Originally posted by Jake Sully:
Well I read some one say that steamOS 3.3.4 probably will get kernel version 5, while we are on version 4 at the moment.
Currently SteamOS 3.3.2 use kernel version 5.13. If SteamOS 3.3.4 will have 5.18 branch then it would be quite beneficial to GPU performance.
TheDukeOfNuke Oct 18, 2022 @ 3:01pm 
Originally posted by class101 deck:
Even experimented, I don't recommend swaping SteamOS for something else,

Ideally you want to keep Valve's work SteamOS untouched, and have access to your tools with the minimal overhead and I'm very satisfied of what I did instead to benefit everything from Arch Linux

Here I have Arch Linux and its repo installed in a chroot created in /home/deck/CHROOT

chroot created by a tool already provided by SteamOS and pacman called pacstrap

sudo pacstrap /home/deck/CHROOT base base-devel linux linux-headers sudo man man-db man-pages texinfo \ nano vi vim git mlocate

This will install Arch Linux base system into the dir and then you access it with arch-chroot /dir command, swap repos for arch linux inside, import keystores, and you are all set to install whatever

In case you wonder, I tested deeply, it works very well and there is no real risk to mix up system lib with steamos lib with this setup, graphical and libs are separated and the bridge is dbus, this is what I have done here

- the chroot hosts all the app I'm using normally on a real Arch Linux system
- a bind mount /steamos inside allows to access base SteamOS system
- desktop files Exec changed to pkexec chroot and to convert %F for the chrooted app
- you dont chroot X11/wayland or anything graphical, this is a DBUS environment variable redirecting to the display 0

So do you have instructions on how to bind the /steamos because it keeps telling me that directory doesn't exist lol. And im pretty sure binding / is probably a bad idea lol
Jake Sully Oct 18, 2022 @ 3:13pm 
Originally posted by Gormar:
Originally posted by Jake Sully:
Well I read some one say that steamOS 3.3.4 probably will get kernel version 5, while we are on version 4 at the moment.
Currently SteamOS 3.3.2 use kernel version 5.13. If SteamOS 3.3.4 will have 5.18 branch then it would be quite beneficial to GPU performance.
Interesting, read not long ago some 1 said 3.3.2 was on kernel 4 and that valve said they will have version 5 on 3.3.4 of steamOS
Binding mounts should just be empty dir iinitially, assuming you made /home/deck/CHROOT
  • mkdir /home/deck/CHROOT/steamos
  • mount --bind / /home/deck/CHROOT/steamos

This mount it once but will not persist until reboot, if you need it to persist you need to add

sudo nano /etc/fstab
/home/deck/CHROOT /home/deck/CHROOT none bind 0 4 / /home/deck/CHROOT/steamos none bind 0 4

If it helps, here are all the lines I added to /etc/fstab, the lines under ARCH-CHROOT are all the mount made by the script arch-chroot, to have the mounts made once, then you can just call chroot /dir , instead of arch-chroot /dir

# content of /usr/bin/arch-chroot proc /home/deck/CHROOT/proc proc nosuid,noexec,nodev,nofail 0 3 sys /home/deck/CHROOT/sys sysfs nosuid,noexec,nodev,ro,nofail 0 3 udev /home/deck/CHROOT/dev devtmpfs mode=0755,nosuid,nofail 0 3 devpts /home/deck/CHROOT/dev/pts devpts mode=0620,gid=5,nosuid,noexec,nofail 0 3 shm /home/deck/CHROOT/dev/shm tmpfs mode=1777,nosuid,nodev,nofail 0 3 /run /home/deck/CHROOT/run none bind,nofail 0 3 tmp /home/deck/CHROOT/tmp tmpfs mode=1777,strictatime,nodev,nosuid,nofail 0 3 efivarfs /home/deck/CHROOT/sys/firmware/efi/efivars efivarfs nosuid,noexec,nodev,nofail 0 3 # Arch Linux chroot bindings /home/deck/CHROOT /home/deck/CHROOT none bind 0 4 / /home/deck/CHROOT/steamos none bind 0 4 /home /home/deck/CHROOT/steamos/home none bind 0 4 /home/deck/.config/dconf /home/deck/CHROOT/home/deck/.config/dconf none bind 0 4

Not sure what is the magic behind, but even the system on read only mode, we have RW access to /etc/fstab so we can persist all the boring tasks like that
TheDukeOfNuke Oct 24, 2022 @ 3:38pm 
Originally posted by class101 deck:
SteamOSArchLinux :beatmeat:
https://steamcommunity.com/sharedfiles/filedetails/?id=2877026756

i must have borked something because in chroot i keep getting this error when trying to use pacman in the chroot env:
core.db failed to download
error: failed retrieving file 'core.db' from steamdeck-packages.steamos.cloud : Could not resolve host: steamdeck-packages.steamos.cloud
warning: too many errors from steamdeck-packages.steamos.cloud, skipping for the remainder of this transaction
error: failed to synchronize all databases (invalid url for server)
Originally posted by SolidSnake:
Originally posted by class101 deck:
SteamOSArchLinux :beatmeat:
https://steamcommunity.com/sharedfiles/filedetails/?id=2877026756

i must have borked something because in chroot i keep getting this error when trying to use pacman in the chroot env:
core.db failed to download
error: failed retrieving file 'core.db' from steamdeck-packages.steamos.cloud : Could not resolve host: steamdeck-packages.steamos.cloud
warning: too many errors from steamdeck-packages.steamos.cloud, skipping for the remainder of this transaction
error: failed to synchronize all databases (invalid url for server)

This means you forgot to restore the defaut /etc/pacman.d/mirrorlist, keep in my that by building a chroot from the base system, it exports some of its SteamOS settings that you have to restore to Arch Linux defaults.

You can use the following mirrorlist generator

https://archlinux.org/mirrorlist/

Here is the content of my /etc/pacman.d/mirrorlist

Server = http://mirror.cyberbits.eu/archlinux/$repo/os/$arch
Server = https://archlinux.mailtunnel.eu/$repo/os/$arch
Server = https://mirror.cyberbits.eu/archlinux/$repo/os/$arch
Server = http://mirrors.celianvdb.fr/archlinux/$repo/os/$arch
Server = http://mirror.theo546.fr/archlinux/$repo/os/$arch
Server = https://mirror.theo546.fr/archlinux/$repo/os/$arch
Server = http://archlinux.mailtunnel.eu/$repo/os/$arch
Server = https://mirrors.celianvdb.fr/archlinux/$repo/os/$arch
Server = http://archlinux.datagr.am/$repo/os/$arch
Server = https://mirroir.labhouse.fr/arch/$repo/os/$arch
Server = http://mirroir.labhouse.fr/arch/$repo/os/$arch
Server = https://mirror.sysa.tech/archlinux/$repo/os/$arch
Server = https://mirror.ibakerserver.pt/Arch/$repo/os/$arch
Server = https://mirror.thekinrar.fr/archlinux/$repo/os/$arch
Server = https://mirrors.eric.ovh/arch/$repo/os/$arch
Server = http://mir.archlinux.fr/$repo/os/$arch
Server = https://mirror.wormhole.eu/archlinux/$repo/os/$arch
Server = http://mirror.archlinux.ikoula.com/archlinux/$repo/os/$arch
Server = http://mirrors.gandi.net/archlinux/$repo/os/$arch
Server = https://mirrors.gandi.net/archlinux/$repo/os/$arch
Server = http://ftp.u-strasbg.fr/linux/distributions/archlinux/$repo/os/$arch
Server = http://mirrors.standaloneinstaller.com/archlinux/$repo/os/$arch
Server = http://archlinux.mirrors.ovh.net/archlinux/$repo/os/$arch

Also ensure the file /etc/pacman.conf as the following block at the end

# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.

#[testing]
#Include = /etc/pacman.d/mirrorlist

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

#[community-testing]
#Include = /etc/pacman.d/mirrorlist

[community]
Include = /etc/pacman.d/mirrorlist

# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.

#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

[sublime-text]
Server = https://download.sublimetext.com/arch/stable/x86_64
Last edited by class101 [OLED deck]; Oct 25, 2022 @ 11:22am
XDubio Feb 18, 2024 @ 9:53am 
This is a bit too much information for me all at once, and would like to clarify whether I've understood correctly, and how could I apply this to my needs. (Sorry if I'm a bit slow, or sound unnecessary, I worry a lot.) So the available tools here, and what I understood:
  • rwfus by ValShaped: is a comprehensive WIP script to set up overlayfs. Because of this it has a seamless integration of the system, providing the feeling of taking control the entire system, while allowing Valve to update the system without disrupting your setup. The readme.md implied, that Nano and Yakuake will be installed by the script, but didn't find any trace of that, am I reading it wrong?
  • distrobox by 89luca89: is not too dissimilar to what Windows Subsystem for Linux (WSL) by Microsoft for Windows is: it provides a distro of your choice to be installed on and integrates with your system, and since your host system is already a Linux, it runs natively, without a virtual machine and virtual drive in the host system (unlike WSL which runs a virtual machine integrated in to Windows).
  • CHROOT using pacstrap: that allows using pacman in a sub-folder. It feels like it would require further directory mapping setup beyond what pacstrap does?

What I would like to do is, instead of modifying the system image, I would like to expand the installed system with executables in a seamless way, that not only the Desktop Mode can seamlessly access these applications, but even the Game Mode could benefit from, while also system upgrade can be done without a hitch or unnecessary loss of changes. I do not mind if I loose these installed applications while transitioning, but I do not want to loose the state of my library at any point. These changes include additional capsule images I've applied and external games from other sources.

From what I gather, what I would really need is rwfus. Distrobox sounds an overkill for my needs (but certainly interesting), and by the sound of it pacstrap requires more steps to implement. Also maybe the most certain way to install it, is to wait for a system upgrade, and then start installing it. Did I understood correctly? Is there any caveats I need to be mindful of?
deaddoof Feb 18, 2024 @ 10:04am 
Originally posted by XDubio:

From what I gather, what I would really need is rwfus. Distrobox sounds an overkill for my needs (but certainly interesting), and by the sound of it pacstrap requires more steps to implement. Also maybe the most certain way to install it, is to wait for a system upgrade, and then start installing it. Did I understood correctly? Is there any caveats I need to be mindful of?

Why do you think it's overkill? Distrobox or something like it will pretty much become standard for all immutable distros. Containers have desktop use cases. I am looking at microos and fedora silverblue. Both distro recommend distrobox or another containerized environment.

https://en.opensuse.org/Distrobox

https://github.com/openSUSE/microos-toolbox

https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/
XDubio Feb 18, 2024 @ 11:02am 
Originally posted by deaddoof:
Why do you think it's overkill?

I assume that a distro comes with its own configuration, package manager and configured packages, so for example Ubuntu configures the system differently for Gnome, than openSUSE for KDE, and while I'm not that familiar with Arch, it is also possibly different. So in order to install a different distro on top of another, a lot of thing needs to be replicated, and if two package manager manages the same executable, that could break things, therefore it must be duplicated. Considering that the only thing I want is install a handful of apps, to expand this Arch installation, I really do not see the benefit of installing another distro on top SteamOS. (I don't want to develop anything for these distros from the Steam Deck.) The rest I could get from flatpak, or maybe homebrew, if I must. (I maybe should also consider to switch installing these application to be managed by Homebrew. I never considered using it before.) Are my assumption wrong here?
< >
Showing 1-14 of 14 comments
Per page: 1530 50

Date Posted: Oct 10, 2022 @ 3:58am
Posts: 14