第零章:实验环境说明
本章概要
这一章主要包括:
- 在线实验环境的使用说明
- docker 实验环境的使用说明
- 本地实验环境的使用说明
下面的实验环境建立方式由简单到相对复杂一些,同学们可以基于自己的情况选择合适的实验方式。
在线环境下运行实验
目前在线实验环境是基于实验楼的在线实验环境。用户只需有一个能够上网的 browser 即可进行实验。首先需要在实验楼上注册一个账号,然后在rcore 在线实验环境的网页上输入验证码:wfkblCQp 就可以进入在线的实验环境。尝试执行下面的命令就开始进行实验了。
1. # 编译
2. cd rCore_tutorial; git checkout master; make all
3. # 运行
4. make run
docker 环境下运行实验
我们支持 docker 环境下进行实现,在 docker hub 上已有可用的 docker 环境,在当前目录下运行 make docker 将会从云端拉取 docker 镜像,并将当前目录挂载到 /mnt 位置。
1. # 启动docker环境
2. make docker # 会进入docker中的终端
3. cd /mnt
4. # 然后可以进行编译/qemu中运行实验。例如:
5. # 编译用户态app组成的image
6. cd usr
7. make user_img
8. # 编译内核
9. cd ../os
10. make build
11. # 运行
12. 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 。假定安装好了相关软件,直接只需下面的命令,即可进行实验:
1. # 在把实验代码下载到本地
2. git clone https://github.com/rcore-os/rCore_tutorial.git
3. # 编译
4. cd rCore_tutorial; git checkout master; make all
5. # 运行
6. make run
7. # 如果一切正常,则qemu模拟的risc-v64计算机将输出
9. OpenSBI v0.4 (Jul 2 2019 11:53:53)
10. ____ _____ ____ _____
11. / __ \ / ____| _ \_ _|
12. | | | |_ __ ___ _ __ | (___ | |_) || |
13. | | | | '_ \ / _ \ '_ \ \___ \| _ < | |
14. | |__| | |_) | __/ | | |____) | |_) || |_
15. \____/| .__/ \___|_| |_|_____/|____/_____|
16. | |
17. |_|
19. Platform Name : QEMU Virt Machine
20. Platform HART Features : RV64ACDFIMSU
21. Platform Max HARTs : 8
22. Current Hart : 0
23. Firmware Base : 0x80000000
24. Firmware Size : 112 KB
25. Runtime SBI Version : 0.1
27. PMP0: 0x0000000080000000-0x000000008001ffff (A)
28. PMP1: 0x0000000000000000-0xffffffffffffffff (A,R,W,X)
29. switch satp from 0x8000000000080255 to 0x800000000008100e
30. ++++ setup memory! ++++
31. ++++ setup interrupt! ++++
32. available programs in rust/ are:
33. .
34. ..
35. user_shell
36. notebook
37. hello_world
38. model
39. ++++ setup fs! ++++
40. ++++ setup process! ++++
41. ++++ setup timer! ++++
42. Rust user shell
43. >>
