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-gcccd /usr/localsudo wget -O riscv64-linux-musl-cross.tgz https://cloud.tsinghua.edu.cn/f/b07bac9bcfa14f1dae66/?dl=1sudo tar xzf riscv64-linux-musl-cross.tgzexport PATH="/usr/local/riscv64-linux-musl-cross/bin:$PATH"// 装一个cmakesudo apt install cmake// 如果是第一次启动虚拟机,需要执行:sudo apt updatesudo 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# 提取码 8woewget 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-usermake -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 --versionqemu-riscv64 --version
在 Qemu 平台上运行 uCore-Tutorial-v2
到这里,恭喜你完成了实验环境的配置,可以开始阅读教程的正文部分了!可以直接clone下面的仓库来开始OS之旅:
git clone https://github.com/LearningOS/uCore-Tutorial-Code-2022S.gitcd 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: 0x80200000hello 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。
:::
