Windows 上的 BSD:我希望自己早知道存在的那些东西

在 Windows 上运行 BSD 或类 Unix 环境的努力——从早期的 BSD on Windows(BOW)和 coLinux,到 Microsoft 自家的 SFU/Interix,再到今天的 WSL——都凸显了连接这些操作系统既有吸引力也有复杂性。评论者在现代替代方案如虚拟机和兼容层面前权衡这类子系统的实用性,并讨论为什么 POSIX、Linux 特有 API,以及 Windows 稳定的 Win32 接口共同塑造了今天碎片化的可移植性现状。讨论串还涉及 NT 内核设计的优缺点,以及 Microsoft 和更广泛开源生态做出的战略选择如何塑造了哪些平台最终占据主导地位。

Windows 上的历史 BSD(BoW)与 Unix 子系统

  • BoW 被视为一个非常酷的历史产物:在 Windows 3.1 上运行的 BSD 环境,使用 a.out 二进制文件,更像 EMX/HURD 风格的服务,而不是 Cygwin。
  • 提到的优点包括:能在很简陋的硬件上运行、无需格式化磁盘或更改驱动程序、可使用 Winsock,并且能运行 vi、gcc、hack、Apache 1.3 之类的软件。
  • 主要限制是:由于 Win16 的约束,它基本上是单用户的;有人推测,如果它演化成基于 NT 的版本,影响力可能会大得多。
  • 有些人更希望在 Windows 上有一个现代、完整的 BSD 子系统,而不是像 BoW 这样古怪的环境。

其他 Windows 上的 Unix 方案

  • 参与者回忆起一长串方案:Cygwin、MSYS2、Git Bash、coLinux、基于调试器的 Linux、SFU/Interix、UWIN。
  • SFU/Interix 被描述为既“糟糕”又“用着还行”,取决于具体用途;有些人成功编译了真实工作负载,另一些人则觉得它不可靠,而且许可方式也很麻烦。
  • 有人怀念那种启动后直接进入字符模式 Unix 类用户态的 Windows。

跨平台二进制与 POSIX 对比 Linux

  • 有些人希望 Windows 和 Linux 可执行文件之间能原生互通;另一些人则认为当下现实(Win32 + WSL + 容器)大概已经是最好的结果了。
  • Cosmopolitan/APE 和 Win32-on-Linux 被提为有前景的方向,但也指出它们在复杂 API(图形、蓝牙等)上存在局限。
  • 对面向“仅 Linux” API 和 glibc 特定行为有强烈批评;POSIX 被认为尽管对大多数应用已经足够,却未被充分利用。
  • BSD 用户认为,如果开发者避免使用 Linux 特有代码,他们的软件在 BSD 和其他类 Unix 系统上大多会“直接运行”。

静态链接、打包与 Linux 的复杂性

  • 有一段详细的轶事描述了尝试发布一个单一静态链接的 Love2D 游戏二进制文件却失败的经历,原因是深层依赖栈(图像/音频库、Mesa、GPU 驱动)。
  • 在 Linux 上静态链接被描述为脆弱且令人沮丧;更现实的做法被认为是动态链接加打包(.so 文件、AppImage、Flatpak)。
  • 还提到了禁用 cgo 的 Go,作为静态 CLI 二进制文件的一种部分解决方案,不过图形相关仍然很难。

Microsoft、POSIX 与 WSL

  • NT 历史上的 POSIX 子系统被描述为既是政府合同的勾选项,也是一个错失的机会;有人认为,如果它没有被放弃而是继续改进,Linux 后来的主导地位可能会被削弱。
  • WSL/WSL2 被称作一种“mea culpa”,在早先的子系统被移除后,又重新引入了类 Unix 能力。
  • 关于 Interix 也有争论:一方称它是“买来后扼杀”,另一方则指出它曾被官方支持了十多年,尽管其可用性据说后来下降了。

内核设计:NT 对比 Unix

  • 有些人称赞 NT 内核继承自 VMS 的血统和设计;也有人说它“不是很好 / 也不算糟”,并批评其驱动复杂性、IRQL 模型、HAL,以及分裂的网络栈。
  • 对于基准测试或日常体验是否显示 NT 特别强或特别弱,大家存在分歧;普遍共识是 Win32 层基本掩盖了其底下的优雅与否。

更广泛的挫败感:生态与生命周期

  • 对专有生态导致硬件过时的抱怨(例如打印机在新 macOS 版本上失去驱动支持)。
  • 担心 Linux 在硬件和 DRM 支持上的主导地位反而减少了现实中的操作系统选择,因为其他自由操作系统不得不导入 Linux 代码来跟上。
  • 有人认为行业低估了向后兼容和保存的重要性,导致了不必要的浪费。

离题:财富、创造力与期望

  • 有人跑题讨论:富有的创作者有时在变有钱后就不再做“酷项目”了(比如雄心勃勃的游戏或 OS 实验)。
  • 对此意见分歧:有人批评这是一种浪费机会,另一些人则认为早期作品已经“足够”作出贡献。