第零章:实验环境说明

本章概要

这一章主要包括:

  • 在线实验环境的使用说明
  • docker 实验环境的使用说明
  • 本地实验环境的使用说明

下面的实验环境建立方式由简单到相对复杂一些,同学们可以基于自己的情况选择合适的实验方式。

在线环境下运行实验

目前在线实验环境是基于实验楼的在线实验环境。用户只需有一个能够上网的 browser 即可进行实验。首先需要在实验楼上注册一个账号,然后在rcore 在线实验环境的网页上输入验证码:wfkblCQp 就可以进入在线的实验环境。尝试执行下面的命令就开始进行实验了。

# 编译
cd rCore_tutorial;  git checkout master; make all
# 运行
make run

docker 环境下运行实验

我们支持 docker 环境下进行实现,在 docker hub 上已有可用的 docker 环境,在当前目录下运行 make docker 将会从云端拉取 docker 镜像,并将当前目录挂载到 /mnt 位置。

# 启动docker环境
make docker # 会进入docker中的终端
cd /mnt
# 然后可以进行编译/qemu中运行实验。例如:
# 编译用户态app组成的image
cd usr
make user_img
# 编译内核
cd ../os
make build
# 运行
make run

如有兴趣,也可以自行构建/调整 docker 镜像,相关的 Dockerfile 文件在当前目录下,我们提供了 make docker_build 命令来帮助构建,详情请看 Dockerfile 和 Makefile

本地 Linux 环境下运行实验

我们也支持本地 Linux 环境下开展实验,不过需要提前安装相关软件包,如 rustc nightly,qemu-4.1.0+,device-tree-compiler 等(后续章节会提供安装教程)。具体细节可参考 支持 docker 建立的 Dockerfile支持 github 自动测试的 main.yml 。假定安装好了相关软件,直接只需下面的命令,即可进行实验:

# 在把实验代码下载到本地
git clone  https://github.com/rcore-os/rCore_tutorial.git
# 编译
cd rCore_tutorial;  git checkout master; make all
# 运行
make run
# 如果一切正常,则qemu模拟的risc-v64计算机将输出

OpenSBI v0.4 (Jul  2 2019 11:53:53)
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name          : QEMU Virt Machine
Platform HART Features : RV64ACDFIMSU
Platform Max HARTs     : 8
Current Hart           : 0
Firmware Base          : 0x80000000
Firmware Size          : 112 KB
Runtime SBI Version    : 0.1

PMP0: 0x0000000080000000-0x000000008001ffff (A)
PMP1: 0x0000000000000000-0xffffffffffffffff (A,R,W,X)
switch satp from 0x8000000000080255 to 0x800000000008100e
++++ setup memory!    ++++
++++ setup interrupt! ++++
available programs in rust/ are:
  .
  ..
  user_shell
  notebook
  hello_world
  model
++++ setup fs!        ++++
++++ setup process!   ++++
++++ setup timer!     ++++
Rust user shell
>>

results matching ""

    No results matching ""