开源教程 rust-raspberrypi-OS-tutorials,用 Rust 在树莓派上从零做一个操作系统

 

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. 1. 安装 Rust(如果没装):
    curl –proto '=https' –tlsv1.2 -sSf https://sh.rustup.rs | sh
    source $HOME/.cargo/env

  2. 2. 安装辅助工具:
    cargo install cargo-binutils rustfilt

  3. 3. 克隆仓库并进入:
    git clone https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials
    cd rust-raspberrypi-OS-tutorials

  4. 4. 推荐使用 Docker(作者提供了容器,很多依赖在容器里已备好):

    • • 在第一次需要时,仓库会自动拉取容器;你也可以手动看 docker 文件夹。

  5. 5. 在 QEMU 上跑第一章(一般教程里有 makefile/说明):
    make qemu (或按 README 指定命令)

  6. 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

 

发表评论