【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.xdnf.cn/news/3234.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

html练习2

实现下列图片的效果 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}#menu {background-color: #0c0048;width: 100%;height: 50px;margin: auto;…

ViT面试知识点

文章目录 VITCLIPBlipSAMFast TransformerYOLO系列问题 BatchNorm是对一个batch-size样本内的每个特征做归一化&#xff0c;LayerNorm是对每个样本的所有特征做归一化。 Layer Normalization&#xff08;层归一化&#xff0c;简称LayerNorm&#xff09;是一种在深度学习中常用…

意大利名模 Vittoria Ceretti

1998年出生&#xff0c;相貌一般&#xff0c;身材高&#xff0c;世界著名的维多利亚秘密花园时装秀入选模特之一&#xff0c;但愿她没上过萝莉岛。

Java - 免费图文识别_Java_免费_图片转文字_文字识别_spring ai_spring ai alibaba

本文主要是介绍借助阿里云免费的大模型额度来做高质量的图转文识别&#xff0c;图片转文字&#xff0c;或者文字识别都可以使用&#xff0c;比传统的OCR模式要直接和高效很多 。 本文使用的技术是spring ai qwen vl 。 Qwen vl有 100万Token 免费额度&#xff0c;可以用来免费…

MR30分布式IO模块与高效PLC协同

在现代工业自动化领域中&#xff0c;数据采集与控制系统扮演着至关重要的角色。其中&#xff0c;可编程逻辑控制器&#xff08;PLC&#xff09;和分布式IO模块&#xff08;Distributed I/O Modules&#xff09;是这一领域的两大核心组件。本文将详细介绍MR30分布式IO模块与PLC如…

深基坑结构施工安全在自动化监测不知道怎么布设测点?不知道用什么设备?

01 基坑监测背景 随着我国城市建设的发展&#xff0c;基坑规模和开挖深度不断增加。在基坑开挖过程中&#xff0c;如何尽快的在第一时间了解基坑的变形情况&#xff0c;并动态评估基坑的结构安全&#xff0c;避免事故的发生。与其它监测方法相比&#xff0c;实现自动化监测、信…

一张图简单讲述Mamba的演进过程

这张图表提供了 RNN&#xff08;1986&#xff09;、LSTM&#xff08;1997&#xff09;、Transformer&#xff08;2017&#xff09;和 Mamba&#xff08;2024&#xff09;四种不同的神经网络架构在训练阶段、测试阶段和额外问题方面的对比。可以看出&#xff0c;Mamba 作为一种最…

Spring在多线程环境下如何确保事务一致性

Spring在多线程环境下如何确保事务一致性 问题在现如何解决异步执行多线程环境下如何确保事务一致性事务王国回顾事务实现方式回顾编程式事务利用编程式事务解决问题问题分析完了&#xff0c;那么如何解决问题呢&#xff1f;小结 问题在现 我先把问题抛出来&#xff0c;大家就…

c加加11第二弹~

1lambda 1.1.lambda表达式书写格式 [capture-list] (parameters) mutable -> return-type { statement} 1.2lambda表达式各部分说明 [capture-list] : 捕捉列表&#xff0c;该列表总是出现在lambda函数的开始位置&#xff0c;编译器根据[]来判断接下来的代码是否为lamb…

服装品牌必备:智能商品管理系统,打造高效运营新引擎!

在如今瞬息万变的服装市场中&#xff0c;企业的生产链、供应链、销售链及库存管理等各个环节的复杂度与日俱增。随着业务版图的不断扩张&#xff0c;SKU数量呈爆炸式增长&#xff0c;传统的人工管理模式已难以支撑高效运营的需求&#xff0c;信息化、数字化转型已成为行业共识。…

B站狂神说+mybatis增删改查操作

文章目录 1.新增mapper接口2.修改mapper接口同级目录下的xml文件&#xff08;UserMapper.xml&#xff09;3.编写src同级别目录下的test文件4.万能的Map 1.新增mapper接口 package com.aloha.dao;import com.aloha.pojo.User;import java.util.List;public interface UserMappe…

美的品牌店铺运营全解析:洞察用户行为驱动增长

美的品牌店铺运营与用户行为分析 一、店铺运营表现分析&#xff1a; 共获取320个美的店铺的数据及其店铺的商品&#xff0c;共3***0个商品&#xff0c;选取销售额最高的10个店铺美的官方旗舰店、美的空调旗舰店、华凌官方旗舰店、美的冰箱旗舰店、美的日邦企业店、美的集成灶旗…

【笔记】变压器-热损耗-频响曲线推导 - 02 预备知识

0.题外话 周五&#xff0c;在处理一个电路设计时&#xff0c;关联到了日本的TDK公司。目前&#xff0c;市面上大量出货的开关电源用标准型号 - 高频铁氧体变压器 - PQ系列&#xff0c;型号实际是TDK的公司标准。那个尺寸参数是TDK自行制定的。似乎。 我一下意识到为什么日本会…

计算机网络——网络层导论

转发是局部功能——数据平面 路由是全局的功能——控制平面 网卡 网卡&#xff0c;也称为网络适配器&#xff0c;是计算机硬件中的一种设备&#xff0c;主要负责在计算机和网络之间进行数据传输。 一、主要功能 1、数据传输&#xff1a; 发送数据时&#xff0c;网卡将计算机…

人像抠图怎么抠?5款AI抠图工具帮你一键抠人像!

在当今这个视觉盛宴频现的时代&#xff0c;一张背景简洁、人物鲜明的照片往往能瞬间捕获观者的目光。 人像抠图无疑是一项极为关键的技术。它不仅能帮助我们精准地将人物从繁琐的背景中抽离&#xff0c;还为后续的创意编辑与合成铺设了广阔的舞台。今日&#xff0c;将为大家分…

你不知道的C语言知识(第八期:动态内存管理)

本期介绍&#x1f356; 主要介绍&#xff1a;C语言中一些大家熟知知识点中的盲区&#xff0c;这是第八期&#xff0c;主讲动态内存管理。 文章目录 1. 为什么会存在动态内存2. 动态内存管理库函数2.1 malloc函数2.2 calloc函数2.3 realloc函数2.4 free函数 3. 内存泄漏&内存…

vue项目新打开一个tab页或者新窗口的方法

router.resolve&#xff1a;返回一个路由地址的规范化版本。同时包含一个包含任何现有 base 的 href 属性。默认情况下&#xff0c;用于 router.currentRoute 的 currentLocation 应该在特别高阶的用例下才会被覆写。 打开新标签页方法 const openNewTab ()> {// 打开新标…

Linux题目练习

1、配置网络&#xff1a;为网卡添加一个本网段IPV4地址&#xff0c;x.x.x.123 2、配置yum本地仓库&#xff0c;并完成traceroute命令的安装 3、用至少两种方法查看sshd服务的进程号 4、添加一块20G大小的磁盘&#xff0c;将该磁盘分为两个主分区&#xff0c;大小为1G、2G。将剩…

【Linux】动静态库:构建强大软件生态的基石

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 动静态库基本原理 二&#xff1a;&#x1f525; 认识动静态库 三&#xff1a;&#x1f525; 动静态库的优缺点 &#x1f98b; 静态库&#x1f98b; 动态库…

HRCE第四次实验

1.dns配置介绍 使用S/C架构 server --- bind(程序) --- 服务名称&#xff08;程序主进程&#xff09;named 开始实验前我们先进行主配置文件进行配置 vim /etc/named.conf进入主配置文件&#xff08;共分四部分&#xff09; 1.options{全局配置}&#xff08;多模块生效的配…