yzhe819's Blog

MIT 6.S081 Lab 0 搭建环境

2022.06.07

本篇文章主要记录MIT 6.S081实验环境的搭建和版本管理的配置。

官网链接:Lab: Tools

本地环境为:Windows 10 + WSL2 (Ubuntu 20.04.4 LTS)

环境搭建

官方搭建指导

官方的搭建步骤

官方的搭建步骤

本地搭建记录

首先进入WSL2:

$ bash

然后检查 ubuntu 版本,确保 ubuntu 是在20或者以上。

$ lsb_release -a

特别注意:这里检查版本是因为只有 ubuntu 20.04 下面才有对应的某个package的镜像源,如果是版本18是无法查找到的。如果有需要请自行更新WSL

然后根据官方教程,把一系列依赖装上:

$ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

接下来就是qemu-system-misc 修复,qemu-system-misc 包收到了一个更新,该更新破坏了它与内核的兼容性, 所以需要一个老版本。

先卸载新版本:

$ sudo apt-get remove qemu-system-misc

然后安装老的兼容版本:

$ sudo apt-get install qemu-system-misc=1:4.2-3ubuntu6

特别注意:这个qemu-system-misc=1:4.2-3ubuntu6就是前文提到 ubuntu 18 所找不到的包

这里需要补一个包,运行以下命令,会得到not found信息:

$ riscv64-unknown-elf-gcc --version

可以直接装。

$ sudo apt install gcc-riscv64-unknown-elf-gcc

再次测试,现在应该可以正确显示版本:

$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 10.1.0

检查环境是否搭建完成。

运行这两个版本检查,输出版本信息一样就完成了。

$ qemu-system-riscv64 --version
QEMU emulator version 5.1.0

$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 10.1.0

版本控制

我们需要将课程代码下载到本地以及使用github来进行开发管理:

首先在Github上新开一个空仓库。

然后将mit的实验代码克隆到本地:

$ git clone git://g.csail.mit.edu/xv6-labs-2020

进入对于文件夹以及切换分支:

$ cd xv6-labs-2020
$ git checkout util

:MIT 6.S081 这门课程每个lab对应一个git分支,util分支是第一个lab的分支,这里用这个分支测试之前搭建

执行命令:

$ sudo make qemu

看到下列输出证明我们的配置生效了:

xv6 kernel is booting

hart 2 starting
hart 1 starting
init: starting sh

在这种情况下输入ls会得到以下输出:

$ ls
.              1 1 1024
..             1 1 1024
README         2 2 2104
xargstest.sh   2 3 99
cat            2 4 23864
echo           2 5 22688
forktest       2 6 13000
grep           2 7 27208
init           2 8 23776
kill           2 9 22664
ln             2 10 22608
ls             2 11 26104
mkdir          2 12 22760
rm             2 13 22744
sh             2 14 41736
stressfs       2 15 23760
usertests      2 16 147440
grind          2 17 37872
wc             2 18 24968
zombie         2 19 22136
console        3 20 0

:偏题了,回归版本管理

添加git仓库的地址,这个仓库地址是第一步新建的仓库地址

就是平时使用git clone后的链接

$ git remote add github 你的仓库地址

特别注意:请勿随意修改.git目录和原origin指向的链接

接着我们可以把lab1的实验代码推送到github:

$ git push github util:util

:命令中的github是远程主机名,表示会推到上一步推到的链接上

:版本控制的部分6.S081-All-In-One-Gitbook提供了图文教程,可以进行参考

好了到这里,我们已经配置到基础的环境和做好了版本管理

接下来就能开始做lab实验了🎉

Happy coding 💖