rust-raspberrypi-OS-tutorials 是
-
• 一个开源教程系列,每一章都是一个可单独启动的内核镜像。
-
• 每章在前一章的基础上扩展新功能(串口输出、虚拟内存、异常处理……)。
-
• 目标是 ARMv8-A(AArch64),主要跑在树莓派 3 和 4。
-
• 用 Rust 做系统开发,兼顾性能与内存安全。
-
• 作者为 Andre(@andre-richter),并且有中文、英文等多语言说明。
它解决了哪些痛点?
-
• 传统裸机/内核开发工具链混乱:交叉编译、QEMU、OpenOCD、GDB、依赖版本……安装起来经常踩坑。
-
• 教程零散,不够连贯:很多资料是片段式的,没法一步步从 0 到 1。
-
• 语言门槛:C 里野指针、UB 很容易让新人崩溃,Rust 的安全特性能减轻不少痛苦。
-
• 想跑到真机上测试很麻烦:教程提供串口加载、chainloader、Minipush 等工具,能比较容易在真实 Raspberry Pi 上试验。
安装与快速上手(实用步骤)
下面我把关键步骤简单写清楚,照着做一般不会太坑。
环境要求一览表
|
项目 |
说明 |
|
主机系统 |
Linux 为主,macOS 部分支持(但更实验性) |
|
必备工具 |
Rust(rustup)、cargo-binutils、rustfilt、Docker(推荐) |
|
可选 |
QEMU(模拟)、USB-串口线(CP2102 芯片优选)、OpenOCD、GDB |
|
推荐编辑器 |
VS Code + Rust Analyzer |
快速上手(最短路径)
-
1. 安装 Rust(如果没装):
curl –proto '=https' –tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env -
2. 安装辅助工具:
cargo install cargo-binutils rustfilt -
3. 克隆仓库并进入:
git clone https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials
cd rust-raspberrypi-OS-tutorials -
4. 推荐使用 Docker(作者提供了容器,很多依赖在容器里已备好):
-
• 在第一次需要时,仓库会自动拉取容器;你也可以手动看 docker 文件夹。
-
5. 在 QEMU 上跑第一章(一般教程里有 makefile/说明):
make qemu (或按 README 指定命令) -
6. 想在真机上跑:准备 SD 卡,从第 5 章开始能用 UART 输出;用 USB 串口线接 GPIO14/15(TX/RX)和 GND,按教程写入镜像并查看串口输出。
使用体验:优势与不足
优点
-
• Rust 的类型系统、所有权模型能把很多常见内核 bug(悬空引用、双重释放)降到很低。
-
• 教程连贯:每章都是可跑的镜像,且有 diff,查改动超方便。
-
• 支持真机:从模拟器平滑过渡到树莓派是真正值钱的点。
-
• 附带工具链容器,减少了“环境折腾”这个大痛点。
-
• 文档和代码注释都很细,make doc 可以生成文档浏览代码。
缺点
-
• 学习曲线还是陡:你要懂点 ARM 架构、启动流程、链接脚本、裸机 I/O(但教程会一步步教)。
-
• 某些平台(macOS)支持不如 Linux 顺畅,可能需要手动调 Ruby、gem 等。
-
• Rust 在内核开发里仍有生态限制(比如某些库没法用 std,需用 no_std),对初学者要适应。
-
• 如果你想要的是成熟的操作系统(完整进程调度、文件系统、驱动),这里只是入门与教学,功能不会那么“生产”。
小结
说白了,这套教程就像一本带着可运行 demo 的“内核实验手册”。你会一步步把一个“只有几行输出”的裸内核,扩展成能在树莓派上运行、能打印串口、能管理内存的核心程序。用 Rust 写内核,既能学到底层又少了很多“踩雷”的代价。要是你热衷于“自己造轮子”,想知道操作系统里面那些看不到的东西到底怎么动的,这个项目是上手成本和回报都很划算的那种。
项目地址:https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials