【MIT-OS6.S081笔记1】xv6环境搭建

最近开始做一个操作系统的神课MIT-OS6.S081,我做的是老版本的2020版本的,环境使用的是VirtualBox的Ubuntu系统,在这里记录一下学习的过程。首先需要搭建一下环境,参考官网Tools Used in 6.S081,这个知乎文章也写得很好:MIT 6.S081 Operating System Lab1:Utilities

$ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu 
# 这里安装的qemu-system-misc可能和当前的内核有兼容性问题,这里移除安装的新版本
$ sudo apt-get remove qemu-system-misc
# 安装qemu
$ wget https://download.qemu.org/qemu-5.1.0.tar.xz
$ tar xf qemu-5.1.0.tar.xz
$ cd qemu-5.1.0
$ ./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
$ make
$ sudo make install

下面介绍了qemu的用处:

QEMU(Quick Emulator)是一个广泛使用的开源虚拟化软件。它主要有以下用途:

  • 一、模拟不同架构的计算机系统
    跨平台开发和测试
    开发人员可以在一种操作系统上模拟另一种操作系统和硬件架构,进行软件的开发和测试。例如,在 x86 架构的计算机上模拟 ARM 架构的设备,以便开发和测试适用于移动设备的软件。
    这对于需要支持多种硬件平台的软件开发非常有用,可以在不具备实际硬件的情况下进行早期的开发和调试。
    学习和研究
    学生和研究人员可以使用 QEMU 来学习不同的计算机体系结构和操作系统原理。通过模拟各种硬件和软件环境,可以深入了解计算机系统的工作方式。
    可以模拟古老或罕见的计算机系统,帮助研究计算机历史和技术发展。
  • 二、虚拟化
    虚拟机运行
    QEMU 可以创建虚拟机,在其中运行不同的操作系统。用户可以在同一台物理计算机上同时运行多个虚拟机,每个虚拟机都可以独立运行不同的操作系统和应用程序。
    这对于服务器虚拟化、桌面虚拟化等场景非常有用,可以提高硬件资源的利用率,降低成本。
    容器化环境模拟
    虽然容器技术(如 Docker)通常使用不同的虚拟化技术,但 QEMU 也可以在某些情况下用于模拟容器化环境,特别是在需要更高级别的隔离或模拟特定硬件环境时。
  • 三、设备模拟
    嵌入式系统开发
    在嵌入式系统开发中,QEMU 可以模拟目标硬件平台,使开发人员能够在开发主机上进行软件开发和调试,而无需实际的嵌入式设备。这可以大大提高开发效率,减少开发周期。
    可以模拟各种嵌入式设备的外设,如传感器、通信接口等,以便进行全面的系统测试。
    硬件测试和验证
    硬件制造商可以使用 QEMU 来模拟他们的硬件产品,进行软件兼容性测试和验证。这可以帮助他们在硬件生产之前发现和解决潜在的问题,提高产品质量。
    可以模拟各种故障情况,测试硬件和软件的容错能力。
  • 四、安全研究
    恶意软件分析
    安全研究人员可以使用 QEMU 来隔离和分析恶意软件。在模拟的环境中运行恶意软件,可以观察其行为而不会对实际系统造成危害。
    可以设置不同的安全限制和监控工具,以便更好地了解恶意软件的工作原理和攻击方法。
    漏洞研究和利用
    QEMU 可以用于模拟存在漏洞的系统,帮助研究人员发现和利用安全漏洞。通过在可控的环境中进行漏洞研究,可以更好地理解漏洞的本质和影响,从而提出更有效的安全解决方案。

查看一下qemu是否安装成功:

qemu-system-riscv64 --version

在这里插入图片描述
继续操作:

# 克隆xv6实验仓库
$ git clone git://g.csail.mit.edu/xv6-labs-2020
$ cd xv6-labs-2020
$ git checkout util
# 进行编译
$ make qemu

这里我出现了报错:

riscv64-linux-gnu-gcc: error: unrecognized command line option
‘-mno-relax’; did you mean ‘-Wno-vla’?

查看这个博主的文章xv6环境搭建说riscv64-linux-gnu-gcc编译工具链版本太低,进行下列操作:

 $ sudo apt install gcc-8-riscv64-linux-gnu$ sudo update-alternatives --install /usr/bin/riscv64-linux-gnu-gcc riscv64-linux-gnu-gcc /usr/bin/riscv64-linux-gnu-gcc-8 8

重新make qemu,OK进入环境了:

在这里插入图片描述
现在我们可以简单测试一下,输入

ls

OK了,实验环境设立完成, 我们成功boot了xv6这个简易操作系统.

在这里插入图片描述

退出环境:先按Ctrl+A,然后按x,下一篇再见了,enjoy it!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463828.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习基础—语言模型和序列生成

引言 深度学习基础—循环神经网络(RNN)https://blog.csdn.net/sniper_fandc/article/details/143417972?fromshareblogdetail&sharetypeblogdetail&sharerId143417972&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 上…

kdd比赛方案

解决方案概述 采用两阶段的方法来解决比赛任务。在第一阶段,采用与 SciBERT 集成的跨编码器模型来确定源论文是否是最重要的参考文献之一。在第二阶段,利用了从目标和源论文中得出的特征,以及第一阶段的输出,输入到几个二进制分类…

抖音Ai图文故事号,AI一键生成故事图片变现,涨粉变现超快!

今天分享2个简单好上手,可批量复制,出单超快的Ai项目,那就是AI绘画壁纸号Ai图文故事号。 在抖音、小红书上,壁纸号火的一塌糊涂,新号3天涨粉1500,变现利润超过了4位数 壁纸看起来平平无奇,市场需…

面试题:JVM(三)

