最近在复习(预习)操作系统相关的知识,因为想要通过实践的方式学习,所以了解到有一个叫 xv6-riscv 的项目。
这是一个基于 UNIX 思想、在 RISC-V 指令集的基础上实现的小型操作系统,运作在 QEMU 平台上。它代码短功能全,被 MIT6.1810 课程作为实验的平台。本文我将会收集一些有用的课程相关信息和食用教程。
xv6-riscv 公开资料
对于这个系统本身,除了在 Github 上开源的源代码以外,最好的资料就是阅读 xv6-riscv-book,在这个 book 仓库有包含 HTML 和 PDF 版本的链接。
环境配置和 Labs
从公开的 Github 源代码开始构建当然不错,不过,MIT 为我们开放了各年的实验课所使用的代码库。可以在 MIT 的课程页找到,不过也在这里列出来。
首先,我们先安装好编译的工具链。
# Debian or Ubuntu
# 例如,这里我们可以考虑用 WSL
# sudo apt-get update && sudo apt-get upgrade
sudo apt-get install \
git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu \
binutils-riscv64-linux-gnu
# Arch Linux
sudo pacman -S \
riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb \
qemu-emulators-full bc git base-devel
# macOS
brew tap riscv/riscv
brew install riscv-tools
PATH=$PATH:/usr/local/opt/riscv-gnu-toolchain/bin
brew install qemu
然后,我们克隆 MIT 给我们开放的仓库。以 Utilities 实验 为例,我们切到对应分支。对于其他实验章节,我们可以直接切到其他分支,不需要克隆新的仓库。
git clone git://g.csail.mit.edu/xv6-labs-2025
cd xv6-labs-2025
git checkout util
# 可以看看有哪些分支
git branch -a
我们可以本地测试运行、本地查看评分,也可以提交一些本地分支。
# 打开一个 qemu 模拟器,运行我们的这个系统。
# 使用 <C-a> x 退出内置 shell
make qemu
# 进行本地评分(对这一章节所有的实验)
make grade
# 只对其中一个小实验评分,这里以 find 实验为例
make GRADEFLAGS=find grade