uCore-Tutorial-Guide-2022S 0.1 文档
实验环境配置
- 系统环境配置
- Riscv下 C 开发环境配置
- Qemu 模拟器安装
- 运行 uCore-Tutorial-v2
系统环境配置
使用 VMware 或 VirtualBox 安装一台 Ubuntu18.04+ 虚拟机并在上面进行实验。
C 开发环境配置
// 挑选安装目录
cd /usr/bin
// 下载预编译好的Riscv-v工具链
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
// 解压
sudo tar xzf riscv64-unknown-elf-gcc-10.1.0-2020.08.2-x86_64-linux-ubuntu14.tar.gz
// 修改文件名
sudo mv riscv64-unknown-elf-gcc-10.1.0-2020.08.2-x86_64-linux-ubuntu14 riscv64-unknown-elf-gcc
// 添加环境变量
export PATH="/usr/local/riscv64-unknown-elf-gcc/bin:$PATH"
// 安装用于交叉编译的musl-gcc
cd /usr/local
sudo wget -O riscv64-linux-musl-cross.tgz https://cloud.tsinghua.edu.cn/f/b07bac9bcfa14f1dae66/?dl=1
sudo tar xzf riscv64-linux-musl-cross.tgz
export PATH="/usr/local/riscv64-linux-musl-cross/bin:$PATH"
// 装一个cmake
sudo apt install cmake
// 如果是第一次启动虚拟机,需要执行:
sudo apt update
sudo apt upgrade
Qemu 模拟器安装
// 需要使用 Qemu 5.x.x 版本进行实验,而很多 Linux 发行版的软件包管理器默认软件源中的 Qemu 版本过低
// 因此 我们需要从源码手动编译安装 Qemu 模拟器。
# 安装编译所需的依赖包
sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \
gawk build-essential bison flex texinfo gperf libtool patchutils bc \
zlib1g-dev libexpat-dev pkg-config libglib2.0-dev libpixman-1-dev git tmux python3
# 下载源码包
# 如果下载速度过慢可以使用我们提供的百度网盘链接:https://pan.baidu.com/s/1z-iWIPjxjxbdFS2Qf-NKxQ
# 提取码 8woe
wget https://download.qemu.org/qemu-5.0.0.tar.xz
# 解压
tar xJf qemu-5.0.0.tar.xz
# 编译安装并配置 RISC-V 支持
cd qemu-5.0.0
./configure --target-list=riscv64-softmmu,riscv64-linux-user
make -j$(nproc)
编辑 ~/.bashrc
文件(如果使用的是默认的 bash 终端),在文件的末尾加入 几行:
# 注意 $HOME 是 Linux 自动设置的表示你家目录的环境变量,你也可以根据实际位置灵活调整
export PATH="$HOME/Downloads/built/qemu-5.0.0:$PATH"
export PATH="$HOME/Downloads/built/qemu-5.0.0/riscv64-softmmu:$PATH"
export PATH="$HOME/Downloads/built/qemu-5.0.0/riscv64-linux-user:$PATH"
随后即可在当前终端 source ~/.bashrc
更新系统路径,或者直接重启一个新的终端。
此时我们可以确认 Qemu 的版本:
qemu-system-riscv64 --version
qemu-riscv64 --version
在 Qemu 平台上运行 uCore-Tutorial-v2
到这里,恭喜你完成了实验环境的配置,可以开始阅读教程的正文部分了!可以直接clone下面的仓库来开始OS之旅:
git clone https://github.com/LearningOS/uCore-Tutorial-Code-2022S.git
cd uCore-Tutorial-Code-2022S
其他的章节需要处理用户代码,我们可以先运行不需要处理用户代码的 ch1 分支:
> git checkout ch1
> make run LOG=debug
[rustsbi] RustSBI version 0.1.1
.______ __ __ _______.___________. _______..______ __
| _ \ | | | | / | | / || _ \ | |
| |_) | | | | | | (----`---| |----`| (----`| |_) || |
| / | | | | \ \ | | \ \ | _ < | |
| |\ \----.| `--' |.----) | | | .----) | | |_) || |
| _| `._____| \______/ |_______/ |__| |_______/ |______/ |__|
[rustsbi] Platform: QEMU (Version 0.1.0)
[rustsbi] misa: RV64ACDFIMSU
[rustsbi] mideleg: 0x222
[rustsbi] medeleg: 0xb1ab
[rustsbi-dtb] Hart count: cluster0 with 1 cores
[rustsbi] Kernel entry: 0x80200000
hello wrold!
[ERROR 0]stext: 0x0000000080200000
[WARN 0]etext: 0x0000000080201000
[INFO 0]sroda: 0x0000000080201000
[DEBUG 0]eroda: 0x0000000080202000
[DEBUG 0]sdata: 0x0000000080202000
[INFO 0]edata: 0x0000000080202000
[WARN 0]sbss : 0x0000000080212000
[ERROR 0]ebss : 0x0000000080212000
[PANIC 0] os/main.c:39: ALL DONE
:::info
退出 qemu 的方法
如果是正常推出,uCore 会自动关闭 qemu,但如果 os 跑飞了,我们不能通过 Ctrl + C 来推出。此时可以先按下 Ctrl+A ,再按下 X 来退出 Qemu。
:::