1. 面试题 说一说JVM的内存结构是什么样子的,每个区域放什么,各有什么特点?(快手、搜狐) JVM的内存结构,及各个结构的内容。(vivo) 详细介绍一下内存结构(墨迹天气) JVM…

ELK的ElasticStack语法

目录 传送门前言一、索引(数据库)1、创建索引2、获取索引3、删除索引 二、文档(Row行)1、创建文档2、获取文档3、修改文档4、删除文档5、高级查询(精辟)条件查询分页、指定、排序、范围查询全文检索、分组查…

leaflet绘制圆形方案

电子围栏绘制方案: 采用leaflet绘制电子围栏 可以看对应api文档 。原生是英文,所以要重定义,直接覆盖下面的 leaflet.draw-cn.js 文件L.drawLocal = {draw: {toolbar: {// #TODO: this should be reorganized where actions are nested in actions// ex: actions.undo or a…

新能源汽车空调压缩机:科技驱动的冷暖核心

一、新能源汽车空调系统概述 新能源汽车空调系统在车辆中起着至关重要的作用,它直接影响着驾乘人员的舒适度。新能源汽车空调系统主要由制冷系统、加热系统、送风系统、操纵控制系统和空气净化系统等组成。 制冷系统通常由电动压缩机、冷凝器、压力传感器、电子膨…

Javaweb梳理8——数据库设计

Javaweb梳理8——数据库设计 8 数据库设计8.1 数据库设计简介8.2 表关系(一对多)8.3 表关系(多对多)8.4 表关系(一对一) 8 数据库设计 8.1 数据库设计简介 软件的研发步骤 数据库设计概念 数据库设计就是根据业务系统的具体需…

IDEA - 快速去除 mapper.xml 黄色警告线和背景色----简化版

1.打开设置 2.去掉黄色警告线设置 3.去掉背景色设置 4.示范图

vue3中使用vue-diff工具来比较数据差异

1.安装vue-diff npm i vue-diff 2.main.js中全局注册 import VueDiff from "vue-diff"; import "vue-diff/dist/index.css";app.use(VueDiff) 3.使用 <template><div class"contain-page"><el-scrollbar height"100vh&…

w014基于Springboot校园管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

openGauss数据库-头歌实验1-3 创建和管理模式

一、创建和使用模式 &#xff08;一&#xff09;任务描述 本关任务&#xff1a;基于 openGauss 学习创建模式的相关知识。 &#xff08;二&#xff09;相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.openGauss 的常用操作&#xff0c;2.SQL 创建模式相关语…

基于springboot+vue实现的任务管理系统(源码+L文)4-103

第4章 系统设计 4.1 总体功能设计 员工&#xff0c;经理&#xff0c;管理员都需要登录才能进入任务管理系统&#xff0c;使用者登录时会在后台判断使用的权限类型&#xff0c;包括一般使用者和管理者,一般使用者为员工和经理&#xff0c;对员工只能提供任务信息显示查询&…

PlotNeuralNet学习与入门

最近在绘制神经网络结构图&#xff0c;发现了一个开源的工具&#xff1a;PlotNeuralNet Github网址链接&#xff1a; HarisIqbal88/PlotNeuralNet: Latex code for making neural networks diagrams 一些相关的教程&#xff1a; 视频教程链接&#xff1a;【Alu】PlotNeuralN…

c怎么与python交互

ctypes是Python的一个外部库&#xff0c;可以使用python语言调用已经编译好的C语言函数以及数据类型并进行数据交换等。ctypes的官方文档在https://docs.python.org/3/library/ctypes.html 1、ctypes基本数据类型映射表 2、python调用c语言的函数库 &#xff08;1&#xff09…

less解决function中return写法在浏览器被识别成Object导致样式失败的问题

问题描述&#xff1a; 一开始写的是: baseFontSize: 37.5px;//基于屏幕尺寸/10得出的基准font-size// return失败,浏览器显示为[object Object],[object Object] .pxToRem(px){value: px / baseFontSize * 1rem;return value; } 使用height: .pxToRem(40px);之后浏览器却是这…

VR 创业之路:从《I Expect You To Die》到未来展望

今年是 Reality Labs 成立 10 周年&#xff0c;Meta 每周都会与不同的 XR 先驱进行交流&#xff0c;探讨他们在行业中的经历、经验教训以及对未来的展望。本次&#xff0c;他们与游戏设计师、作家兼 Schell Games CEO Jesse Schell 进行了深入交谈&#xff0c;了解了他的个人故…

面试经典 150 题:189、383

189. 轮转数组 【参考代码】 class Solution { public:void rotate(vector<int>& nums, int k) {int size nums.size();if(1 size){return;}vector<int> temp(size);//k k % size;for(int i0; i<size; i){temp[(i k) % size] nums[i];}nums temp; }…

数据结构 —— AVL树

目录 1. AVL的概念 2.AVL树的结构 3.AVL树的插入 3.1 平衡因子更新 4. 旋转 4.1 旋转的原则 4.2 右单旋 4.2.1 右单旋代码实现 4.3 左单旋 4.3.1 左单旋代码实现 4.4 左右双旋 4.4.1 左右双旋代码实现 4.5 右左双旋 ​编辑 4.5.1 右左双旋代码实现 5. AVL树的判断…

交换机如何实现2.5G网络传输速率和网络变压器有关吗

华强盛电子导读&#xff1a;I19926430038 交换机实现2.5G网络传输速率涉及多个因素&#xff0c;其中包括硬件设计、端口支持、传输介质以及网络协议等。网络变压器在其中扮演了一个重要的角色&#xff0c;但并不是唯一的因素。 1. **硬件设计**&#xff1a;交换机需要有支持2.…