rCore操作系统实践

 OS  Rust  RISC-V  QEMU 󰈭 530字

在寻找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

成功启动虚拟机环境:

嗨! 这里是 rqdmap 的个人博客, 我正关注 GNU/Linux 桌面系统, Linux 内核, 后端开发, Python, Rust 以及一切有趣的计算机技术! 希望我的内容能对你有所帮助~
如果你遇到了任何问题, 包括但不限于: 博客内容说明不清楚或错误; 样式版面混乱等问题, 请通过邮箱 rqdmap@gmail.com 联系我!
修改记录:
  • 2023-08-16 21:51:42Fix Typo: rsic -> risc
  • 2023-07-24 19:50:05rCore: 总览与基本执行环境
rCore操作系统实践