驯服 Steam arm64 客户端(在 pmOS 上)
摘要
一篇博客文章,详细介绍了在 postmarketOS 上运行非官方 Steam arm64 客户端的各种蹊跷与挑战,包括客户端未意识到自己是 arm64、缺少 Proton/运行时下载,以及提及 FEX 和图形提供商清单(与 Valve 即将推出的 Steam Frame 相关)。
<p><a href="https://lobste.rs/s/dpn8yn/taming_steam_arm64_client_on_pmos">评论</a></p>
查看缓存全文
缓存时间:
2026/08/04 17:48
# 驯服 Steam arm64 客户端(在 pmOS 上)
Source: https://blog.drakulix.de/taming-the-steam-arm64-client-on-pmos/
如果你看过我之前尝试为 arm64 编译 Proton 的努力(https://blog.drakulix.de/building-a-proton-arm64-runtime/),当突然有一个 arm64 的 Steam 客户端出现在互联网上时,你大概不会感到惊讶——我很兴奋。多亏一些社区脚本用来下载和设置可执行文件,人们很快就让它在各种系统上运行了起来。
这一切本就在意料之中,毕竟 Valve 官方发布了 Steam Frame——一款搭载骁龙 8 Gen 3、运行 SteamOS 的设备。然而在尝试该客户端后,我很快注意到,这并不是 Steam Frame 的客户端版本,而且它的行为也很奇怪……
Valve 开源了很多并非 Steam 客户端本身的代码,其中最值得注意的是 Proton 和 SteamLinuxRuntime。这两者早已包含对 arm64 的引用,足以让我们拼凑出它应该以何种方式工作。
- 首先,Valve 现在为 arm64 构建了 SteamLinuxRuntime 4.0(https://steamdb.info/app/4185400/),以及为 arm64 构建的 Proton(https://steamdb.info/app/4628740/)。然而,这个客户端默认不会尝试下载其中任何一个。如果你下载了 Proton 运行时,你可能还会注意到,它缺少 `toolmanifest.vdf`,而这个文件原本会让它在 Steam 客户端中显示出来。
- Steam 运行时还包含了对 `emulator.json` 清单的新引用,公开的 FEX 源代码仓库(https://github.com/FEX-Emu/FEX/blob/main/Source/Steam/emulator.json)中也包含该文件。这告诉我们,Steam 很可能会自动选择一个适合运行“外来架构”(arm64 上的 x86_64)运行时的模拟器,并将其注入到它的 pressure-vessel 容器中。pressure-vessel/proton 脚本还暗示,Steam 将允许用户设置一些 FEX 配置参数。
- 此外,我们还发现了对 `graphics-provider.json`(https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/steam-runtime-graphics-provider.json.5.md?ref_type=heads)的引用,它提供为其他架构编译的图形驱动程序。因为在 arm64 上运行 amd64 二进制文件时,很可能还需要为 amd64 编译的 Mesa,而默认情况下任何 arm64 发行版都不会附带它。
这个有点非官方(至少是未公开宣布)的 arm64 Steam 客户端似乎完全没有处理这些问题。它似乎完全没有意识到自己是针对 arm64 编译的,默认只会尝试启动 x86_64 运行时。即使你已经为 x86_64 二进制文件设置了全局 binfmt 模拟器,Steam 生成的容器也很可能会破坏这一设置。
还有更多迹象表明,这仅仅是 Steam 为另一种架构自动构建的产物,并不包含让 Steam Frame 真正工作的任何改动。网上的脚本会从 `publicbeta` 频道下载 Steam,因为似乎还没有稳定的客户端。但你完全可以下载 `steamdeck_stable` 分支的 arm 构建版,这样得到的 arm64 客户端会包含你在 Steam Deck 上运行 Steam 时会有的所有细微改动。
*这到底是什么鬼* **?**
## 哦,别闹了……
你之前看到的那个“帖子”(tweet?呃,toot?不对,Bluesky 不是 fedi……好吧)是在任天堂 Switch 上运行的,它还有一个额外的挑战:目前在那块硬件上无法运行 FEX。那么这一切都没用了吗?当然不是。Steam 客户端终于包含了为 `arm64` 编译的 `steamclient.so`,而这正是我们之前在尝试于 arm64 上运行 Proton(https://blog.drakulix.de/building-a-proton-arm64-runtime/)时所缺少的。于是人们很快就自己为 ARM 编译了 Proton——Valve 有公开的构建说明(https://github.com/ValveSoftware/Proton/#arm64-builds),这让一切变得非常简单——或者干脆从 Steam 下载 depot,然后自己编写 `toolmanifest.vdf` 文件。
这确实可行,但如果我们能用 arm64 客户端轻松运行任何 Proton 版本,包括 x86_64 版本(就像 Steam Frame 上大概能做到的那样),岂不美哉?或者——该死——如果游戏有原生 Linux 版本,我们难道不想直接通过 FEX 来运行它吗?
说到这里,我得先谈谈我们究竟是如何运行 Steam 客户端的。关注 Valve Steam 更新的人可能已经听说过 `SteamRT3C` 的消息。那是一个公共 x86_64 beta 客户端,它本身运行在 steam-runtime 容器内。(是的,Steam 在 Linux 上至今仍然是一个 32 位二进制程序。)由于 arm64 客户端对宿主系统上的库要求非常挑剔,人们很快就采用了与 beta 客户端相同的做法,使用 `arm64` 的 `SteamRT4` 运行时来运行该客户端。
这意味着 Steam 运行在我们能够动手脚的容器运行时中,而每次 Steam
相似文章
Lobsters Hottest
详细记录了将Wine移植到Astral爱好操作系统的过程,通过WoW64实现了32位Windows应用的运行,并解决了OpenGL/EGL依赖问题,从而能够运行Cogmind等游戏。
Lobsters Hottest
Proxmox 已正式发布适用于 64 位 ARM 的 Proxmox 虚拟环境,正式支持 NVIDIA Grace Hopper 和 Vera 平台,并为其他基于 UEFI 的 ARMv8/ARMv9 系统提供尽力而为的支持。
Hacker News Top
Kakehashi 是一个实验性用户空间,它通过加载 Mach-O 文件、映射独立的 libSystem 以及转换 BSD 系统调用,将 macOS ARM64 二进制文件转换为可在 Linux aarch64 上运行。目前它支持通过 Docker 或 UTM 在 Linux ARM 上运行诸如 7-Zip 和 curl 等工具,包括多线程操作。
The Verge
Valve 正与 AMD 合作,将 FSR 4 超分辨率技术引入 Steam Machine,有望为这款主机带来显著的图形性能提升。
The Verge
Valve发布了SteamOS 3.8.10,改进了桌面硬件兼容性,包括早期Nvidia驱动支持,允许用户自行打造类似Steam Machine的游戏PC。该更新旨在让SteamOS更易于安装在自定义硬件上,但目前尚不支持双系统启动。