MIT 6.S081 ubantu20.04/22.04环境搭建记录

操作系统实验课要学,但是自己本身水平太低,连linux都不怎么熟,配环境花了不少时间。所以想总结一下经验,记录一下,希望能帮助同样不怎么熟悉的人。

注意!!!!!

由于本菜鸟目前只做到Lab1的sleep,调试等比较深入的东西还未尝试过,所以仅能说

“能make qemu运行成功,并且能把自己编写的代码放到Makefile里运行成功”,其他的结果暂不明,请谨慎参考(如果真的有人参考的话)!

并且由于我的环境还同时是其他课程的环境,可能有些东西不是6.S081必须的,还请见谅。

课程网站

中文网站,里面有经大佬翻译后的课程介绍、课本章节、实验内容和实验解析等:

课程介绍 · 6.S081 All-In-One (dgs.zone)

课程本身的tools页面,在这里找所需的软件包:

6.S081 / Fall 2020 (mit.edu)

准备

安装ubantu

这个方法很多,这里就不展开了。要注意的是,课程推荐使用ubantu20.04版本,低于或高于20.04的版本多多少少都会出现一些问题。我自己因为以前用的是22.04,顺势就用22了,同时也另外安装了20.04的搭建了一次。22.04在搭建环境的时候会和20.0有点不同,好在目前差别不大。

安装Vim、git、c++环境

sudo apt update
sudo apt install vim git build-essential

查看是否成功安装(即看是否能看到版本号)

git --version
gcc --version
g++ --version

 配置git用户名和email

git config --global user.name "用户名"
git config --global user.email "用户email"

 (可选)编写一个c++程序试试

找一个文件夹,用vim编写代码:

vim ./hello.cpp

在Vim中写: 

#include <iostream>
using namespace std;
int main() 
{
    cout << "Hello, Ubantu!" <<endl;
    return 0;
}
g++ -o hello hello.cpp
./hello

能看到输出结果就证明c环境和Vim没有问题了。

配置实验环境

首先,根据课程tools页面:6.S081 / Fall 2020 (mit.edu)

我们下载这些软件包:

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

下载完后,先看看版本号:

 

riscv64-unknown-elf-gcc --version

这一步就有可能会出现问题(我自己的两台虚拟机显示找不到riscv64-unknown-elf-gcc,而和我相同步骤的同学一次成功):如果提示“riscv64-unknown-elf-gcc没有/找不到”之类的,留意一下该报错下方是否有提示“但是你可以使用xxxxxxx命令来安装它”,有的话,按照提示安装、查看版本号即可。

值得一提的是,课程的示例版本是10.1,而我用22.04下的版本是10.2,用20.04下的版本是9.3,不知如何解决,也不知会不会影响实验。

然后是qemu

qemu-system-riscv64 --version

这里22.04和20.04也有区别。先来看20的:在我这里20.04版本安装的qemu是4.2版本的,落后了示例版本挺多,但最后并不影响make qemu,还是能启动环境的,所以20.04这里建议谨慎。

建议跟着官网做一遍:

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

 有趣的是,按照官网的步骤,20.04最后下的还是4.2.1的qemu,与示例的5.1.0不符。但是进去xv6代码文件夹,是能正常运行make qemu的。

这是20.04下的结果↑

 

然后是22.04版本:不用管了,反正肯定是不对的。。。由于22.04已经找不到“1:4.2-3ubantu6”这个版本了,所以上面第二条↑命令不用执行了。

需要手动编译: 

参考:MIT6.S081 Ubuntu22.04 WSL2实验环境配置 - 知乎 (zhihu.com)

先获得指定版本的qemu源码:

注:按评论区大佬的说法,

qemu最好安装在/usr下,所以我最后把提取出的文件夹移动到了/usr/下了。你也可以直接在/usr下wget,这个我没有试过(其实我不知道qemu-5.1.0文件夹放在哪里是否有影响)

wget https://download.qemu.org/qemu-5.1.0.tar.xz
tar xf qemu-5.1.0.tar.xz

然后先安装几个要用到的包:

sudo apt install pkg-config libglib2.0-dev libpixman-1-dev

再进入qemu文件夹开始编译安装:

cd qemu-5.1.0
./configure --disable-kvm --disable-werror --prefix=/usr/ --target-list="riscv64-softmmu"
make
sudo make install

然后查看版本:

qemu-system-riscv64 --version

 如果能看到版本号,那应该就成功了。

至于新建仓库clone实验代码那些在此就不再赘述了。进去xv6实验代码文件夹,切换util分支后 运行make qemu看是否正常运行

如果无法运行的话,很抱歉,可能我的某个步骤出现了问题,还请多多指教!

试运行第一个代码

首先来看看目录下的文件:

user/:我们编写的代码放在这里

Makefile:把自己编写的代码加入到这里,使其成为构建目标以供自己调用

编写代码(以sleep.c为例):

vim ./user/sleep.c

写完后把代码加入到Makefile中,注意格式,不要有多余的空格:

vim ./Makefile

运行

make qemu

然后在终端sleep 数字就能看到结果了

在终端按Ctrl+A,然后松开(两个都松开),快速按X就退出了。

由于我自己做得慢,后面的命令还没来得及试,所以后面可能会出问题。不过至此,环境是能启动了,算是一个小小的成功?

谢谢浏览,如有错误,还请多多指教!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值