uCore-Tutorial-Guide-2022S 0.1 文档

实验环境配置

  • 系统环境配置
  • Riscv下 C 开发环境配置
  • Qemu 模拟器安装
  • 运行 uCore-Tutorial-v2

    系统环境配置

    使用 VMware 或 VirtualBox 安装一台 Ubuntu18.04+ 虚拟机并在上面进行实验。

C 开发环境配置

  1. // 挑选安装目录
  2. cd /usr/bin
  3. // 下载预编译好的Riscv-v工具链
  4. sudo wget https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.08/riscv64-unknown-elf-gcc-10.1.0-2020.08.2-x86_64-linux-ubuntu14.tar.gz
  5. // 解压
  6. sudo tar xzf riscv64-unknown-elf-gcc-10.1.0-2020.08.2-x86_64-linux-ubuntu14.tar.gz
  7. // 修改文件名
  8. sudo mv riscv64-unknown-elf-gcc-10.1.0-2020.08.2-x86_64-linux-ubuntu14 riscv64-unknown-elf-gcc
  9. // 添加环境变量
  10. export PATH="/usr/local/riscv64-unknown-elf-gcc/bin:$PATH"
  11. // 安装用于交叉编译的musl-gcc
  12. cd /usr/local
  13. sudo wget -O riscv64-linux-musl-cross.tgz https://cloud.tsinghua.edu.cn/f/b07bac9bcfa14f1dae66/?dl=1
  14. sudo tar xzf riscv64-linux-musl-cross.tgz
  15. export PATH="/usr/local/riscv64-linux-musl-cross/bin:$PATH"
  16. // 装一个cmake
  17. sudo apt install cmake
  18. // 如果是第一次启动虚拟机,需要执行:
  19. sudo apt update
  20. sudo apt upgrade

Qemu 模拟器安装

  1. // 需要使用 Qemu 5.x.x 版本进行实验,而很多 Linux 发行版的软件包管理器默认软件源中的 Qemu 版本过低
  2. // 因此 我们需要从源码手动编译安装 Qemu 模拟器。
  3. # 安装编译所需的依赖包
  4. sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \
  5. gawk build-essential bison flex texinfo gperf libtool patchutils bc \
  6. zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3
  7. # 下载源码包
  8. # 如果下载速度过慢可以使用我们提供的百度网盘链接:https://pan.baidu.com/s/1z-iWIPjxjxbdFS2Qf-NKxQ
  9. # 提取码 8woe
  10. wget https://download.qemu.org/qemu-5.0.0.tar.xz
  11. # 解压
  12. tar xJf qemu-5.0.0.tar.xz
  13. # 编译安装并配置 RISC-V 支持
  14. cd qemu-5.0.0
  15. ./configure --target-list=riscv64-softmmu,riscv64-linux-user
  16. make -j$(nproc)

编辑 ~/.bashrc 文件(如果使用的是默认的 bash 终端),在文件的末尾加入 几行:

  1. # 注意 $HOME 是 Linux 自动设置的表示你家目录的环境变量,你也可以根据实际位置灵活调整
  2. export PATH="$HOME/Downloads/built/qemu-5.0.0:$PATH"
  3. export PATH="$HOME/Downloads/built/qemu-5.0.0/riscv64-softmmu:$PATH"
  4. export PATH="$HOME/Downloads/built/qemu-5.0.0/riscv64-linux-user:$PATH"

随后即可在当前终端 source ~/.bashrc 更新系统路径,或者直接重启一个新的终端。
此时我们可以确认 Qemu 的版本:

  1. qemu-system-riscv64 --version
  2. qemu-riscv64 --version

在 Qemu 平台上运行 uCore-Tutorial-v2

到这里,恭喜你完成了实验环境的配置,可以开始阅读教程的正文部分了!可以直接clone下面的仓库来开始OS之旅:

  1. git clone https://github.com/LearningOS/uCore-Tutorial-Code-2022S.git
  2. cd uCore-Tutorial-Code-2022S

其他的章节需要处理用户代码,我们可以先运行不需要处理用户代码的 ch1 分支:

  1. > git checkout ch1
  2. > make run LOG=debug
  3. [rustsbi] RustSBI version 0.1.1
  4. .______ __ __ _______.___________. _______..______ __
  5. | _ \ | | | | / | | / || _ \ | |
  6. | |_) | | | | | | (----`---| |----`| (----`| |_) || |
  7. | / | | | | \ \ | | \ \ | _ < | |
  8. | |\ \----.| `--' |.----) | | | .----) | | |_) || |
  9. | _| `._____| \______/ |_______/ |__| |_______/ |______/ |__|
  10. [rustsbi] Platform: QEMU (Version 0.1.0)
  11. [rustsbi] misa: RV64ACDFIMSU
  12. [rustsbi] mideleg: 0x222
  13. [rustsbi] medeleg: 0xb1ab
  14. [rustsbi-dtb] Hart count: cluster0 with 1 cores
  15. [rustsbi] Kernel entry: 0x80200000
  16. hello wrold!
  17. [ERROR 0]stext: 0x0000000080200000
  18. [WARN 0]etext: 0x0000000080201000
  19. [INFO 0]sroda: 0x0000000080201000
  20. [DEBUG 0]eroda: 0x0000000080202000
  21. [DEBUG 0]sdata: 0x0000000080202000
  22. [INFO 0]edata: 0x0000000080202000
  23. [WARN 0]sbss : 0x0000000080212000
  24. [ERROR 0]ebss : 0x0000000080212000
  25. [PANIC 0] os/main.c:39: ALL DONE

:::info 退出 qemu 的方法
如果是正常推出,uCore 会自动关闭 qemu,但如果 os 跑飞了,我们不能通过 Ctrl + C 来推出。此时可以先按下 Ctrl+A ,再按下 X 来退出 Qemu。 :::