![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚拟化
文章平均质量分 92
papaofdoudou
我的藏经阁.
展开
-
QEMU如何模拟目标机上的原子指令?
关于QEMU对原子操作的指令,社区答疑汇总如下,说明的和文中分析基本一致。基本说明了通过HOST Native atomic 指令替代实现和stop-the-world两种方法实现,和分析是一致的。原创 2024-05-04 00:17:37 · 274 阅读 · 0 评论 -
基于MDEV的PCI设备虚拟化DEMO实现
mdev受控直通体现了架构设计中的控制平面和数据平面分离的思想,平面可以理解为动作发生的地方,也就是让控制信号和数据流动发生在不同的地方,通过mdev设备虚拟化,让访问配置空间,MMIO寄存器这种低带宽配置面操作走trap-and-emulation路径,这是控制路径,而让设备存储访问(比如网络内存,GPU数据存储)以IOMMU DMA MAP的方式直通进行,控制和数据两个方向正交,彼此可以独立变化互不影响,同时兼顾了划分灵活性和访问性能。原创 2024-06-29 19:06:48 · 340 阅读 · 0 评论 -
Qemu添加自定义PCI设备
QEMU中添加新设备的核心是将设备描述TypeInfo对象注册进QEMU,将注册函数本身作为QEMU系统设备初始化链表中的一个接点注册进QEMU设备链表,而后者代表的注册函数则通过gcc attribute constructor注册进QEMU应用,在启动过程中执行。设备本身的注册函数将在QEMU启动过程中执行设备链表中的初始化会调完成。原创 2024-02-07 23:51:44 · 942 阅读 · 1 评论 -
linux iommu group&domain概念分析整理
在Linux系统中,IOMMU是指Input/Output Memory Management Unit是一种硬件设备,用于管理输入输出设备的内存映射以及访问权限。IOMMU可以提高系统的安全性和性能,通过对DMA请求进行隔离和管理,防止恶意设备访问系统内存并提高内存使用效率。在IOMMU的实现中,一个IOMMU设备通常会管理多个I/O设备,而这些IO设备可能需要共享同一块物理内存。为了有效管理这些IO设备,Linux内核使用IOMMU Group进行设备的分组和隔离。原创 2023-04-28 20:27:39 · 2819 阅读 · 2 评论 -
mdev虚拟化PCI串口试验
本篇参考实践Linux 内核文档 :Documentation/driver-api/vfio-mediated-device.rstDocumentation/driver-api/vfio.rstThis step creates a dummy device, /sys/devices/virtual/mtty/mtty/.打开内核CONFIG_SAMPLE_VFIO_MDEV_MTTY配置项,重新编译内核生成mtty.ko.重启系统,加载mtty.ko, Files in this devic原创 2024-01-28 23:43:52 · 217 阅读 · 0 评论 -
理解PCIE设备透传
1.透传场景下,设备内存映射给VCPU,不会通过DMAR映射给设备自身,设备内存本身就在设备上,设备可以直接访问(通过设备内部的IOMMU),不需要映射给DMAR。资源内存映射给DMAR的情况一般是三方外设通过自身IOMMU DOMAIN(自身设备绑定)访问其他设备上的存储资源。2.透传的设备访问主存仅仅需要一次映射,由DMAR完成IOVA到HPA的翻译。原创 2024-01-19 23:33:40 · 997 阅读 · 0 评论 -
KSM Demo 分析
KSM是“Kernel SamePage Merging ”的缩写,中文可称为“内核同页合并 ”。它是一种节省内存的技术,从2.6.32版开始获得支持,内核需要打开CONFIG_KSM=y选项使用KSM机制。KSM允许内核在两个或多个进程(包括虚拟客户机)之间共享完全相同的内存页。KSM让内核扫描检查 正在运行中的程序 并比较它们的内存 ,如果发现它们有完全相同的内存区域或内存页 ,就将多个相同的内存合并为一个单一的内存页,并将其标识为“写时复制 ”。这样可以起到节省系统内存使用量的作用。原创 2023-12-28 23:58:09 · 806 阅读 · 0 评论 -
yocto poky @ x86_64 qemu开发QuickStart
yocto的读作“幺科托",它的本意是一种非常小的度量单位(10的负24次方),在这里它代表一种LINUX的发行版及其构建系统。它的使用非常简单,按照如下步骤操作,每个开发者都可以构建一套自己的LINUX发行版镜像。原创 2023-09-15 23:21:41 · 241 阅读 · 0 评论 -
Qemu在ARM和X86平台上的运行机制初探
User mode:用户模式,在这种模式下,QEMU 运行某个单一的程序,并且适配其的系统调用。通常我们遇到的异构 PWN 题都会使用这种模式,这种模式可以简单轻便的模拟出其他架构程序的执行过程,使做题人的重心倾斜于分析异构的题目文件上,而不是转换过程中。System mode:系统模式,在这种模式下,QEMU 可以模拟出一个完整的计算机系统。包含TCG/TCI两个后端。KVM Hosting 模式,使用KVM作为加速后端。原创 2022-08-23 23:06:42 · 1043 阅读 · 1 评论 -
KVM虚拟机迁移原理与实践
热迁移环境需要满足的几个必要条件:1.热迁移之前,虚拟机安装文件必须要在源主机和目标主机都可以访问的位置上,并且具有相同的访问路径。实现方式可以是通过独立的NFS共享服务,或者是离线拷贝虚拟机镜像文件到目标主机相同的路径下。2.源主机和目标主机必须可以互相访问(SSH,TCP等协议)。3.迁移过程中经常会出现迁移进度条回滚的现象,这可能就是由迁移算法和逻辑决定的,回滚的目的是迁移上把进度条迁移过程中产生的脏页。原创 2023-11-11 23:48:31 · 1545 阅读 · 0 评论 -
QEMU显示虚拟化的几种选项
【代码】QEMU显示虚拟化的几种选项。原创 2023-11-19 10:31:18 · 1101 阅读 · 0 评论 -
ubuntu18.04下pass-through直通PCIe设备到qemu-kvm虚拟机实践
设备直通是一种虚拟化资源分配方式,通过将物理设备直通给虚拟机环境,达到使虚拟机可以直接访问物理设备的目的,直通功能对设备的要求不高,不需要设备支持SR-IOV PF/VF,目前市面上的显卡/网卡一般都支持直通。直通典型场景比如主机上有两块显卡,可以一块分配给主机用,另一块给虚拟机用,主板有集成显卡的可以采用将集成显卡给宿主机,PCIe的独立显卡给虚拟机用。原创 2023-05-07 10:50:18 · 2082 阅读 · 0 评论 -
Homebrew NFS Network File Sharing Environment
nfs server 优麒麟 OS作为NFS服务器:nfs client, ubuntu 22.04 作为NFS 客户端:网络拓扑结构,网关1安装在客厅,为了加强卧室信号,用一台小米路由器作为信号中继,拓扑结构如下:NFS Server路由信息,可见前两跳分别是两个网关。原创 2023-03-18 02:22:52 · 320 阅读 · 0 评论 -
KVM虚拟化之小型虚拟机kvmtool的使用
分配给虚拟机大于4GB的RAM需要在RAM中留下一个GAP,用于PCI MMIO、热插拔和未配置的设备(详细信息请参阅e820_setup_gap())。原创 2023-01-27 13:42:06 · 2207 阅读 · 1 评论 -
QEMU&KVM 虚拟机实例demo以及RISCV上KVM的实现分析
KVM通过一组IOCTL向用户空间导出接口,这些接口能够用于虚拟机的创建,虚拟机内存的设置,虚拟机VCPU的创建与运行等,按照接口所使用的文件描述符不同,KVM的这组IOCTL接口可以分为三类:0./dev/kvm节点对应全局kvmfd, 通过kvmfd创建每个虚拟机对应的vmfd, 再由vmfd为每个虚拟VCPU创建一个vcpufd,vcpufd通过vmfd暴露的接口获取。KVM全局管理用kvmfd,虚拟机管理用vmfd, vcpu运行用vcpufd. 内核对应三套chrdev的fops.原创 2022-05-02 10:36:06 · 2742 阅读 · 1 评论 -
linux4.15 arm qemu @ubuntu18.04环境搭建与bootgraph启动优化
本环境对内核和BUSYBOX的版本要求并不严格,只要是同一个时期的内核和Busybox,都不会有太大问题,比如下面用的busybox-1.35.0.tar.bz2搭配linux-5.15.90.tar.xz也是可以的。原创 2022-04-26 20:44:56 · 2734 阅读 · 1 评论 -
qemu 启动ARM虚拟机的几点释惑
1.hw/arm/boot.c是各类BOOT的集散地,另一个之前接触过的BOOT为smpboot(为某款双核A7设计SMP版的FREERTOS,在这里得到启动灵感)。2.QEMU虚拟机本身对系统行为的模拟是完备的,不需要修改GUEST内核,所以基本上,QEMU启动命令的每个选项,背后都有文章,主要分成两个方面进行模拟,第一是对CPU的模拟,这是靠TCG翻译完成的,对于算力密集型程序,TCG会很忙很忙。第二个是对IO行为的模拟,而这个是依赖对各类IO支持完成的。原创 2022-05-01 12:06:46 · 2409 阅读 · 0 评论 -
qemu中断model虚拟化是如何实现的?
当系统调用CPSR指令关闭ARM IRQ/FIQ中断的时候,QEMU模拟器将其转换为HOST的HELPER cpsr_write调用,调用中修改env->daif值关闭中断标志位CPSR_I/CPSR_F.之后在每次的中断执行入口函数arm_cpu_exec_interrupt中,如果检测到外设有CPU_INTERRUPT_HARD或者CPU_INTERRUPT_FIQ类型的中断请求,则继续检测daif的中断标志状态,如果中断被DISABLE,则退出中断处理,继续执行线程代码。如果使用qemu-$原创 2022-09-11 23:44:21 · 651 阅读 · 0 评论 -
CPU虚拟化技术及QEMU/KVM虚拟机安装实践
计算机可虚拟化的原因是因为计算机是一个离散的系统,由于资源有限,计算机只能描述有限数量的事务,只能计算到某个固定数,然后就会用尽计算机上的所有东西。在离散系统上,让另外一个事务去虚拟化一个已经存在的事物,只不过是复制创造一个和已存在事务完全一样的事件序列。现代物理告诉我们,我们的宇宙是离散和有限的,人们首先发现了自然数,接着是0,然后又发现了自然数的对立面负数,进而宣告整数的发现。后来人们觉得整数还是不够用,就发明了比例,也就是分数,所有之前发现的数在一起构成有理数集合。原创 2022-11-21 22:47:25 · 5334 阅读 · 0 评论