FTL 是一款专为云环境设计的全新操作系统,由 GitHub 上的 nuta 项目创建。该项目将其定位为“一款全新的操作系统,旨在成为云环境中 Linux/BSD/Illumos 的替代方案。”[primary source]
一张展示 FTL 操作系统仓库的 GitHub 开放图谱图像,说明了该项目在云操作系统研究中的存在。
FTL 设计中最具决定性的特征是其“用户态 OS”方法。FTL 并未在内核中实现进程管理、虚拟文件系统和 TCP 等操作系统功能,而是将这些功能移至一个名为“用户态 OS”的用户态库中。[primary source] 这种设计类似于 exokernel,即传统的单体内核功能被移至用户态库(库操作系统)。FTL 内核本身提供类似虚拟机管理器的原语:vCPU(线程)、虚拟地址空间(vmspace)和虚拟网络,作为一个复用硬件资源的极简接口。
FTL 旨在成为云环境中 Linux 的直接替代方案。其 Linux 兼容层被实现为一个用户态库,而非内核特性,这意味着每个 FTL 容器都拥有自己独立的类 Linux 应用内核。[primary source] 这种方法与传统的内核级虚拟化不同——FTL 使用用户态异常处理,而非硬件加速的虚拟化。该项目指出,这项技术也出现在 WSL 1、FreeBSD 的 Linuxulator 和 OSv 等系统中,但 FTL 将其实现为用户态库的做法独树一帜。
该项目表示,它将“比 Linux 更接近 BSD”,计划随 FTL 捆绑集成的用户态软件。[primary source] 它采用 MIT 和 Apache 2.0 双许可。[primary source]
FTL 被设计得轻量,适用于资源受限的设备,拥有一个“易于理解且可测试的代码库”,具备 TypeScript 端到端测试以及快速的编辑-编译-运行周期。[primary source] 用户可以通过安装 Rust 工具链、LLVM 工具和 QEMU 来开始使用,然后运行 ./run.sh 进行构建和测试。[primary source]
该项目承认,其 Linux ABI“只是 FTL 上可用的众多操作系统接口之一”,并计划在 Linux 兼容性之外添加自己的 personality 和系统调用。[primary source] 计划中的“interceptor”功能将允许在运行时对操作系统组件进行控制,以实现速率限制、安全审计、网络数据包路由和热补丁。[primary source]