Steam for Linux client adds support for Linux namespaces
steamcommunity.com
steamcommunity.com
Still, as a full-time Linux user, I'm over the moon. I've always used Linux on my development laptop, but struggled to keep it on my desktop because the lure of gaming with remote friends has been too strong. However, after literally decades of trying to give up Windows entirely, between Proton, kernel contributions and efforts like this, I can play most of my backlog without having to resort to dual-booting or even VFIO. Even many fresh releases work without strife.
To anyone at Valve who reads HN: thanks. I know we're a tiny minority, and I'm really grateful for the continued on-going support.
There is also a program that lets a remote player connect and play with your local computer. This way, you can play couch multi player games via the internet together.
Also, there was a reveal regarding steam gaming cloud recently: https://youtu.be/GqY5WYBDyyQ
Just because the Microsoft Store didn't pan out a few years ago doesn't mean they won't try again.
Every year since XP I keep reading how PC gamers will switch in droves to Linux because of X, instead those of us that really enjoy gaming and high performance graphics are on Apple, Microsoft, Google, Sony and Nintendo platforms.
>Apple >Nintendo
What? Nintendo and apple do not provide high performance graphics for gaming. Apple actively tries to kill gaming on their platform by not supporting vulkan and killing open gl and nintendo has never had high performance graphics.
Apple is not killing anything, anyone that has a name on the game industry already supports Metal, because professional game studios care about performance and productive tooling not about API religion wars.
Game consoles, outsolding any Linux based platform, also don't support Vulkan, so they are also killing gamming?
Yes, Switch does Vulkan, but their main 3D API is NVN and most of their titles are being done in Unity/Unreal, with Unity already having over 50% of Switch titles.
Currently there are no game consoles you could consider high performance but the switch is by far the lowest performance. Which is fine for what it is but it not even close to something you would substitute PC gaming with.
Not only did you get significant details wrong, but when faced with criticism, you immediately do an appeal to authority.
Not a good look.
First learn about what the corridors of IGDA, PAX, GDC, GDCE, Reboot Develop look like, then do your religious wars on graphics APIs.
https://web.archive.org/web/20160201000000*/http://store.ste...
This is interesting to me because I spend 99.5% of my time on Linux (even for most of my gaming), but I still boot into a different OS when I want to use Steam, so I don't show up on the stat sheet. I wish I did. Two reasons I do this:
1. The Steam installation is kind of messy on my OS (Arch Linux). It involves a big client that doesn't integrate into the OS very well, requires a lot of 32 bit compatibility libraries that I wouldn't otherwise need, and leaves a bunch of large data files all over my home folder.
2. It simply feels weird and uncomfortable to run closed-source DRM-including software on Linux. I can't explain it any better than that, because it really is just a mental "purity" thing. I'd rather completely separate the "foreign" software that I have this instinctive distrust for onto a separate system entirely, where I already don't trust the OS.
I'm still grateful to Valve for the support, because it encourages developers to get their software to run on Linux, even if most of the games I play are DRM-free binaries purchased from the developer.
Plus the other half which is the whole proprietary binary side of things. IMO, lack of transparency invites more bad behavior.
Also, it is actually quite trivial bypassing UAC prompt in Windows. It simply gives a false sense of security.
Something as simple as SilentCleanup [1] still works to this day. This will bypass UAC with little effort.
Even worse, following that, it is also trivial to get NT AUTHORITY\SYSTEM using Windows Management Instrumentation Event Subscription. [2]
I've done it as an exercise in Go out of all languages and it ended up fully undetected both on disk and during runtime.
So Windows simply provides a false sense of security. After all Microsoft themselves said [3]:
One important thing to know is that UAC
is not a security boundary. UAC helps people
be more secure, but it is not a cure all.
UAC helps most by being the prompt before
software is installed.
[0] https://amonitoring.ru/article/steam_vuln_3/[1] https://enigma0x3.net/2016/07/22/bypassing-uac-on-windows-10...
[2] https://attack.mitre.org/techniques/T1084/
[3] https://blogs.msdn.microsoft.com/e7/2009/02/05/update-on-uac...
Isn't that just because the system is less structured in general, so you've been beaten into submission?
After spending years on Linux pretty much everything on Windows feels like it's potentially spewing ick all over the place (registry, arbitrary folders, etc, not to mention the lack of reproducibility)!
Windows is moving towards apps living only in their own little containers, nice little isolated folders that they can't write outside of, with the exception of their reserved folder in AppData.
In contrast, *nix bunches executables up en-masse into a handful of folders.
It likely comes down largely to what you are used to.
The best at isolation has historically been macis, and then again you have plenty of packages installing to /Library, kernel extensions, uninstallers being placed in Applications/Utilities, MS updater being placed in /System and so on
It doesn't bother me to turn on multilib support in a rootfs I only boot in a container just to run steam client and its games. Though I do have to reboot into a kernel w/32-bit support first which can be annoying.
Isn't that in by default on pretty much everything? I'm not aware of any distro shipping an x86 kernel with 32-bit support disabled, anyways. Are you intentionally building your own kernels and removing 32-bit compatibility? Seems like an easier thing to fix than having to reboot every time.... (Unless I've misremembered and that is a default, in which case please correct me because that throws it the other way)
My host is all 64-bit userland, it's just exceptions like Steam stuff that need 32-bit support (even the Steamworks/Steampipe developer side is annoying like this). So I boot into that kernel when doing those things, and keep those userspaces in separate containers which also get "booted" when needed.
I do also worry that it'll eventually stop, but right now, with the competition essentially actively discouraging native Linux ports (EGS exclusives with no support for Linux downloads)... well, I'll take whatever I can get with open arms.
[0] Well, I say want to, but I literally do not own a Windows machine, so it's more that I only can play games that work, in any reasonable way, on *nix.
It's easier to count the games that are hostile to Linux these days, and they're usually exclusive to Epic anyway.
I like games with strong immersion and narrative and on Linux that's restricted to Alien Isolation, the BioShock series, the Metro series, etc. and that's something which is rare on Linux unfortunately.
I, like many Linux users, have a windows boot partition just for games and the few Windows applications that I can't get on Linux I'd rather not have to do it but it is what it is.
If your objection to wine is philosophical as opposed to practical, why is dual booting into Windows an alternative?
Basically I don't have the time to tinker anymore, I want things to work and I don't want to violate licensing agreements.
While this is true, I can also definitely see the logic in continuing to invest in a Plan B to protect the company from future external threats. I'm thinking along the lines of Apple maintaining an x86 port of MacOS for years before it ever became a public thing just in case.
Valve certainly has the resources to keep such an escape hatch open for themselves.
Not sure how relevant are the first 3 of those in this context. Battle.net, UPlay and Origin are basically just download/update systems for Blizzard, Ubisoft, EA and not a real competing store that could take over the whole market.
Epic's store is the only one that sells 3rd party titles.
More relevant competition would be GOG and to some extent itch.io (recently surpassed 200k titles in their catalog, but it's mostly very small indie games).
So why not continue support? It’s always, always nice to have an escape hatch you can point to should Microsoft get that look in their eyes again.
And yes, seriously, _thank you_ Valve!
I believe the running theory has been that it's a defense against Microsoft being Microsoft. If MS tries to do something like force all NT apps through their own store and take a cut of every sale, or anything else that poses too much threat to Valve, then Valve has an escape hatch in the form of Linux support. "You want 30% of our sales? Screw you, we'll tell our users to switch to Linux!" is a bit extreme, but it just needs to be a deterrent.
There is no fundamental reason why it can't eventually take over gaming, or even desktop.
One thing I'm observing is that macOS and Windows are basically regressing to have the same type of nonsense and quality issues that are indeed typical on desktop Linux. It's possible (but not certain) that they'll eventually cross paths. Linux might not take over the consumer desktop market (unless it's under a proprietary shell, like Android / ChromeOS), but Linux could possibly take over the high-end/power user/workstation market.
The kernel used by Android is completly irrelevant to userspace and can be changed tomorrow at Google's will, and only OEMs and rooted devices will actually notice it.
On embedded there are plenty of OSes to choose from, with FOSS embedded industry support moving to MIT/BSD licensed kernels, as OEMs don't want to deal with shipping GPL code on embedded devices, specially after v3 happened.
Valve, if you are reading this, just please make sure source 2 has a linux compatible editor! One thing I miss is modding source games.
Linux may have a 1% market share, but when you release on Windows, you will not only target a larger audience, but you will have to share that audience with a large number of studios. The AAA studios will take the lion share of the revenue.
I think in Linux there's still some room for indie games to thrive. Sometimes all it takes if you are using a game engine like Unity is to simply create a cross platform build that may work out of the box.
Ever since Steam published their non-Windows clients, we randomly get support requests from Steam users on Linux and macOS because the (all stacks) backtrace contains references to the WFMO WIN32 events library I open sourced many, many years back [0]. Always makes me smile though, my small contribution to Linux gaming. (Somewhat ironically, even Microsoft now uses this for cross-platform projects with VS Code being the primary example.)
I think all library developers (open source or otherwise) would probably do well to adopt the etilqs hack, you never know where your code will end up.
[0]: https://neosmart.net/blog/2011/waitformultipleobjects-and-wi...
Part of this is that Steam can still use 32-bit libraries even when the host Linux distribution has fully moved to 64-bit.
See recent discussion at https://ubuntu.com/blog/statement-on-32-bit-i386-packages-fo...
While you would have expected from Valve to use an existing container platform, they went ahead and used directly the security features of the Linux kernel in Steam.
Now if only most other Linux software could do that.
Repo models are antithetical to the concept of personal computing in my opinion.
Valve is already in the best position for this, since they're the dominant market player and gamers already have their game libraries in Steam. Buying a game from Valve makes more sense than buying a game from Google Steam users get to keep a playable product even if the streaming product is a flop.
[1] https://www.gamingonlinux.com/articles/looks-like-valve-coul...
So I just run Steam itself in a Docker container. The home directory inside the container is mounted to a subdirectory of my home on the host, so even if Steam wipes everything from it the only thing I'd lose is Steam itself.
rm -f ~/docker-games/root/.Xauthority
touch ~/docker-games/root/.Xauthority
xauth nlist "$DISPLAY" | sed -e 's/^..../ffff/' | xauth -f ~/docker-games/root/.Xauthority nmerge -
chmod 0444 ~/docker-games/root/.Xauthority
XSOCK="$(realpath /tmp/.X11-unix/*)"
DBUS_SESSION_BUS_PATH="$(echo "$DBUS_SESSION_BUS_ADDRESS" | sed -e 's/^unix:path=//')"
docker run -it --rm \
--device '/dev/dri:/dev/dri' \
-v "$XSOCK:$XSOCK" \
-v "$(realpath ~/docker-games/root):/home/arnavion" \
-v "$(realpath ~/.config/pulse/cookie):/home/arnavion/.config/pulse/cookie" \
-v "$DBUS_SESSION_BUS_PATH:$DBUS_SESSION_BUS_PATH" \
-e "DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS" \
-e "DISPLAY=$DISPLAY" \
-e "PULSE_SERVER=$(ip -4 addr show enp4s0 | grep -Po 'inet \K[^/]+'):4713" \
-e 'XAUTHORITY=/home/arnavion/.Xauthority' \
--shm-size '1G' \
--hostname arnavion-docker-games \
docker-games \
$COMMAND
The XSOCK mount allows it to talk to the host X server, and the .Xauthority mount allows it to auth with the host X server. Apart from that:* ~/docker-games/root is the home directory inside the container.
* The DBUS mount and env var is to allow Steam to show its icon in the system tray of the host DE. There's also a symlink for `~/.steam/public/steam_tray_mono.png` -> `~/docker-games/root/.steam/public/steam_tray_mono.png` so that the host DE can find the icon based on the path inside the container.
* The pulseaudio mount and env var is to allow sound. It requires pulseaudio to be set up to allow network clients.
Here's the full gist: https://gist.github.com/Arnavion/3212232d0761d49d9636f796c5a...
Mount namespaces are not a big deal to use, as long as you freely bind-mount from /dev and /sys whatever your software might need. The effect is mostly protecting your home directory against both reading and modification and isolating your system installations against version and configuration conflicts.
Uid namespaces are really challenging if you try to make some complex software system work. They give a lot of isolation from the host system, some would say also new risks that the isolation has unexpected privilege escalations.
Disclaimer: Not a gamer on any platform, so I don't know Steam other than from hearsay that it's the only serious one running on Linux.
For example, I can't run the GOG version of Legend of Grimrock on Fedora 31 because of libraries. This is the type thing that would that problem.
Namespaces are default feature within the Linux Kernel. If a process isn't isolated in any way, it's automatically assigned the default namespace. So what they've done is simply run the game processes in the a separate namespace. Therefore there should be negligible performance impact if at all.
With namespaces and cgroups and chroot and bind mounts you can cobble together an isolated linux distro running on the same kernel as yours. So for example, Steam can target having a game run on Ubuntu 16.04, and ensure that it runs well there, while you can go ahead and use Arch, or Fedora 31 or whatever. It's like virtualization except that it doesn't translate every instruction, it only adds some overhead to certain syscalls.
[1] https://github.com/KhronosGroup/MoltenVK [2] https://www.khronos.org/news/permalink/vulkan-support-for-do...
Indie game developers though, which Steam have a sizable amount of, likely do not have the same resources.