返回

文章详情

用地道的Rust重写的Linux 0.11,在QEMU中启动

Hacker News2026年7月13日 20:11

一个现代的Rust重写的Linux 0.11内核——在QEMU的i386上启动,运行自托管的Unix风格用户空间。$ cd kernel && make run … 欢迎来到linux-0.11-rs。https://github.com/Poseidon-fan/linux-0.11-rs (登录:0 @ linux-rs :: 2026年5月27日星期三09:35:43 UTC) [root@linux-rs /root] # ls /bin | wc -l 69 linux-0.11-rs 从头开始用现代Rust重建1991年的Linux 0.11内核。它保留了原始系统的语义——它所做的——同时重新思考它的表现方式:更强的类型,更清晰的模块边界,地道的抽象无处不在。内核在仿真i386硬件上启动,运行完整的init → shell → coreutils栈,并附带工具,可以用一条命令构建自己的可启动映像。✨ 亮点 具有Linux 0.11大部分功能的内核——进程,带有区域分页和写时复制的虚拟内存,Minix v1文件系统,ATA磁盘驱动程序,VGA + PS/2控制台,8250串行控制台,TTY层,信号,和完整的系统调用表。 Rust用户空间“std”——user_lib映射了std::{fs, io, path, env, process, time}的公共形状,使用户程序的阅读方式像普通的Rust,而不是像系统调用管道。 一个真正的用户空间——80多个coreutils加上手写的POSIX子集shell(sh),具有管道、控制流、函数、通配符、命令和算术替换,并带有具有Tab补全和历史记录的交互式行编辑器。 一条命令图像——tools/build-disk.sh编译每个用户程序,将它们布局到Unix风格的文件系统中,并将结果打包成可启动的磁盘映像。 陪伴映像工具——mbrkit和miniximg是独立的crate,对任何处理MBR或Minix v1映像的项目都很有用。 包含开发容器——克隆,在VS Code中打开,点击“在容器中重新打开”,运行make run。 🚀 快速开始 # 构建每个用户程序,布局/etc /dev /bin,打包到disk.img。 tools/build-disk.sh # 构建内核并在QEMU中启动。 cd kernel && make run # VGA控制台 cd kernel && make run-console # 串行控制台(-nographic) 你将在/root中遇到shell提示。尝试: ls /bin # 浏览已安装的内容 echo $(( 1 + 2 * 3 )) # 算术扩展 for f in /etc/ * ; do echo $f ; done # for循环 + 通配符 fact () { if [ $1 -le 1 ] ; then echo 1 ; else echo $(( $1 * $(fact $(( $1 - 1 )) ))) ; fi ; } fact 7 # → 5040 ec < TAB > # 补全为`echo ` ↑ # 浏览命令历史 在开发容器外,您还需要一个最近的Rust nightly(在rust-toolchain.toml中指定),qemu-system-i386,x86_64-linux-gnu-*交叉工具,以及本地映像/测试工具: tools/install-tools.sh # 安装mbrkit,miniximg,ktest到PATH ✅ 测试 端到端测试在QEMU下启动内核,并通过ktest/suites/中的短.ktest脚本驱动串行控制台。 tools/run-tests.sh # 运行所有内容 tools/run-tests.sh --suite=shell # 一个套件 tools/run-tests.sh --test-set=shell.basic # 一个测试 tools/run-tests.sh --disable-reboot # 在测试之间共享一个QEMU 🗂️ 仓库布局 kernel/ 内核本身 user_lib/ std风格用户空间库 user_lib_macros/ proc-macro: #[user_lib::main] user_program/ ~80 coreutils + `sh` shell ktest/ 端到端测试运行器,通过串行驱动QEMU mbrkit/ MBR磁盘映像CLI(也在crates.io上) miniximg/ Minix-fs映像CLI和库 rootfs/ 磁盘映像内容模板(/etc,/root,…) tools/ 开发者脚本(build-disk.sh,run-tests.sh,…) tutorial/ mdbook教程(进行中) .devcontainer/ 准备使用的开发环境 🛣️ 项目状态 内核——相对于Linux 0.11,功能基本完备。软盘支持故意不在范围内;正在进行的工作是润色和工具开发。 用户库——覆盖了shell和coreutils今天所需的内容。 用户空间——可用于真实的交互工作。 教程——早期草稿;长期计划是一个完整的从头构建的教程。 📚 教程 cargo install mdbook cd tutorial && mdbook serve --open 🙏 感谢 感谢yuan-xy/Linux-0.11提供原始Linux 0.11内核源代码,该代码在开发过程中作为重要参考。这个项目的许多部分也受到rcore-os/rCore-Tutorial-v3的启发或参考实现。 📄 许可证 请查看许可证。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