MIT 6.S081 Operating System Engineering (FALL 2020) 课程实验采用的是 xv6 系统。
xv6 是在ANSI C中针对多处理器x86系统的Unix第六版的现代重新实现。
配套资源链接
MIT 6.S081 Operating System Engineering FALL 2020 视频链接
MIT 6.S081 Operating System Engineering FALL 2020 视频中文字幕翻译链接
MIT 6.S081 Operating System Engineering FALL 2020 操作系统课程主页链接
课程配套图书 《xv6: a simple, Unix-like teaching operating system》链接
xv6 实验环境搭建
首先说明一下,本人使用的是 Windows 系统,所以采用安装 Linux 虚拟机的方式做的实验。
第一步:安装 VMware
首先我们要安装 VMware 虚拟机软件,VMware 下载地址链接。
第二步:安装 Ubuntu
下载 Ubuntu 镜像并安装 Ubuntu 系统。Ubuntu 镜像下载地址链接。
本人使用的是 Ubuntu 20.04.2.0 LTS 版本。
安装完 Ubuntu 后,先使用下面的命令修改 root 管理员密码。
sudo passwd root
再通过下面的命令更新软件列表。
sudo apt-get update
再安装 git 。
sudo apt install git
第三步:安装编译器
接下来就可以开始安装实验所需要的工具了。
首先克隆 RISC-V GNU 编译器工具链的存储库。
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
如果下载太慢,可以换成下面的地址。
git clone --recursive https://github.com.cnpmjs.org/riscv/riscv-gnu-toolchain
接下来,使用下面的命令安装实验编译工具链所需要的包。
sudo apt-get 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
接下来依次输入下面的命令配置和构建工具链,首先进入工具链目录。
cd riscv-gnu-toolchain
然后输入下面的命令进行配置。
./configure --prefix=/usr/local
再进行编译。
sudo make
返回上一级目录。
cd ..
第四步:安装 QEMU 模拟器
首先下载 QEMU 5.1.0 的源代码。
wget https://download.qemu.org/qemu-5.1.0.tar.xz
然后对 QEMU 5.1.0 的源代码包进行解压。
tar xf qemu-5.1.0.tar.xz
解压后,进入 QEMU 5.1.0 的源代码目录。
cd qemu-5.1.0
接下来的操作可能遇到下面的报错,所以在这里先提一下,为了避免接下来你的操作报错,可以先运行解决方案的命令安装对应的工具。
如果报 ERROR: glib-2.48 gthread-2.0 is required to compile QEMU
错误,输入下面的命令安装工具进行解决。
apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev
如果报 ERROR: pixman >= 0.21.8 not present. Please install the pixman devel package.
错误,输入下面的两条命令安装工具进行解决。
apt-cache search pixman
apt-get install libpixman-1-dev
为 riscv64-softmmu 构建 QEMU。
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
make
sudo make install
cd ..
第五步:检查编译器是否安装成功
接下来输入下面的命令检查你的编译器是否安装成功。
riscv64-unknown-elf-gcc --version
如果安装成功,该命令执行后会显示版本等信息。
riscv64-unknown-elf-gcc (GCC) 11.1.0
...
第六步:检查 QEMU 模拟器是否安装成功
再输入下面的命令检查一下 QEMU 是否安装成功。
qemu-system-riscv64 --version
如果安装成功,该命令执行后会显示版本等信息。
QEMU emulator version 5.1.0
...
第七步:下载 xv6 源码
接下来使用下面的命令下载 xv6 系统源码,当然,你可以下载一份在主机上方便阅读查看。
git clone git://github.com/mit-pdos/xv6-riscv.git
第八步:编译运行 xv6
xv6 源码下载完成后,进入 xv6 源码目录。
cd xv6-riscv
使用下面的命令对 xv6 源码进行编译。
make qemu
如果成功,最后会看到输出如下。
init: starting sh
$
这时,说明你已经把 xv6 系统运行起来了,可以使用 ls 命令查看当前目录下的内容,结果可能与我下面给出的不同,但也不用担心,因为这里用的是 xv6 的源码编译后运行的结果,接下来的实验会以 FALL 2020 版本进行,所以下面是该系统 FALL 2020 实验分支编译运行后的结果。
$ ls
. 1 1 1024
.. 1 1 1024
README 2 2 2059
xargstest.sh 2 3 93
cat 2 4 24256
echo 2 5 23080
forktest 2 6 13272
grep 2 7 27560
init 2 8 23816
kill 2 9 23024
ln 2 10 22880
ls 2 11 26448
mkdir 2 12 23176
rm 2 13 23160
sh 2 14 41976
stressfs 2 15 24016
usertests 2 16 148456
grind 2 17 38144
wc 2 18 25344
zombie 2 19 22408
console 3 20 0
在 xv6 中按 Ctrl + p 会显示当前系统的进程信息。
在 xv6 中按 Ctrl + a ,然后按 x 即可退出 xv6 系统。