Proton和Wine有什么区别?

7 人参与

在 Linux 桌面上想要运行 Windows 游戏或软件,往往会听到两个名字:Proton 与 Wine。它们都声称能够把 Windows 的二进制文件搬进 Linux 的世界,却各自走着不同的技术路线和生态路径。

基本概念

  • Wine(Wine Is Not an Emulator)本质上是一个兼容层,直接把 Windows API 调用映射到 POSIX 系统调用。它不依赖 Windows 本体,也不需要完整的 Windows 镜像。
  • Proton 是 Valve 为 Steam 平台专门打造的分支,它在 Wine 的代码基础上加入了 DXVK、vkd3d、FAudio 等图形和音频翻译层,并配合 Steam 的 DRM 与内容分发机制。

实现差异

  • 系统调用映射

Wine 通过实现 Win32、Win64 的用户空间 DLL(如 kernel32.dlluser32.dll),在运行时拦截并转化为 Linux 的系统调用。Proton 采用同样的 DLL,但在图形层面强制使用 Vulkan 后端,几乎所有 DirectX 9/10/11 调用都会被 DXVK 或 vkd3d 劫持。

  • 文件系统布局

Wine 默认在用户目录下创建 ~/.wine,模拟完整的 C: 盘符结构。Proton 则在每个 Steam 游戏的 “pfx” 目录里生成独立的前置环境,避免不同游戏之间的 DLL 冲突。

  • 启动方式

运行 Wine 程序时,常见的指令是 wine program.exe,可以自行指定前置目录。Proton 则通过 Steam 的 “使用特定 Proton 版本” 选项自动注入,玩家几乎不需要手动操作。

性能与社区支持

项目ProtonWine
图形翻译默认使用 DXVK/vkd3d,Vulkan 性能接近原生 DirectX需要自行安装 DXVK,默认基于 OpenGL,性能略低
音频处理内置 FAudio,实现低延迟依赖 Wine 自带的 ALSA/PulseAudio 转换,效果不一
更新频率Valve 每月同步更新,针对 Steam 游戏做专项修复Wine 社区每两周发布一次,覆盖面更广但针对性弱
官方文档以 Steam 社区为主,教程集中在 Steam Play 页面官方 Wiki 完整,覆盖桌面软件与服务器场景

从表格可以看出,Proton 在游戏场景下的图形与音频优化更为激进,而 Wine 则在通用 Windows 软件兼容性上更为全面。

适用场景对比

  • 想在 Steam 上畅玩《赛博朋克 2077》或《黑曜石》,直接在游戏属性里切换到最新的 Proton 版本,几乎不需要手动调参。
  • 需要运行企业级 Office、AutoCAD 或自制的内部工具,使用 Wine 并自行配置 winetricksdxvk,可以更细粒度地控制 DLL 覆盖与注册表。
  • 多用户共享同一台机器,Proton 的 per‑game 前置环境可以防止用户 A 的自定义 DLL 影响用户 B 的游戏启动;而 Wine 的全局前置目录则需要手动切换 WINEPREFIX

小结

Proton 与 Wine 并不是竞争对手,而是同一条技术链上的不同节点。Proton 将 Wine 的通用兼容层包装进了 Steam 的交付体系,专注于游戏性能与一键体验;Wine 则保持了更开放的接口,适合需要深度定制的桌面软件。了解它们的实现细节后,选择合适的工具就不再是盲目的“装个兼容层”,而是对症下药的技术决策。或许,等到下次更新时,又会有新的惊喜。

参与讨论

7 条评论

延伸阅读

登录

ACGN Android Arch Linux C# C++ IT兴趣 Linux Magisk模块 Python Python Root 权限 SEO优化 Steam Ubuntu WinUI WinUI3 三星刷机 东方Project 个人博客 中文输入法 人工智能 历史课件 同人游戏 域名管理 学生生活 改革开放 数码设备 新年快乐 新年祝福 机器学习 游戏 现代化建设 科技 空气质量 终端美化 网站迁移 网站运营 节日问候 语言设置 音乐