首页 > 其他分享 >xv6 想到什么记什么

xv6 想到什么记什么

时间:2023-12-09 22:12:55浏览次数:38  
标签:riscv QEMU 什么 想到 xv6 blog https com

xv6不同视频里安装了不同版本 两个我都装了

一个是xv6-public 点进去是深大视频里配套的i386 arch

另一个是xv6 risc-V 就是另一个我参考的视频里

 

运行xv6 用的QEMU 是个linux上的模拟器 xv6又是个unix变体简易版系统

所以最终说起来这个系统是一个程序,跑在一个模拟器程序里,模拟器程序跑在虚拟机里,虚拟机跑在我的window系统里,还挺绕

那么准备工作就有:

1.装个18.04以上的ubuntu 我的版本是20.04

2.装QEMU 这里有riscv的跟i386的 我装了俩

https://zhuanlan.zhihu.com/p/267159664

https://blog.csdn.net/icekittenice/article/details/102596537

https://blog.csdn.net/m0_45291976/article/details/109121959

3.拉取xv6 从github 两个都拉取了 一个public 一个riscv

拉取时git https的问题就不说了 最后都容易443,解决办法是在github.com之前加上gitclone.com 比如https://gitclone.com/github.com/xxx/xxx.git

https://blog.csdn.net/weixin_51015707/article/details/121557471

4.安装

拉取完了之后按教程make make qemu就行

当然这部分前提是有编译工具链 也就是riscv那一套 在上面装QEMU的时候有链接里有

risc-v工具链安装如果按照官网教程来安装,可能会因为下载过慢而失败,教程中的安装命令是brew install riscv-tools,但riscv-tools由几个部分组成,我们其实只需要riscv-gnu-toolchain,源码下载方式如下:

git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
下载完成之后输入如下命令测试一下:

riscv64-unknown-elf-gcc -v
如果能显示版本信息则说明安装成功

如果要退出,先按Ctrl+a,松手后再按x

 

最后讲一下QEMU的调试技巧 有个不完全指北的网站可以参考 并且结合b站一个视频去做GDB的调试练习以及vscode

https://www.cnblogs.com/KatyuMarisaBlog/p/13727565.html 不完全指北

这里头有一个找gdbinit的问题 用Ctrl+H查看ubuntu fs中的隐藏文件

另一个问题是gdb的路径问题 不用riscv的gdb 用默认的就好

如何GDB调试QEMU 用到GDBStub

https://blog.csdn.net/Gefangenes/article/details/131193235?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-131193235-blog-83758127.235^v39^pc_relevant_default_base&spm=1001.2101.3001.4242.1&utm_relevant_index=3

重点在vscode 因为现代编辑器嘛

方法是make qemu-gdb 开启gdb

然后vscode里修改launch.json 远程地址选GDB服务器 

"miDebuggerServerAddress"

 

 

 

https://www.cnblogs.com/tocy/p/gnu-binutils-simple-usage.html

https://zhuanlan.zhihu.com/p/645286863          bios MBR boot

标签:riscv,QEMU,什么,想到,xv6,blog,https,com
From: https://www.cnblogs.com/synapse331/p/17891548.html

相关文章

  • JFinal是什么?
    JFinal是一款基于Java语言的开源Web框架。它专注于简化和加速JavaWeb应用程序的开发过程,提供了一系列的特性和工具,使得开发者可以更迅速地构建高性能、可维护的Web应用。以下是JFinal框架的一些主要特点:1.MVC架构:JFinal遵循经典的MVC(Model-View-Controller)架构,将......
  • 在 wsl 中启动容器实例,相关资源默认存储在什么地方?
    在WSL(WindowsSubsystemforLinux)中启动的Docker容器实例,默认情况下相关资源存储在WSL的文件系统中。具体来说,WSL使用的是一个虚拟化的Linux环境,在Windows主机上运行,因此Docker容器实例的文件系统将存储在WSL的虚拟文件系统中。WSL提供了Windows和Linux文件系统之间的桥梁,使得在W......
  • [Python]运算符: / 和 % 和 //计算差异是什么?
    /和%和//(地板除)在Python中的作用是:用于对数据进行除法运算。python中与除法相关的三个运算符是//和/和%,下面逐一讲解。“/”,这是传统的除法,5/2=2.5“//”,在python中,这个叫“地板除”,3//2=1“%”,这个是取模操作,也就是区余数,8%2=0,7%2=1Python中分为3种除法:1、/,2、%,3......
  • Swagger跟rest有什么区别?
    Swagger跟rest有什么区别? 我的答案:REST是指导思想,Swagger是实现方式。 AI的答案:Claude-2解释如下:REST是一种软件架构风格,它定义了一组设计原则和约束条件。REST是概念性的,它更像是一个指导思想和设计理念,不是一个具体的实现技术或标准。Swagger是一组开源工具,用于......
  • AMQP协议中的,消息队列RabbitMQ,ActiveMQ,Apache Kafka区别是什么?
    都是基于AMQP协议来的一种实现方式。参考chatGPT4回答请使用Markdown表格来展示RabbitMQ、ActiveMQ和ApacheKafka之间的区别:维度RabbitMQActiveMQApacheKafka语言ErlangJavaScala/Java协议AMQP、STOMP、MQTTAMQP、STOMP、OpenWire自定义协议......
  • 想想为什么这两段代码,一段可以实现快排,一段实现不了?
    可实现代码#include<stdio.h>voidquicksort(inta[],inti,intj);intmain(){intnum;inta[10001]={0};scanf("%d\n",&num);inti=0;while(i<num){scanf("%d",&a[i]);i++;......
  • xv6 start
    操作系统必须满足三个要求:多路,隔离,交流。用户模式和管理模式强隔离要求应用程序和操作系统之间有一个硬边界。如果应用程序出错,我们不希望操作系统失败或其他应用程序出错,相反操作系统应该能够清理失败的应用程序并继续运行其他应用程序。为了实现强隔离,操作系统必须安排应用程......
  • 什么是 Web 开发的 Server Side Model
    在Web开发中,"Server-SideModel"是指在服务器端进行数据处理和运算的模型。这种模型的主要优点是可以处理大量数据,同时也可以利用服务器的强大计算能力。与客户端模型(如JavaScript中的MVC模型)相比,服务器端模型可以更好地保护数据和算法,因为它们不会被发送到客户端。在"Se......
  • 给维基百科捐赠后会是什么样子?
    忽然发现日常的一些学习,真的是基于维基百科。最近学习MIT的18-s096。课后很多的辅助阅读资料竟然有很多来自维基百科。很多时候,想学习一些东西,真的是难于登天,所以自己学到之后,也希望后来者不要重蹈覆辙,哪怕撰写一篇博客需要花费许多时间,也是值得的。到了公司之后,发现大多数人处......
  • 什么是 ISR(Incremental Static Regeneration)
    ISR(IncrementalStaticRegeneration)是一种Web前端开发中的静态网页生成技术。它是Next.js框架引入的一项功能,旨在改进静态站点的性能和用户体验。在了解ISR之前,我们需要先了解几个相关的概念。静态网页生成(StaticSiteGeneration)静态网页生成是一种生成静态HTML文件的技术,它将......