FX Steam Launcher 在 Mac 上跑官方 SteamOS:轻量虚拟机装下 Valve ARM64 镜像,Windows 游戏经 Proton 上屏
FX Steam Launcher 把 ARM64 SteamOS 装进 Mac 虚拟机,游戏经 Proton 到 Metal,直接跑 Steam 库。

Mac 上也能运行 Valve 官方的 SteamOS 了。FX Steam Launcher 是一个开源 Mac 应用(Apache-2.0 许可,独立项目,与 Valve 无隶属关系),它把 Valve 为 Steam Frame 头显构建的 ARM64 版 SteamOS 装进一个轻量虚拟机,跑在 Apple Silicon 的 Hypervisor.framework 上——不需要 QEMU,不模拟 CPU,SteamOS 本身就是原生 ARM64 镜像。11 月 2 日发布的 v1.9.8 适配了 SteamOS 0.6.0 预览通道,并修掉了 M3/M4/M5 机型上每秒约 1800 行的日志刷屏。GitHub 仓库 fxgl/steamac 建档于 10 月 4 日,截至发稿已有 1600+ 星。
要点
- 跑的是 Valve 官方镜像,不是兼容层。 镜像从 Valve 服务器下载,是带签名的 RAUC 包,启动前验签和 sha256;Steam 云存档、成就、手柄 UI 都按 SteamOS 本来的样子工作。
- x86 Windows 游戏走三层转译:Proton 11 ARM64 + FEX 把 x86-64 指令转成 ARM64,DXVK / vkd3d-proton 把 DirectX 转 Vulkan,再经 Venus / virtio-gpu 到宿主侧 MoltenVK 上屏 Metal。 整条链全程 GPU 加速。
- 实测能玩,但有硬边界。 ETA Prime 在 M4 Max 上跑 Stellar Blade 试玩版(DX12),1280×800 约 60 FPS;UE5 游戏(需要 SM 6.6 / FL 12_1)起不来,阻止虚拟机的反作弊游戏不可用。
背景
Apple Silicon 的游戏问题拖了五年多:机器性能早就够了,缺的是 Windows 游戏生态的入口。现有路线各有代价——CrossOver 和 Whisky 用 Wine 把 Windows API 翻到 macOS,游戏逐个碰运气,Steam 客户端本身还是 Windows 版跑在转译层上;原生移植则由发行商决定,数量有限。Valve 自己给了新的可能性:为 Steam Frame 头显构建的 SteamOS 是 ARM64 原生版本,这意味着一个完整、可自更新的 Steam 系统镜像第一次能脱离 x86 存在——本站上周刚写过 Valve 对旧项目 F-STOP 的态度,这家公司给社区留的空间一向不小。FX Steam Launcher 抓住的正是这一点:与其在 macOS 上逐个翻译游戏,不如把整套 SteamOS 搬进虚拟机,让 Valve 的层去做 Valve 的事。Valve 此前发布的 SteamOS(Steam Deck 上的 3.2 版和 2025 年起授权第三方掌机的发行版)只面向 x86 设备,ARM64 版随 Steam Frame 在 2026 年出现后,社区里跑通它的尝试不少,fxgl/steamac 是目前完成度最高的一个。
事实部分
v1.9.8 于 2026-11-02 08:12 UTC 发布(GitHub Releases 记录),改动两处:一是适配 SteamOS 0.6.0——预览通道这次更新替换了虚拟机 Vulkan 驱动所链接的一个库,更新后虚拟机会卡在 “Starting Steam client”,官方建议卡住的虚拟机装 1.9.8 后重启即可,稳定通道的 SteamOS 0.4.5 不受影响;二是 KosmicKrisp 诊断信息不再刷日志,此前 M3/M4/M5 上开着 Steam UI 时约每秒 1800 行。
技术栈按层拆开是这样的:
| 层 | 组件 | 作用 |
|---|---|---|
| CPU | Proton 11 ARM64 + FEX | FEX 以 JIT 把 x86-64 转成 ARM64;Apple 硬件 TSO 经 PR_SET_MEM_MODEL 暴露,省掉屏障模拟 |
| 图形(游戏侧) | DXVK(DX9/10/11)、vkd3d-proton(DX12) | DirectX 调用转成 Vulkan |
| 图形(传输) | Mesa Venus → virtio-gpu | 虚拟机内 Vulkan 调用序列化给宿主,共享内存用 16K 对齐的 blob |
| 图形(宿主侧) | virglrenderer → MoltenVK 或 KosmicKrisp | 在 Metal 上回放 Vulkan;MoltenVK 用 UTM 分叉(Metal 3,macOS 15+),KosmicKrisp 是 Mesa 基于 Metal 4 的驱动(macOS 26+),1.7 起随 DMG 附带 |
| 系统 | libkrun + Hypervisor.framework | 轻量虚拟机,无 QEMU;SteamOS 镜像验签后只读挂载,A/B 槽位更新可回滚 |
运行要求:Apple Silicon + macOS 15+,首次建盘约需 20 GB 空闲磁盘(约 14 GB 磁盘镜像加 4.5–6 GB 下载,稀疏磁盘随游戏增长)。截至发稿,仓库 1600+ 星、68 fork、Apache-2.0 许可(内核补丁 GPL-2.0,Mesa/virglrenderer 补丁 MIT),语言以 Swift 为主。
性能数字均来自项目页与 ETA Prime 的实测视频(2026-10-31 发布,播放约 29.3 万次):Stellar Blade 试玩版(DX12)在 M4 Max 上 1280×800 约 60 FPS(MoltenVK);M1 Max 上 KosmicKrisp 约 29 FPS、MoltenVK 约 18 FPS;《死亡之门》标题画面在 M1 Max 上 DXMT 实验路径约 117 FPS,DXVK 路径约 41 FPS。项目页注明这些是真实录屏,仅裁剪窗口和剪切卡顿。
已知限制同样写在明面上:DirectX 12 只到 feature level 12_0(KosmicKrisp)/ 11_0(MoltenVK),shader model 6.0——需要 12_1 或 SM 6.6 的游戏(典型是 Unreal Engine 5 项目)无法启动;阻止虚拟机运行的反作弊不可用;新特效首次出现时会卡 50–100 ms(Metal 编译管线,之后有缓存);切换 Vulkan 驱动会重建着色器缓存,Stellar Blade 试玩版在 M1 Max 上的首次运行编译花了约 28 分钟。
各方说法
ETA PRIME(YouTube 频道,2026-10-31 视频《SteamOS on a Mac?! This Actually Works!》)的结论是”官方 SteamOS 终于在 Apple Silicon 上跑起来了”,强调没有云串流,画面是本地渲染。这一实测是该视频上线后两周内该项目传播的主要来源。项目方自己把边界说得很直白:README 和项目页把”UE5 起不来”和”反作弊不可用”列在已知限制的第一屏,没有回避。GitHub Releases 的版本记录显示项目在 11 月 1 日一天连发 1.9.5、1.9.6、1.9.7 三个版本,11 月 2 日再发 1.9.8,修复多由用户先报的具体问题驱动——DXMT 路径 1.9.5 出黑屏、1.9.6 修复,1.9.7 修 VRChat 退出时整台虚拟机崩溃。尚无主流游戏媒体跟进评测;Hacker News 上暂无讨论帖。这与 Valve 官方保持距离的姿态一致——项目页明确声明与 Valve 无隶属、未经 Valve 背书。
编辑判断
对开发者和技术玩家,FX Steam Launcher 值得关注的点不在”Mac 能玩游戏”——CrossOver 用户早就在跑《赛博朋克 2077》,Epic 也在用 vibe coding 重写自己的启动器抢这块地——而在它的结构:虚拟机里的 Proton → Vulkan → Metal 三层转译,每层的损耗都摆在明处(FEX 转 CPU 指令、Venus 过虚拟机边界、MoltenVK 落 Metal),这让”Mac 游戏性能损失到底花在哪”第一次有了可逐层观测的样本。对普通 Mac 用户,判断标准很朴素:库里没有反作弊的 Windows 游戏、又受够了逐个配 Wine,这套东西值得 20 GB 磁盘一试;但 UE5 游戏玩家现在就可以关掉页面。真正的悬念在 Valve 一侧——Steam Frame 的 ARM64 策略等于给 Mac 游戏生态递了一层现成的底座,如果 Valve 哪天亲自支持 Mac(项目 README 没有这种迹象),这个项目的历史使命可能就结束了;在那之前,它是独立开发者把平台空缺补上的又一个样本。
怎么试
从 GitHub Releases 下载 DMG(Apple Silicon,macOS 15+),首次启动创建 SteamOS 磁盘(预留约 20 GB),登录 Steam 账号即可进库。想复现 ETA Prime 的对照测试,装 Stellar Blade 试玩版,在设置里切换 MoltenVK / KosmicKrisp 对比帧率——注意切换驱动会触发约半小时的着色器重编译。源码构建需要 Xcode 26+、OrbStack 和 rustup,见仓库 README。