一个只有 29 颗 star 的仓库,重写出了一整套能在 QEMU 里真正跑起来的 32 位类 Unix 系统:进程管理、带 demand paging 和 CoW fork 的虚拟内存、Minix v1 文件系统、ATA 驱动、VGA/串口控制台,外加 80 多个 coreutils 和一个手写的 POSIX 子集 shell。开发者 Poseidon-fan 干的这件事,是把 1991 年的 Linux 0.11 内核用「地道 Rust」从头写一遍——语义不变,表达方式全换。
这不是缝合怪,是逐行重译
项目叫 linux-0.11-rs,351 次提交攒出来的东西相当完整:内核层面几乎覆盖了原版 Linux 0.11 该有的一切,只有软盘驱动被明确排除在外。用户态那边配了一个仿 std::{fs, io, path, env, process, time} 的库 user_lib,让用户程序写起来像普通 Rust,而不是裸系统调用堆砌。tools/build-disk.sh 一条命令就能把这些编译打包成可启动镜像,还带 devcontainer 和跑在 QEMU 串口上的端到端测试套件。
Linux 0.11 之所以值得被反复重写,是因为它小得能被一个人逐行读完,又完整到具备现代内核的基本骨架——多任务、页共享、简易文件系统。用 Rust 重写经典系统本就是系统编程圈的一条持续暗线:面向教学的 rCore、微内核完整生态的 Redox、支持组件热替换的实验性系统 Theseus,还有专攻 Linux 二进制兼容的 Kerla、跑在 ARM64 上的 moss。linux-0.11-rs 在这条线里的位置很específico:不追新硬件、不补网络协议栈,只做一件事——把 0.11 的历史结构原样保留,换一套语言重新讲一遍。
类型系统治得了表达,治不了 unsafe
这才是这类项目最容易被忽略的地方。「地道 Rust 重写」听起来像是给内核上了一层安全罩,但引导汇编、中断入口、上下文切换、页表操作、设备驱动——这几块历史上最容易出漏洞的代码,在任何语言里都得直接摸硬件、直接管裸指针,Rust 的边界检查和所有权系统在这里统统失效,只能标 unsafe 放行。
所以「地道 Rust 重写」的真实收益,是类型清晰度和模块边界更干净,不是内存安全的魔法保证。这个区别对任何想靠「用 Rust 重写」来给老系统贴安全标签的项目都成立,不只是这一个仓库。
29 颗 star 怎么被看见
更有意思的一个细节是:这么小的仓库,却已经进入了技术媒体的讨论视野。检索这个项目名字时,不止一次得到「找不到确切匹配的仓库」的结果——搜索和 AI 工具对这种发布不久、体量极小的新项目,存在明显的索引滞后。它大概率是靠 Hacker News、Reddit 这类极客社区的自然传播冒出头的,而不是搜索引擎主动发现的。
rCore 的原始仓库已经标注「不再维护」,把用户导向了 zCore、ArceOS 等后继项目。其兴也勃焉,其亡也忽焉——放到「重写经典系统」这条赛道上不完全贴切,但足够提醒一件事:这类项目常常在热度期写得很快,教程和维护却容易半途而废。linux-0.11-rs 的教程眼下还是早期草稿,user_lib 也只覆盖了 shell 和 coreutils 当下需要的那部分,不是完整的 std 移植。
- 提醒.项目状态自评「相对 0.11 基本功能完整」,但教程完成度、后续维护动态才是真正决定它能不能沉淀成教学材料的变量
表达可以更干净,风险从来不会被语言本身兜底
对操作系统教学而言,这多了一份能和原版 C 代码逐行对照的现代教材;对 Rust 系统编程社区而言,它又一次验证了这条重写潮流还有人在做,也提供了一个具体案例去讨论 unsafe 到底该留在哪里。真正该盯的不是这个仓库能不能涨粉,而是它的教程能不能写完、有没有人接着往下维护——这才是判断它会成为经典教材还是又一个停更仓库的分水岭。
