1.XV6环境配置

news2024/11/15 22:57:56

安装虚拟机

这个就不多说了,搞一台Ubuntu虚拟机即可,最好是通过vscode 用ssh远程连接进行实验会比较方便,具体怎么做可参考我这篇博客:

VsCode配置SSH连接远程服务器(手把手,学不会打我)_vscode remote ssh配置-CSDN博客

获取源码

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

进入到实验目录下并切换到util分支

cd xv6-labs-2020
git checkout util

看readme可以知道,想运行xv6直接make qemu即可

但执行会报错

Error: Couldn't find a riscv64 version of GCC/binutils.

安装g++/gcc/binutils/qemu

根据上述报错信息,需要安装riscv64版本的binutils,

可以使用apt search搜索相关packages

apt search binutils  |grep binutils-riscv64

使用apt install 安装找到的三个packages

sudo apt install binutils-riscv64-linux-gnu
sudo apt install binutils-riscv64-linux-gnu-dbg
sudo apt install binutils-riscv64-unknown-elf

安装gcc、g++

sudo apt install g++
sudo apt install gcc-10-riscv64-linux-gnu
//进入 /usr/bin 目录建立软连接
sudo ln -s riscv64-linux-gnu-gcc-10 riscv64-unknown-elf-gcc进入 /usr/bin 目录

安装qemu

git clone https://github.com/qemu/qemu.git

下载到本地后目录为qemu进入该文件夹,执行下面指令

mkdir build && cd build
../configure --target-list=riscv64-softmmu && make

不过会出错,缺少了一些包

下面安装一下

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

安装完后继续执行上述命令即可

xv6 的 Makefile 中指定了 QEMU 命令的名称 QEMU = qemu-system-riscv64,会自动在 PATH 环境变量中寻找命令,因此将编译好的二进制文件 qemu-system-riscv64 (位置在 qemu/build 目录)复制到 /usr/bin 目录中。

sudo cp qemu-system-riscv64 /usr/bin/

启动

进入xv6-labs-2020,执行make qemu

执行完成

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

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

相关文章

【Hot100】LeetCode—148. 排序链表

