驯服 Steam arm64 客户端(在 pmOS 上)

Lobsters Hottest 新闻

摘要

一篇博客文章,详细介绍了在 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

相似文章

将WINE移植到新爱好操作系统

Lobsters Hottest

详细记录了将Wine移植到Astral爱好操作系统的过程,通过WoW64实现了32位Windows应用的运行,并解决了OpenGL/EGL依赖问题,从而能够运行Cogmind等游戏。

Proxmox 正式支持 Arm,但有一些注意事项

Lobsters Hottest

Proxmox 已正式发布适用于 64 位 ARM 的 Proxmox 虚拟环境,正式支持 NVIDIA Grace Hopper 和 Vera 平台,并为其他基于 UEFI 的 ARMv8/ARMv9 系统提供尽力而为的支持。