博客
分类
标签
归档
友链
关于
Dark Mode
博客
分类
标签
归档
友链
关于
Dark Mode
Mens et Manus
qemu磁盘文件打开过程
磁盘文件打开过程通过gdb追踪openat系统调用得知,raw格式文件会使用raw_open_common()函数打开,调用栈如下: 通过分析源码得到qemu打开磁盘文件的过程:QEMU使用一个BlockDriverState结构体来管理块设备驱动信息,其中就包括了操作和数据。块设备创建的关键就在于初始化BlockDriverState结构体。 1234567struct BlockDr...
2021-08-15
Read More
qemu如何由事件循环找到真正要操作的目标设备
从eventfd联系到fd的流程非阻塞事件循环中,通过修改eventfd来通知qemu有事情需要qemu处理,如调用读写回调函数等。已知eventfd仅做通知的作用,qemu事件循环能够监听到eventfd的改变然后做相应处理。但是qemu如何由eventfd找到真正要进行处理的对象呢(如由磁盘读写关联的eventfd找到磁盘的fd进行读写)?本文将以virtio的磁盘读写为例,介绍从eve...
2021-08-14
Read More
QEMU虚拟机开发与环境配置
QEMU虚拟机开发与环境配置QEMU虚拟机开发与环境配置大体分为以下三个步骤: qemu虚拟机开发 准备虚拟机运行所需环境 qemu运行参数配置 虚拟机开发虚拟机开发可以从最简单的图灵机模型开始,创建内存、创建CPU,再在此基础上添加需要的设备。需要注意的是图灵机模型不包括屏幕回显功能(毕竟有输出才方便debug嘛),所以含有CPU,内存,serial设备的机器才是人类能够交互的最小虚拟...
2021-07-29
Read More
PowerPC虚拟机模拟的开发方法
模拟方法概述创建虚拟机可以分为如下5个阶段,伪码描述如下: 1234567static void my_machine_init(MachineState *machine){ create_cpu create_mem create_dev load_kernel create_device_tree} create_cpu阶段主要负责cpu创建的内容,包括cpu对象...
2021-07-24
Read More
qemu架构中创建内存的方法
引言一种类型的虚拟机有其特定的初始化函数以完成虚拟机内存初始化等操作。调用哪个初始化函数在构建虚拟机类时指定: 12345678910static const TypeInfo my_machine_info = { ... .class_init = my_machine_class_init,};static void my_machine_regi...
2021-05-24
Read More
QOM使用:qemu如何注册使用一个MemoryRegion类的
openrisc中ram对象的生成过程QEMU利用QOM来对对象进行抽象,用它来对各种资源进程抽象、管理(创建、配置、销毁)。即QEMU内部实现面向对象机制的方法。 QOM机制有如下三个部分: 类型注册,涉及函数有type_init、register_module_init、type_register 生成TypeImpl,通过TypeImpl就可以知道如何初始化一个类 相当于告诉qemu...
2021-04-17
Read More
QEMU的内存模拟
QEMU softmmu虚拟机(Guest)内存模拟的首要任务是将虚拟机虚拟地址(GVA)转换成实际存储的宿主机(Host)的物理地址(HPA)。 虚拟机提供了虚拟的硬件环境,GVA到到虚拟机物理地址(GPA)的过程可以由Guest OS完成,而QEMU要做的就是提供一个GPA到HPA的转换的实现。 123456789101112131415 GVA ...
2021-04-13
Read More
qemu中的初始化技术
qemu的初始化框架qemu启动需要初始化很多内容,为了方便维护和添加初始化函数,qemu有它自己的一种实现方式。 qemu的初始化时根据具体的模块类型,执行该类型的所有模块的初始化。有如下类型: 1234567891011typedef enum { MODULE_INIT_MIGRATION, MODULE_INIT_BLOCK, MODULE_INIT_OP...
2021-04-12
Read More
使用qemu启动基于open risc的虚拟机
使用qemu启动虚拟机安装qemu可能需要的依赖 1autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev git 下载q...
2020-12-05
Read More
Previous
2 / 2