Qemu系统模拟:1 简介

news2024/9/23 11:24:57

目录

    • 1 后端/加速器
    • 2 特性简介
    • 3 运行

1 后端/加速器

  • 系统模拟主要用于在host设备上运行guest OS
  • QEMU支持多种hypervisors,同时也支持JIT模拟方案(TCG)
    • 加速器
    • 例如从上表我们可以看出,运行在x86硬件上的Linux系统支持KVM,Xen,TCG

2 特性简介

  • 提供了多种设备模型device model用于模拟你想要加入到模拟及其上的各类设备
    • 多种设备模拟方案:直接模拟(即由qemu主程序进行设备管理),独立模拟(基于VirtIO或Multi-process QEMU),设备直传(即将真实设备“穿透”到VM中,需要硬件支持
  • feature block layer:用于支持复杂存储拓扑的构建
  • chardev:一种灵活的字符设备模拟方案,可以基于stdio、file、Sockets等实现对字符设备的模拟
  • 多种管理接口Management Interface
    • Human Monitor Protocal(HMP)
    • QEME Monitor Protocal(QMP)

3 运行

  • Qemu提供了非常丰富且复杂的接口
    • 部分体系结构下支持基于disk image的“一键启动”,但这种方式隐藏了很多可控的细节
  • 除了通过命令行的方式进行虚拟机管理外,基于QMP构建的libvirt框架现在也有非常的,可用的,更友好的虚拟机管理工具
  • 系统模拟的command line一般形式
    • command line
      • Qemu并没有提供一个统一的命令行工具,而是依据模拟方案以及模拟目标进行划分,例如途中的qemu-system-x86_64表示针对x86的系统模拟(system)命令行工具
    • 选项概览
        1. Machine选项定义了模拟及其的类型,各种不同的设备可能包含默认device
        1. Device选项用于定义Machine选项中没有默认值的设备
        1. Backends选项定义了模拟机器的“工作模式”
  • 案例:
$ qemu-system-aarch64 \
# machine相关选项
-machine type=virt,virtualization=on,pflash0=rom,pflash1=efivars \
-m 4096 \

# CPU相关选项
-cpu max,pauth-impdef=on \
-smp 4 \
-accel tcg \

# device相关选项
-device virtio-net-pci,netdev=unet \
-device virtio-scsi-pci \
-device scsi-hd,drive=hd \

# 对特定device进行配置
-netdev user,id=unet,hostfwd=tcp::2222-:22 \
-blockdev driver=raw,node-name=hd,file.driver=host_device,file.filename=/dev/lvm-disk/debian-bullseye-arm64 \

# 管理与输出配置
-serial mon:stdio \  # 令Qemu monitor复用(stdio)
-display none \  # 无显示配置

# 启动配置
-blockdev node-name=rom,driver=file,filename=(pwd)/pc-bios/edk2-aarch64-code.fd,read-only=true \
-blockdev node-name=efivars,driver=file,filename=$HOME/images/qemu-arm64-efivars

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

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

相关文章

大数据集群(Hadoop生态)安装部署

目录 1. 简介 2. 前置要求 3. Hadoop集群角色 4. 角色和节点分配 5. 调整虚拟机内存 6. Zookeeper集群部署 7. Hadoop集群部署 7.1 下载Hadoop安装包、解压、配置软链接 7.2 修改配置文件:hadoop-env.sh 7.3 修改配置文件:core-site…

自动化机器人的开发框架

自动化领域有多个开源的框架和工具,用于自动化各种任务和流程。以下是一些常见的自动化开源框架和工具,以及它们的特点,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Robot…

【Java】Java中BigDecimal解决精度丢失问题

文章目录 1.我们先看一个例子2.BigDecimal中的一些方法3.值得注意的是如果要想无精度丢失的情况下计算结果,那么需要把double,float类型的参数转化为String类型的。并且使用BigDecimal(String)这个构造方法进行构造。 去获取结果。不然还是没有效果。4.在一般开发过…

python curl2pyreqs 生成接口脚本

下载 curl2pyreqs 库 pip install curl2pyreqs -i https://pypi.tuna.tsinghua.edu.cn/simple 打开调试模式,在Network这里获取 接口的cURL 打开cmd窗口,输入curl2pyreqs,会自动生成接口代码 curl2pyreqs 执行接口脚本,返回响应…

Docker基础操作容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动。 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 新建并启动 所需要的命令主要…

火爆全网的头戴式耳机,Y2K辣妹时髦单品——Umelody轻律 U1头戴式耳机!

近些年,“复古”这阵风在时尚圈是越刮越猛。Y2K穿搭风更是火爆,最近火爆的Umelody轻律 U1头戴式耳机,可以说是通过单品来就能掌握其中的精髓,在众多博主和达人的穿搭中轮番上阵,无论是挂脖还是佩戴都特别好看&#xff…

STM32单片机入门学习(五)-按钮控制LED

按钮和LED接线 LED负极接B12,正极接VCC 按钮一端接B13,一端接GND,按下为低电平,松开为高电平 如图: 主程序代码:main.c #include "stm32f10x.h" #include "Delay.h" //delay函数所在头文件 #include …

基于Springboot实现影视影院订票选座管理系统【项目源码+论文说明】

基于Springboot实现影视影院订票选座管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个影城管理系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

域信息收集

DMZ,是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”。它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业…

Git Pull failure 【add/commit】

操作页面 操作步骤 1. 打开项目所在 在.git目录下右击打开Git Bssh Here 2. git add . 3. git commit -m "提交" 4. 成功提交到本地, 这下就可以拉取代码了

选择适合您的项目管理软件:哪个更好?

对于项目管理而言,一个优秀的项目管理工具可以达到事半功倍的效果。Zoho Projects 是一款功能强大,适用于各行业的标准化项目管理工具,具备适用度高的特点,丰富的功能模块可以匹配各行各业的项目管理。 一,任务管理 通…

JUC第十八讲:JUC集合-BlockingQueue 详解

JUC集合-BlockingQueue 详解 JUC里的 BlockingQueue 接口表示一个线程安全放入和提取实例的队列。本文是JUC第十八讲,将给你演示如何使用这个 BlockingQueue,不会讨论如何在 Java 中实现一个你自己的 BlockingQueue。 文章目录 JUC集合-BlockingQueue 详…

Linux是什么,有哪些特点?Linux和UNIX的关系及区别(详解版)

与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件,其 logo 是一只企鹅(如图 1 所示)。与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。 图 1 Linux 操…

Atcoder Regular Contest 166

只打了半场。 A. Replace C or Swap AB 首先如果存在某个 \(i\),使得 \(Y_i\) 是 C 且 \(X_i\) 不是,那么显然是不合法的,可以直接判掉。 那么除去上述情况 \(Y\) 中为字符 C 的位置 \(X\) 也只能是 C。它们把字符串分成了若干段,…

LVGL_基础控件timer

LVGL_基础控件timer 1、创建基础控件定时器 /* 下面创建三个timer,最后创建的timer会被放在timer list的最前面, lvgl的任务处理器会从timer list从头到尾按顺序遍历检查,执行满足执行条件的timer。 因此,如果三个定时器的周期设…

帮微软语音助手纠正“阿弥陀佛”“e”字错误发音的技巧

一、前言 微软AI文字转语音助手,现已被大家普便应用。最近在传统文化佛学名词的发音转换应用中,发现了一个致命的错误。那就是“阿弥陀佛”中的“阿”字的“a”发音,被误读为“e”。说起这个重大的错误,佛门大德南怀瑾老师也一再…

排序算法——选择排序

一、介绍: 选择排序就是按照一定的顺序从选取第一个元素索引开始,将其储存在一个变量值中,根据排序规则比较后边每一个元素与这个元素的大小,根据排序规则需要,变量值的索引值进行替换,一轮遍历之后&#x…

【RabbitMQ】docker rabbitmq集群 docker搭建rabbitmq集群

docker rabbitmq集群 docker搭建rabbitmq集群 RabbitMQ提供了两种常用的集群模式 1.普通集群模式 2.镜像集群模式 普通集群模式只能同步主节点上的交换机和队列信息,但对于队列中的消息不做同步,主节点宕机也不能进行切换(故障转移&#xff…

socket can查看详细信息 命令 ip -details -statistics link show can0

ip -details -statistics link show can0 ip -details link show can0 ip -statistics link show can0 也可以像第一行那样结合使用

C语言应用:Linux与Windows的系统化

作为一种广泛应用于软件开发的编程语言,C语言在工业应用领域也发挥着重要的作用。在本文中,我们将深入探索C语言在工业应用中的应用场景和价值,并重点关注它在Linux和Windows系统中的工业化之路。希望本文能为您介绍C语言在工业领域的实际应用…