Moxnox 是一款旨在弥合两种主要计算哲学之间差距的爱好者操作系统:Windows NT 的架构设计与 POSIX 的软件兼容性。与试图尽可能精确复制 Windows 的 ReactOS 不同,Moxnox 采用了 NT 内核的底层接口和系统调用,同时能够运行为类 Unix 系统编写的软件。为了实现这一目标,该项目实现了广泛的 POSIX 函数——涵盖了 POSIX 2024 标准中 1,200 个函数中的约 642 个——并包含完整的 GNU 基础系统。这允许用户在镜像 Windows NT 行为的内核上运行重新编译的类 Unix 软件。

Moxnox 操作系统的终端界面截图。
显示 Moxnox 操作系统命令行环境的截图。github.com

这张图片提供了 Moxnox 操作系统当前命令行界面的视觉呈现。

Moxnox 的技术实现涉及几个特定的设计选择,以维持这种混合身份。该系统使用带有 `.exe` 和 `.dll` 扩展名的 PE 格式二进制文件,并通过结构化异常处理(SEH)处理 C++ 异常。它还采用了 Windows 调用约定(rcx, rdx, r8, r9)以及特定的 C 语言特性,例如 `sizeof(long)` 等于 `sizeof(int32_t)`。然而,它在文件系统结构上与 Windows 有所不同;虽然 NT 使用复杂的隐藏虚拟文件系统,但 Moxnox 使用带有正斜杠和 `/` 根目录的类 POSIX 路径。为了支持 POSIX 端,开发者集成了多个受 Linux 启发的特性,包括 dentry 缓存、大页(large folios)以及 evdev 支持。

尽管 Moxnox 已具备一定的成熟度——其能够自我托管以及约 130,000 行 C++ 代码便证明了这一点——但目前仍存在一些局限性。它缺乏图形用户界面(GUI)、不支持不同的时区,且不具备多用户功能。从性能角度来看,该项目在用户空间堆分配器和 TCP 性能方面面临瓶颈,目前 TCP 默认使用 64KB 窗口且不协商最大分段大小(MSS)。此外,虽然 Btrfs 文件系统支持可用于基本用途,但尚未经过“实战检验”,开发者建议目前不要挂载除临时文件系统以外的任何内容。