目录 1- 思路归并 2- 实现⭐148. 排序链表——题解思路 3- ACM 实现 原题连接:148. 排序链表 1- 思路 归并 1- 先求解链表的长度,求出长度后利用 subLen 1 开始归并 定义虚拟头结点 dummyHead ,便于处理头结点 2- 归并逻辑 for(int subLen…

nacos 使用 docker 单机部署连接 MySQL 数据库并开启鉴权

文章目录 本地部署的配置启用鉴权(未验证) docker部署的配置修改docker 镜像源启用鉴权,必须添加如下环境变量如何生成鉴权的密钥 完整环境变量docker启动命令 本地部署的配置 文件结构 application.properties #配置文件 mysql-schema.sql …

[Linux#40][线程] 线程控制 | 多线程

内核中有没有很明确的线程概念呢?没有的。有的是轻量级进程的概念 不会给我直接提供线程的系统调用,只会给我们提供轻量级进程的系统调用,但是我们用户,需要线程的接口! 所以 Linux 开发者提供了 pthread 线程库--应用…

成为创作者的第1024天:成长与技术积累的旅程

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天是我成为创作者的第1024天。回顾这段时间,虽然日常的忙碌充斥着生活…

roles(角色)

创建目录,编写剧本下载nginx: 184 mkdir /etc/ansible/playbook 185 vim /etc/ansible/playbook/nginx.yml --- - hosts: groupremote_user: roottasks:- name: 卸载httpdyum: namehttpd stateabsent- name: 安装nginxyum: …

【MySQL 09】复合查询 (带思维导图)

文章目录 🌈 一、准备工作🌈 二、多表查询⭐ 1. 多表笛卡尔积⭐ 2. 多表查询示例 🌈 三、自连接🌈 四、子查询⭐ 1. 标量子查询⭐ 2. 多行子查询 (需要插入其他博客的链接)⭐ 3. 多列子查询 (需要插入其他博客的链接)⭐ 4. 在 fro…

小米SU7销量超特斯拉,新车明年上半年发布

小米 SU7,一款国内新能源车品牌纯血新势力旗下首款轿车,上市短短 4 个月卖出超 4 万台,月均销量过万。 该说不说,这放在整个新能源汽车工业史上也足以称得上是一件小刀喇拍屁股,让人开了眼的事儿。 就在本月初&#x…

大模型在企业数智化转型中可以做哪些事情?

在数字化浪潮的推动下,企业数智化转型已成为不可逆转的趋势。作为人工智能技术的集大成者,大模型以其强大的数据处理能力、深度学习能力及广泛的应用场景,正逐步成为企业数智化转型的核心驱动力。 大模型:智能时代的基石 大模型…

Error: ReferenceError: ReadableStream is not defined

midway项目在build完,docker启动时,莫名地报错Error: ReferenceError: ReadableStream is not defined,之前一直好好地,初时以为是新加的代码引起,后来排除了。 报错如下: 2024-08-20 11:57:51.446 ERROR …

【教学类-76-01】20240820书包01(图案最大化)

背景需求 通义万相生成图片,把图案最大化的方法(切掉白边) 【教学类-75-01】20240817“通义万相图片最大化透明png”的修图流程-CSDN博客文章浏览阅读1.6k次,点赞56次,收藏17次。【教学类-75-01】20240817“通义万相…

Aseembly(八)-汇编语言编写程序

前言 在该系列的第六篇文章我们主要讲述了:关于栈的寄存器:SS和SP的问题 来回一下: 对于栈指针来说,栈在被开辟的时候,首先要通过SS指针去找到开辟栈的地址空间的首地址,随后,SP指针指向该栈空间的末尾的下一个空间处.当执行push指令时,sp会-2 随后将目标压入栈中 当执行pop指…

volta引发的血案

什么是volta volta用于做项目级别的node版本控制,当手头上的项目有多个时,且node版本可能还不一样,我们需要不断切换node版本。使用volta可以很好的解决这个问题。只需要安装volta,然后在下面的package.json中配置好node版本即可…

鸿蒙HarmonOS实战开发: CMake脚本编写构建NDK工程

NDK工程构建 HarmonyOS NDK默认使用CMake作为构建系统,随包提供了符合HarmonyOS工具链的基础配置文件ohos.toolchain.cmake,用于预定义CMake变量来简化开发者配置。 常用的NDK工程构建方式有: 从源码构建 源码构建也有不同方式:…

机器学习在智能复合材料中的应用与实践

在人工智能与复合材料技术融合的背景下,复合材料的研究和应用正迅速发展,创新解决方 案层出不穷。从复合材料性能的精确预测到复杂材料结构的智能设计,从数据驱动的材料结构优 化到多尺度分析,人工智能技术正以其强大的数据处理能…

深度学习设计模式之策略模式

文章目录 前言一、介绍二、特点三、详细介绍1.核心组成2.代码示例3.优缺点优点缺点 4.使用场景 总结 前言 策略模式定义一系列算法,封装每个算法,并使它们可以互换。 一、介绍 策略模式(Strategy Pattern)是一种行为型设计模式&…

Linux:网络基础概念

网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 局域网 LAN: 计算机数量更多了, 通过交换机和路由器连接在一起; 广域网 WAN: 将远隔千里的计算机都连在一起; 所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如…

【C++ 第十四章】红黑树

前言: 学习本章,需要先学习 AVL树的 旋转,因为 红黑树也需要旋转调整来平衡,下面讲解将不赘述 旋转的原理和操作 红黑树的旋转 和 AVL树的旋转 唯一不同的是:旋转的判断使用逻辑 AVL树的旋转 可以通过 平衡因子 判断…

关于c++ grpc 和 c# grpc 通信的问题 以及 grpc 认证问题

一、c 和 c# 通信 c# 端服务器 如果域名 输入的是 https ,则 c 端需要匹配使用,也就是c 端需要进行安全认证。如果是http 则c 端不需要认证(基于c#的grpc 未 通信成功) 参考如下网址可以写一个简单的 .net grpc服务器 &#xff08…

基于java的综合小区管理系统论文.doc

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统综合小区管理系统信息管理难度大,容错率低&am…

diamond安装与使用

1.前言 diamond是一款用于蛋白质和翻译后DNA搜索的序列比对工具,专为大规模序列数据的高性能分析设计。其主要特点包括: - 与BLAST相比,蛋白质和翻译后DNA的成对比对速度快100倍至10000倍。 2. 参考 https://github.com/bbuchfink/diamond …