Skip to content

oscourse-tsinghua/OS2018spring-projects-g15

Repository files navigation

OS2018spring-projects-g15 Rucore

http://os.cs.tsinghua.edu.cn/oscourse/OS2018spring/projects/g15

Tsinghua OS course 2018 Project: Rucore

计54 乔一凡 杨国炜

Introduction

Rucore 是一个使用 rust 实现的 x86_64 下的简单操作系统,并提供了相关的 IDE 硬盘驱动,PS/2 键盘鼠标驱动,能够在 qemu 虚拟环境中运行。

Dependency

运行 Rucore 需要如下依赖:nasm, grub-mkrescue, xorriso, qemu, rustc, rustup, cargo, xargo, x86_64-elf-gcc, x86_64-elf-binutils

由于 Rust 是一门相对年轻的语言,编译器更新很快,语言特性还在不断修改中,新版的 rustc 编译器可能无法顺利编译我们的代码。所以我们固定 rustc 版本为 rustc 1.26.0-nightly (9c9424de5 2018-03-27)

Rust 和 cargo 的安装:

curl https://sh.rustup.rs -sSf | sh

可以使用 rustup 进行 rustc 版本管理:

rustup default nightly-2018-03-27
rustup component add rust-src

Xargo 的安装:

cargo install xargo

交叉编译器安装:

在 Mac OS 下我们提供了 HomeBrew formula 安装 x86_64-elf-gccx86_64-elf-binutils:

brew tap ivanium/gcc_cross_compilers
brew install x86_64-elf-gcc
brwe install x86_64-elf-binutils

Compile & Run

make
make run

Documents

References

Rust OS

  • 一个详尽的使用 Rust 开发 blog_os 的博客: Write an OS in Rust
    • 目标平台为 x86_64
    • 目前有 bootloader,简单的内存管理模块,支持简单的中断机制
  • Reenix: Reenix: A Rust version of the Weenix OS
    • 一个 Brown Univ 的同学的毕业设计,使用 Rust 重写了 weenix 教学 os
    • 不是纯 Rust 的结构,包含大量 C 代码
  • Redox:A Rust Operating System,一个目前最完善的 Rust based OS
  • Stanford CS 140e 课程:Stanford cs140e
    • 使用 Rust 在树莓派上实现 os

Rust Driver

实现中也参考了其他两个 rust 组的实现: