首页 > 其他分享 >Mit6.S081-实验环境搭建

Mit6.S081-实验环境搭建

时间:2024-11-10 14:44:45浏览次数:3  
标签:riscv64 kernel git Mit6 S081 system 源码 qemu 搭建

Mit6.S081-实验环境搭建

注:大家每次做一些操作的时候觉得不太保险就先把虚拟机克隆一份

前言

qemu(quick emulator):这是一个模拟硬件环境的软件,利用它可以运行我们编译好的操作系统。
准备一个Linux系统,安装qemu以及其他依赖,通过git克隆下github的xv6源码,利用gcc编译源码得到可运行的操作系统,再利用qemu加载这个操作系统。

一、Linux系统

笔者用的是VM的ubuntu24.04,大家可以到网上找找安装教程,很多很详细,就不多说了

二、SSH连接工具

笔者使用的是xshell,大家可以到网上找找安装教程,很多很详细,就不多说了

三、环境搭建

6.S081 / 2020 年秋季

1、安装依赖

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

2、克隆源码

只有克隆了源码才会有xv6-labs-2020目录,不然是没有的

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

3、分支说明

前面克隆下来的git代码库包含了多个分支,每个分支对应一个实验作业。
切换到克隆下来的代码库:cd xv6-labs-2020
查看此代码库的所有分支:git branch --remote
image-20241108222705579

4、源码目录简析

kernel:内核源码,system call的实现
user:系统自带工具源码,shell、echo、cat等工具实现
grade-lab-util:python实现的代码测试工具
Makefile:make配置文件

四、检测qemu是否安装成功

1.测试

依次输入

riscv64-unknown-elf-gcc --version
qemu-system-riscv64 --version

笔者的结果

darling@darling:~/MIT6.S081$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (13.2.0-11ubuntu1+12) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

darling@darling:~/MIT6.S081$ qemu-system-riscv64 --version
QEMU emulator version 4.2.0 (Debian 1:4.2-3ubuntu6)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

2.执行make qemu

如果出现make: *** 没有规则可制作目标“qemu”。 停止。

执行

git checkout util

然后再次执行make qemu

可能的第一个错误

user/sh.c: In function 'runcmd':
user/sh.c:58:1: error: infinite recursion detected [-Werror=infinite-recursion]
   58 | runcmd(struct cmd *cmd)
      | ^~~~~~
cc1: all warnings being treated as errors

就是检测到了这个递归函数没有合理的终止条件可能会无线递归

解决方法

在 runcmd 前添加 attribute((noreturn))

// Execute cmd.  Never returns.
__attribute__((noreturn)) 
void
runcmd(struct cmd *cmd)

就是给系统说你别管,我自己能管好我自己

可能的第二个错误

执行了make qemu,卡住动不了了

qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp
3 -nographic -drive file=fs. img, if=none, format=raw, id=x0 -device virtio-blk-devi
ce, drive=x0,bus=virtio-mmio-bus.0

停在了这么个倒霉地方

此时此刻,似乎软件包 qemu-system-misc 收到了一个更新,该更新破坏了它与我们内核的兼容性。如果运行 make qemu 并且脚本在 qemu-system-riscv64 -machine virt -bios none -kernel/kernel -m 128M -smp 3 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0 之后出现挂起,则需要卸载该软件包并安装旧版本:

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

成功运行界面

image-20241108222046344

执行ls命令

image-20241108222133732

qemu的退出方法

两种方法:

  1. 在另一个终端中输入 killall qemu-system-arm
  2. 在 qemu 中 按下ctrl+a 抬起后,再输入’x’。

真实一把辛酸泪啊

期间还因为软件源不能用去换了软件源

找了很多杂七杂八的方法,克隆了两次虚拟机,搞了2小时总算是给我搞定了

标签:riscv64,kernel,git,Mit6,S081,system,源码,qemu,搭建
From: https://blog.csdn.net/m0_74795952/article/details/143636156

相关文章

  • 【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务
    【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务目录文章目录【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务目录1.前言简介2.部署ECS服务器3.安装Overleaf服务4.更新TexLive包5.XeLaTex修复6.中文字体支持7.ove......
  • 搭建阿里云
    1、​注册与登录阿里云账户1.1、浏览器打开阿里云-计算,为了无法计算的价值并单击注册1.2、进入注册页面,使用手机号或支付宝账号即可1.3、登录阿里云后进行实名认证2、获得云服务器2.1、获得免费的云服务器先领免费的再去购买free.aliyun.com点击立即试用即可2.2......
  • openEuler搭建k8s(1.28.2版本)
    目录k8s搭建(1.28.2版本)1.安装containerd1.1下载tar包1.2编写服务单元文件2.安装runc3.安装cni插件3.1下载文件3.2设置crictl运行端点4.配置containerd5.主机配置5.1编辑hosts文件(可选)5.2开启流量转发5.3关闭防火墙以及selinux5.4关闭swap6.搭建k8s6.1配置yum源......
  • linux搭建大数据环境
    前期准备工作友情提醒提前安装好vmware软件,准备好连接虚拟机的客户端一.基础环境1.配置ip地址修改ip配置文件[root@node1/]#vim/etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"#1.把dhcp修改成staticBOOTP......
  • 抖音矩阵系统AI批量剪辑源码搭建 ——OEM 开发
    一、引言在抖音短视频蓬勃发展的当下,抖音矩阵运营成为众多品牌、商家和创作者提升影响力与传播力的重要策略。而智能批量剪辑作为抖音矩阵系统的关键功能,能够极大地提高视频制作效率,满足大规模内容输出的需求。本文将深入探讨抖音矩阵系统智能批量剪辑源码搭建中的OEM开发......
  • 【Spark】本地环境下的搭建(单机模式)
    前言Spark有五种运行模式‌,分别是 Local模式、Standalone模式、YARN模式、Mesos模式和Kubernetes模式‌。Local模式(本地)Local模式是Spark运行在本地机器上,利用本地资源进行计算。这种模式通常用于测试和调试,因为它不需要其他节点资源,适合在开发环境中使用‌。Standal......
  • 手把手教你搭建Windows+YOLO11+CUDA环境,以EMA注意演示如何改进YOLO11, 训练自定义数据
    YOLOv11目标检测创新改进与实战案例专栏文章目录:YOLOv11创新改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv11目标检测创新改进与实战案例文章目录YOLOv11目标检测创新改进与实战案例专栏前言本......
  • Java开发环境搭建
    JDK下载与安装下载地址卸载JDK删除java的安装目录在环境变量中删除JAVA_HOME删除path下关于java的目录指向执行java-version安装JDK安装下载的JDK安装文件配置环境变量检查安装是否成功HelloWorld新建一个Hello.java文件publicclassHello{......
  • hive的搭建
    apacheHive官网下载apache-hive-3.1.2-bin.tar.gz华为镜像站下载MySQLmysql-connector-java-8.0.29.jar/usr/local/soft/jars上传到该目录下1、解压该目录下解压到上一个目录下tar-zxvfapache-hive-3.1.2-bin.tar.gz-C../2.重命名[root@mastersoft]#mvapache-......
  • hive-3.1.2搭建
    1、下载安装包下载hivehttps://archive.apache.org/dist/hive/下载MySQL驱动包https://mirrors.huaweicloud.com/mysql/Downloads/Connector-J/2、上传到Linux并解压tar-zxvfapache-hive-3.1.2-bin.tar.gz-C../3、重命名mvapache-hive-3.1.2-binhive-3.1......