Hacker News 中文摘要

RSS订阅

Wine 移植到 OpenBSD -- Wine Ported to OpenBSD

在可能是今年最令人意外的移植提案中,托马斯·弗罗魏因(Thomas Frohwein)自豪地提出了一个新的 Wine(wine)移植。这是一次集体努力,此前围绕 %gs/gsbase 问题已有一些讨论。随着安德烈(Andrii)用软件方案解决 %gs 问题,大门就此打开,他对此的解释是“无法设置 gsbase,因此我们在模拟 %”。

正文

这可能是今年最令人意外的 port 提案,我很自豪地提交一个新的 wine port。这是集体努力的成果,此前有人就 %gs/gsbase 问题做了不少推动(见讨论串 [1])。Andrii 用软件方式解决了 %gs 问题,大门由此敞开。他给我的解释是:“无法设置 gsbase,所以我们在指令上模拟 %gs 前缀。”总体来看,主要工作由 Andrii 和 Fabien 完成,向他们致敬。

结果发现,人们对 wine 的兴趣正迅速高涨 [2],这与 5 到 10 年前不同,因为许多 Windows 软件此后已经转向 64 位。

此后我们测试了几十款 64 位 Windows 软件,大多成功。截图见 [3][4][5],直播录像见 [6] 等。即便是上个月刚发行的《巫师 3》(The Witcher 3)重制版也能运行,而且运行良好(需要加入 vkd3d-proton;见 README;直播见 [7],由于用 ffmpeg 在系统内录制,看起来不如实际流畅)。

最大的限制是 WoW64 不工作,因此 32 位 Windows 软件仍然无法运行。可以用 file(1) 轻松检查 .exe/.dll——如果显示类似“MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit”,那就是 32 位的。

builtin-tests 目前被禁用。启用它们相当麻烦,因为它们需要访问 X server,而且多个测试仍会挂起;不过在大量游戏的实机测试中并未观察到这种情况。这项工作仍在进行中。

想测试的话,我建议用 Notepad++,它是一款小巧、相当简单的 64 位 Windows 软件 [8]。请注意,这(一如既往)是风险自负的软件(见 [9])。建议为此建立一个单独的非特权用户,直到我们研究清楚能否做一些隔离,可能会用到 unveil(2)。

感谢 brynet@、bentley@、pertho(在 irc.libera.chat 的 #openbsd-gaming 频道)和 vl_ms 对 port 草稿的测试与贡献。

这样可以吗?

[1] https://marc.info/?l=openbsd-tech&m=179067466617674&w=2 [2] https://marc.info/?l=openbsd-tech&m=179070170845285&w=2 [3] https://old.reddit.com/r/openbsdgaming/comments/1x4e7fi/somesamplesfromwipwineport/ [4] https://old.reddit.com/r/openbsdgaming/comments/1x5yxpu/morewineonopenbsdscreenshots/ [5] https://old.reddit.com/r/openbsdgaming/comments/1x7z2ry/evenmorewineonopenbsd_proof/ [6] https://video.gamerstavern.online/w/8tjjFRDtGJQZwxfE4ojVoC [7] https://video.gamerstavern.online/w/oZcTRKL5JMiU4M4FqGKcNH [8] https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v8.9.8.1/npp.8.9.8.1.portable.x64.zip [9] https://gitlab.winehq.org/wine/wine/-/wikis/FAQ#is-wine-malware-compatible

附件 #3(application/x-compressed-tar)

评论

讨论几乎一边倒地惊叹 Wine 能在 OpenBSD 上跑起《巫师 3 重制版》等大型游戏,气氛热烈并伴随玩梗;真正被追问的分歧不在移植本身,而在 Nvidia 等专有驱动能否跟上、这些 OpenBSD 专属改动能否进入上游 Wine,以及 OpenBSD 是否正借此类项目成为 slopcode 的避难所。

认为这是不可思议的移植成就,完成度远超预期

  • 多数人被运行《巫师 3 重制版》等 3A 大作的实际效果震撼,认为这不只是“能编译”而是真能玩;有人贴出《极乐迪斯科》《空洞骑士》《Prey 2017》《死亡搁浅》等游戏的实测视频佐证,还有人表示想直接打赏开发者。(高赞) > 这活儿太不可思议了,连《巫师》重制版都能跑起来,我要是有钱就直接给这些人打赏。(@ndbe)

认为实际体验仍受 OpenBSD 专属适配和 Nvidia 驱动支持制约

  • 有人好奇要把移植跑通需要处理多少 OpenBSD 特有细节;也有人直接推测自己用的 Nvidia 显卡大概无法运行,因为 OpenBSD 对专有驱动支持有限。(少数人) > 这太赞了,但我猜我这套 Nvidia 显卡是用不了了。(@CodeCompost)

认为这让 OpenBSD 更像 slopcode 的避难所

  • 在 slopcode 泛滥的背景下,OpenBSD 对代码质量的坚持被视为一种避难所;因此 Wine 能被移植过来尤其让人欢迎。(少数人) > 在 OpenBSD 正逐渐成为 slopcode 避难所的当口,这消息尤其让人欢迎。(@RunSet)

认为该移植已获 OpenBSD ports 维护者放行,但后续麻烦难免

  • OpenBSD 开发者 brynet 表示自己已经放行了这个 port,并提前道歉,既确认移植进入 ports,也预判会引发后续问题或争议。(少数人) > 这个 port 是我点头放行的,先提前道个歉。(@brynet)

有价值的补充

  • 上游 Wine 维护者对接受 OpenBSD 支持持保守态度,移植者因此把大量改动标成 OpenBSD only;具体技术边界见引用。 > 移植者把所有 OpenBSD 相关改动都标成 OpenBSD only,只为简化工作和标明边界,而 Wine 维护者连让 Wine 能在 OpenBSD 编译的补丁都很犹豫,更不可能接受 %gs stub 这类改动。(@t-3)
  • 这些改动里有一部分其实也能跑在别的系统上:%gs stubs 不会在 Linux 上构建,因为 Linux 下 %gs 已正确设置;SIGUSR1 虽能工作,但没那么优化。反直觉的是,最核心的 %gs stub 修复恰恰是上游绝不可能收下的东西。
  • PS5 基于 FreeBSD 而不是 OpenBSD,因此不要把这次 Wine 移植与 PS5 的开发动能混为一谈;这也纠正了把 OpenBSD 和 FreeBSD 混淆的常见误解。 > 我一开始还以为这和 PS5 的开发动能有关,但 PS5 跑的是 FreeBSD 而不是 OpenBSD。(@ericfrederich)