SteamOS 3 (“Holo”) is the Arch-based Linux distribution built for the Steam Deck, Valve Software’s portable PC gaming device. It’s a very interesting Linux distribution even when you only focus on how it updates itself: updates are performed atomically by downloading a new read-only root filesystem to an inactive partition, then rebooting into that partition. But consumers can also run
steamos-devmode
to unlock the root filesystem, put the pacman database in working order, and give them a working Linux distro with a normal package manager.This A/B atomic updates system is pretty standard for OSes these days, but there’s a lot going on in SteamOS that makes them work even with heavy customization by the end-user. I wanted to explore that while still being able to make changes to the root filesystem images.
↫ iliana etaoinsteamos-devmode
is the easy way out; I wanted to make a proper fork. Here’s how I did it.
This article has sparked my interest to build a living room PC for Steam gaming for my wife and I, so we can play couch coop Steam games on an actual couch instead of behind our PC desk. Very detailed and in-depth, this article also teaches a lot about how SteamOS works under the hood.
If you don’t want to go all the way down the rabbit hole like iliana did with custom kernel configs and such, you can follow ETA Prime’s guide on installing HoloISO to an AMD CPU/GPU based system, though you might run into the issues xie did with suspend/resume. I’ve done the HoloISO method myself on a Ryzen 5 3600 with RX 6700 XT GPU, and it worked nearly flawlessly. Here’s the video:
https://www.youtube.com/watch?v=x4gZO7TZT9g
I can highly recommend ChimeraOS, which is SteamOS based on Arch Linux working “out-of-the-box” for AMD based cards. If you have a NVIDIA based card look at Bazzite or Nobara Linux (both based on Fedora).
A/B updates is how Cisco does Call Manager/Jabber/Unity Connection/UCCX product updates.
Gotta love how when some big company like Google or Valve decides to use Desktop Linux for a consumer-oriented OS, it ends up being unrecognisable in the end.
Desktop Linux in its standard forum, with its overreliance on package managers (and related dependency trees) and “run the update script and pray” update methods is not fit for public consumption.
Developers want an OS that’s like a well-defined building plan, not a bunch of Lego bricks that can be endlessly rearranged or subsetted. People will whine about win32 being this or that, but at least it’s something stable and every piece of it is guaranteed to be there (mostly, with the exception of some old DirectX stuff and secdrv).
Also, even FOSS software like VLC or Kodi suffer from Desktop Linux’s overreliance on package managers, with users having to wait for some graybeard to repackage new versions of the app for a particular distro’s repository or having to use some third-party repository and pray it works. Meanwhile Windows and macOS users can use the latest VLC or Kodi instantly.
Note: Yes, I know Flatpack, AppImage, and Snap are a thing, they also give of a “making Desktop Linux unrecognisable” vibe. Also, I will accept then as a solution when I don’t have to use the package managers for non-system apps.
In addition, users need the ability to roll back a bad upgrade instead of being dumped into some DOS box looking thingie without recourse.
The reason I am saying the above is because we “Linux haters” have been pointing out those problems for the past 15 years, and we were called “trolls” and “paid Microsoft shills”. Also, there is a reason traditionally Windows-centric channels like Linus Tech Tips care about SteamOS. Because it makes Desktop Linux into something that’s actually fit for public consumption.
kurkosdr,
Guarantee is too strong a word here. I support windows software for work and we have to deploy fixes now and then because windows breakages do happen. The big difference is that windows has more actively supported commercial software and by the time a user upgrade the OS, the software is often already fixed. Dependency hell is a notorious problem across many platforms including both linux and win32. The same solutions that solve dependency hell on windows also work on linux though, so TBH I don’t see much merit in finger pointing or placing one platform on a pedestal over another.
I do get your gripes with centralized repositories and I also share some of the frustrations when the version you want isn’t available from your distro’s repo. However flatpack/appimage/snap do solve this….
I don’t mean to reject criticism out of hand, however it honestly seems quite unfair to complain both about traditional package management and then also complain that newer package systems aren’t traditional. Pick one argument or the other! It also kind of feels hypocritical to me to complain about different package strategies existing for linux when windows installers have been anything but consistent, it’s a rather notorious free for all.
I personally use the flatpak version and it’s solved my problems with debian’s VLC packages not having the dependencies I need. Do you actually experience problems with these packages or are the complaints more rhetorical?
While I have experienced bad upgrades, this is typically because I overrode the package manager in the first place with a custom setup. There are two important points to consider: 1) typical users aren’t modifying their system files outside of distro repos, we generally don’t encourage it 2) snap/flatpak/appimage usually eliminate the need to modify system files/dependencies by bundling them with self contained applications instead. This is the same approach that android uses, for example.
Owners should be allowed to modify their systems if they want to (ie config files/registry keys/system libraries/etc) but ordinary users shouldn’t have to do this. I suspect we can all agree about this: normal users should never be forced to dig into system internals. To the extent that this rule needs to be broken, then I’d agree it should be fixed.
“I personally use the flatpak version and it’s solved my problems with debian’s VLC packages not having the dependencies I need. Do you actually experience problems with these packages or are the complaints more rhetorical?”
Not sure which dependencies were missing. Running Debian Sid here, and managed to get 4k blurays to play with menus. I tried the flatpak version and it couldn’t see the system’s Java. Kind of cool that I was able to watch a 4k movie on my Debian desktop though. Not that I currently have a 4k monitor connected to it…
leech,
I lost the ability to access security cameras due to a non-free dependency that debian removed intentionally. Rather than rehash, here’s a link to an older comment.
https://www.osnews.com/story/137748/microsofts-flawed-approach-to-application-updates-wreaks-havoc-on-windows-pcs/#comment-10434037
Obviously this is a philosophical issue. I can understand both sides of the issue. I’m actually curious what other mainstream distros (ie cent/fedora/mint/ubuntu) did. Unlike debian, they might have kept the non-free dependencies…I haven’t checked. But I do know that switching to official VLC version via flatpak is one way to recover the missing dependency in debian.
In recent times I’ve been dabbling more with flatpak/etc to solve problems that I used to try and solve by installing dependencies manually. Both approaches can work, and sharing resources is more efficient, but one opens up the doors to dependency hell and conflicts, whereas the other has self contained packages that avoid the whole ordeal. Obviously it’s it’s a matter of pros and cons.
The centralized repo model works assuming you have a maintainer to synchronize all your software and resources, but this is very difficult to maintain across thousands and thousands of packages. So I think it’s important for linux to support decentralized applications so that the distro maintainer doesn’t become a bottleneck.
kurkosdr,
Windows breakages do happen though and app developers like me have to fix them. I’ve seen business applications built with active x breaking in recent versions of windows due to windows changes. I’ve also seen new MS runtimes break software in weird unexpected ways. I was involved in reporting a windows 10 issue to microsoft, their response was “not a bug won’t fix” and we were forced to change our software to work around it. Ironically enough this windows change would go on to cause data loss for other windows 10 devs and users world wide.
https://arstechnica.com/gadgets/2018/10/microsoft-suspends-distribution-of-latest-windows-10-update-over-data-loss-bug/
Another application I maintain broke on windows 10 due to a change with windows schannel library. Worked in 7, broken in 10.
Anyway I obviously can’t itemize every breakage, but the point is that there are windows changes that break applications. If not for application updates users would find they no longer work. To be clear I am not saying this affects most applications, only that it does happen.
I “nope” your “nope”, haha. I’m well aware this is a problem on linux too, on windows it goes by another name: “DLL hell”. The solution (in both cases) is to include the dependencies beyond the basic ones supplied by the OS (same is true of linux and is what flatpak and friends do). Without this it’s back to DLL hell.
Where’s the logic in this? You don’t need to be a “linux hater” to believe in OS evolution. The whole premise is quite silly. Would you call windows unfit for public consumption since it has changed since 15 years ago?
I don’t really have a problem with criticizing linux and I agree with you about many things, but some seem too hypocritical for me to agree with.
I believe you, I agree that running software in isolated containers has cons like that. Personally I try to avoid snaps on the basis that the hosting side is proprietary technology and it hands Canonical too much power over 3rd party apps. Still, it’s comparable to the app deployment models used by google/apple/microsoft.
Ok, ActiveX was always a security whole posing as a feature, so devs who bought in indeed got screwed. Even getting it to run on Windows 11 is a pain. But I was referring to win32.
BTW what happened to the edit button? You miss one forward slash and formating goes to crap.
kurkosdr,
Microsoft only considered it a bug after the media were reporting data loss, but before the press got involved microsoft actually doubled down on the breakages. Anyway it’s far from the only break I’ve encountered over the years, I don’t want to blow it out of proportion, but the fact is it does happen and there is no “guarantee”, would you agree that was an overstatement?
This was some 8 or so years ago, but MS made security policy changes and in fact customers were filing tickets to report the breakage on windows 10. We had to publish a new version for it. You’re acting like this is unusual, but it’s not. Sometimes old software works great, but sometimes it breaks.
It really depends on if the software uses extra shared libraries or not. If you write your software to use the basics and nothing else, then naturally DLL hell doesn’t arise. You technically can build pure win32 applications that don’t use dependencies just as you technically can build pure linux & X applications that don’t use dependencies. Neither of these suffer from “DLL hell”, but this isn’t the way most applications are developed any more. There’s a good reason to turn to higher level libraries that what’s in the OS, but unless they are either included or statically built, that’s when DLL hell can happen (on any platform).
Whatever happened 15 years ago maybe it’s time to let it go. I was a windows user back then, BTW.
As indicated before, the flatpak version of vlc is working well for me. Do you have problems with it?
https://flathub.org/apps/org.videolan.VLC
I can’t speak to VLC since I don’t use it but your description of Kodi on Linux is wrong – almost laughable. Not only is the newest stable version available in all the popular distros, the Kodi team themselves provide a very successful flatpak. And, there’s a huge number of Linux users who use their own self-compiled master. Additionally, there’s a ton of Linux users who run Kodi without a desktop environment at all (since you specifically mentioned the desktop).
It’s perfectly fine if you’re a “Linux hater”, but it sounds like you don’t really know much about Linux, if anything. There are real bullet-points you can hit if you want to bash the Linux desktop.
For the folks who want or need a non-Microsoft, non-Apple OS that “mostly just works”, Ubuntu probably covers the bulk of their needs. It’s almost as polished as the commercial OSes, with little to no tinkering needed for a daily workstation, certainly no more than Windows or macOS need from time to time. No operating system covers every conceivable use case, and no operating system works perfectly 100% of the time; they all need tinkering under the hood at some point.
For the folks who want as little abstraction as possible between them and the computer itself, those who enjoy tinkering as a life goal, and those who consider operating system development their raison d’être, they are better served by OSes like Gentoo Linux, LFS, Arch Linux, Debian GNU/Linux, or any of the BSDs.
Then there are the weirdos like me who are somewhere in the middle: I want a functional, beautiful, capable OS that allows me to peek under the hood and tweak things but only if I want to, not because I have to. That’s why Void Linux is my workstation of choice these days. It’s not as hands-on as OpenBSD and it is more suited to “real world” use on the desktop, but at the same time it adheres closer to the “UNIX way” which is what I personally like in any operating system.
Yeah, these solutions can be quite handy for getting apps on Linux desktops that are otherwise unavailable or too difficult to do a proper port (Pinta, I’m looking at you; I wish I was skilled enough to port it to Void). The issue is cohesion; they often feel out of place depending on one’s DE, and as for Snap, I don’t care for a service intended for Linux systems that is only accessible via a closed source repository and server.
You might be interested in trying out Nix or Guix, they are built around exactly that paradigm and I feel are part of the future of Linux on the desktop, along with stateless/immutable systems.
The greatest strength of Linux based operating systems is beyond all of that though: It’s the fact that you can make it into whatever you want it to be. It’s on servers that run the Internet, it’s on single board computers powering robots, it’s behind the scenes of the most widely used mobile operating system in the world, and it powers the telematics of several industries, including automobiles. And yes, it can be a quite capable desktop operating system if one wishes, even if it’s not up to your personal standards. That’s the beauty of open source, of Free software, of choice.