Hacker News 中文摘要

RSS订阅

Linux 0.11 用地道 Rust 重写,可在 QEMU 中启动 -- Linux 0.11 rewritten in idiomatic Rust, boots in QEMU

文章摘要

这是一个用现代Rust语言重写的Linux 0.11内核项目,可在i386模拟器上启动,运行完整的Unix风格用户环境,包含进程管理、虚拟内存、文件系统等核心功能,并提供了80多个核心工具。

文章总结

这是一个用现代Rust语言重写的Linux 0.11内核项目。它能在QEMU模拟的i386架构上启动,并运行一套自托管的类Unix用户空间环境。

项目从零开始用Rust重构了1991年的Linux 0.11内核,保留了原始系统的功能语义,同时改进了代码表达方式:采用更强的类型系统、更清晰的模块边界和惯用的抽象。内核在模拟的i386硬件上启动,运行完整的init→shell→coreutils软件栈,并提供了只需一条命令即可构建可启动镜像的工具。

主要特性包括:支持进程管理、带请求分页和写时复制(CoW)的虚拟内存、Minix v1文件系统、ATA磁盘驱动、VGA+PS/2控制台、8250串行控制台、TTY层、信号处理以及完整的系统调用表。Rust用户空间库"user_lib"模仿了std::{fs, io, path, env, process, time}的公共接口,让用户程序看起来像普通Rust代码而非系统调用封装。用户空间包含80多个核心工具和一个手写的POSIX子集shell(sh),支持管道、控制流、函数、通配符、命令和算术替换,以及带Tab补全和历史记录的交互式行编辑器。

项目提供一键构建镜像功能:tools/build-disk.sh脚本编译所有用户程序,按Unix风格文件系统布局,打包成可启动磁盘镜像。配套的镜像工具mbrkit和miniximg是独立crate,可用于其他涉及MBR或Minix v1镜像的项目。项目还包含开发容器配置,克隆后在VS Code中点击"Reopen in Container"即可运行。

快速启动方式:运行tools/build-disk.sh构建磁盘镜像,然后在kernel目录下执行make run(VGA控制台)或make run-console(串行控制台)。启动后进入/root目录的shell提示符,可尝试ls /bin查看已安装程序,或使用算术扩展、for循环、函数定义等shell功能。

测试方面,端到端测试在QEMU中启动内核,通过串行控制台驱动短小的.ktest脚本。测试工具支持运行全部测试、指定测试套件或单个测试,并可选择是否在测试间共享QEMU实例。

项目仓库结构清晰:kernel/为内核代码,userlib/和userlibmacros/提供用户空间库,userprogram/包含80多个核心工具和shell,ktest/为端到端测试运行器,mbrkit/和miniximg/为镜像工具,rootfs/是磁盘镜像内容模板,tools/包含开发脚本,tutorial/为教程(进行中),.devcontainer/提供开发环境配置。

项目状态:内核功能基本完整,与Linux 0.11相当,软盘支持有意排除在外,当前工作集中在完善和工具优化。用户库覆盖了shell和核心工具当前需求,用户空间可用于实际交互操作,教程为早期草稿,计划逐步完善为完整的从零构建指南。

项目开发参考了yuan-xy/Linux-0.11提供的原始Linux 0.11内核源码,以及rcore-os/rCore-Tutorial-v3的部分实现。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 对Rust重写的赞赏与质疑并存

    • 赞赏:评论11认为这是“Rust重写的终极Boss”,LLM辅助编码解锁了此类项目;评论8指出AI辅助转换是正确方法,可并行运行以发现回归问题。
    • 质疑:评论2对比发现Rust实现约5万行代码,而C原版仅8-12千行,质疑其复杂性;评论10询问二进制大小对比。
    • 关键引用:
      • "The ultimate boss of Rust rewrites. Very happy that LLM assisted coding unlocks these kind of projects" (评论11)
      • "Why is the Rust implementation so much more complex and onerous?" (评论2)
  2. 对Rust生态的疲劳与反思

    • 评论4表示曾被条件反射式地反感Rust提及;评论7感叹5年前会认为重写很酷,现在却觉得是“token消耗”。
    • 评论12将Rust evangelism类比为“编程界的重金属”,认为C/C++/Python更高效省事。
    • 关键引用:
      • "I used to like rust, but I feel like I’m being Pavlovian-conditioned to recoil at its mention now." (评论4)
      • "rust evangelism is some people / youth of today trying to differentiate themselves from their parents" (评论12)
  3. 对AI辅助重写的看法

    • 评论5质疑文档充满emoji是否为“AI slop”,并指出已有社区努力(uutils/coreutils)及Canonical的“氧化”计划。
    • 评论13提到自己用Rust uutils构建了bash、git等替代品,认为Rust是“最喜欢的vibe coding语言”。
    • 关键引用:
      • "Docs full of emojis, this is another AI slop?!" (评论5)
      • "it is head and shoulders my favorite vibe coding language." (评论13)
  4. 其他讨论

    • 评论6询问“非惯用Rust”的定义;评论9关注性能对比;评论14提及Minix的复兴可能性。
    • 评论15赞赏Rust社区的积极性,但个人不喜欢其语法。

平衡性总结:
评论呈现明显分歧:一方认为Rust重写是技术进步(尤其结合AI),另一方质疑其代码复杂度、生态疲劳及实用性。中立观点关注性能、二进制大小等具体指标,并指出已有更成熟的社区替代方案。