rCore操作系统实践
在寻找Rust实践性的学习材料的过程中发现了rCore-OS项目, 其基于RISC-V架构实现一个用Rust写的操作系统; 教程看上去也不错, 十分的详实且成体系: rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档
因而准备照着教程学习一下rcore-os, 并企图在过程中对Rust的基本编程与操作系统等方面都能获得更进一步的理解.
实验环境搭建
rCore需要的环境主要是Linux下的:
-
C与Rust开发环境
-
QEMU模拟器
-
riscv64-gdb
这些并不罕见, 在我的机器上安装起来非常的方便.
参考资料为实验环境配置 - rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档
为了实际运行, cd os && make run
即可; 不过在本机上, cargo生成的binutils工具包并不在默认的路径下, 导致Makefile会报错找不到该执行文件:
1env:
2 (rustup target list | grep "riscv64gc-unknown-none-elf (installed)") || rustup target add $(TARGET)
3 cargo install cargo-binutils
4 rustup component add rust-src
5 rustup component add llvm-tools-preview
6
7...
8
9# Binutils
10OBJDUMP := rust-objdump --arch-name=riscv64
11OBJCOPY := rust-objcopy --binary-architecture=riscv64
这会默认生成软件包到$HOME/.cargo/bin/
下, 需要添加该路径至$PATH中.
不过在Rust - ArchWiki中说的是, 使用arch软件包rustup安装会:
This package has the advantage that the various Rust executables live in /usr/bin, instead of ~/.cargo/bin, removing the need to add another directory to your PATH.
导致我默认甚至没有考虑可能是这个问题…
在$HOME/.zshrc
中添加:
1PATH=$PATH:$HOME/.cargo/bin
成功启动虚拟机环境: