Maestro:一个与 Linux 兼容的 Rust 内核

一个名为 Maestro 的新业余操作系统,目标是用 Rust 重实现一个与 Linux 兼容的内核,并因此引发了关于系统调用级兼容性在多大程度上可行的争论——尤其是在缺乏 Linux 所依赖的庞大驱动生态和不稳定的内核内 API 的情况下。评论者们权衡了一个大体“内存更安全”的内核可能带来的安全收益,特别是在容器隔离方面,同时也指出内核仍然需要大量 `unsafe` 代码,仍可能出现逻辑 bug,而且必须与不安全的硬件和固件交互。这个项目还重新激起了关于单体内核与微内核设计、以及 GPL 风格的版权共享与宽松许可证之间的长期争论;许多人认为 Rust 内核实验很有价值,但怀疑它们短期内会取代 Linux。

项目范围与目标

  • Maestro 是一个业余操作系统,最初只是学校作业:一个 32 位、兼容 Linux syscall、以 Rust 编写的单体内核。
  • 目标主要是教育用途;任何外部采用都只是额外收获。
  • 目前大约实现了三分之一的 Linux syscalls,但已经能启动到可以运行 bash,并且离运行 vim 和编译器等工具也很接近。
  • 使用的是经典硬件驱动(VGA、PS/2、IDE/ATA);评论者建议下一步实际目标应放在虚拟机和 virtio 上。
  • 普遍认为要实现完整的 Linux 应用兼容性还需要多年,主要受限于复杂的 syscalls、TTY 栈以及庞大的驱动生态系统。

Rust、内存安全与安全性

  • 许多人认为 Rust 内核能大幅降低风险:更少的内存 bug、更好地隔离 unsafe 区域,以及更难被利用(有些 Rust 漏洞利用尝试的轶事被用作佐证)。
  • 也有人强调这是“memory safer”而不是“memory safe”:内核和驱动仍然需要 unsafe,而且逻辑错误、配置错误、硬件问题和固件仍然是主要攻击面。
  • 围绕容器的争论也很多:有人认为内核内存 bug 是容器难以成为强隔离边界的主要原因;也有人说现实中的大多数容器逃逸都源于配置失误和更广泛的内核攻击面,而不只是内存错误。
  • 还讨论了微内核(例如 seL4)和形式化验证,作为提供更强保证的替代或补充路径。

驱动、ABI 稳定性与复用

  • 基本共识是:驱动是操作系统工作的最难部分。
  • Linux 的用户态 ABI 非常稳定;但其内核中的驱动 ABI 则是刻意设计得不稳定,以便内部演进并抑制闭源驱动,这使得跨内核模块兼容性不现实。
  • 对 Maestro 的建议包括:聚焦少量硬件或虚拟机、通过 rump kernels 复用,甚至在 VM 中运行 Linux 来补齐缺失的驱动。

架构与设计争论

  • 有些人希望 Maestro 走微内核或更激进的架构路线;另一些人则指出,把“Rust + Linux 兼容”结合起来本身就已经足够实验性了。
  • 一个很大的子线程在争论是否应使用 RISC-V 汇编编写内核,以避免语言/编译器“复杂性”;大多数回复者都认为这不现实、不可维护,而且并不会在安全性或可移植性上带来实质改善。

许可讨论

  • Maestro 采用 MIT 许可证。
  • 一派警告这会吸引专有分支,并造成“为未来的公司白干活”,认为 GPL(或 AGPL)更能维护用户自由,并且帮助 Linux 取得成功。
  • 另一派反驳说,宽松许可证同样能促成充满活力的社区生态,GPL 也不能保证良好行为,而且如果专有分支与原项目并存,用户并不会失去什么。
  • 还有人建议直接采用与 Linux 相同的 GPLv2,以便更容易共享代码并避免无休止的许可争论。