虚拟化
文章平均质量分 95
papaofdoudou
文明人交流技术的空间,俄狗俄杂夹头贼脑残禁入
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于QEMU 模拟intel-iommu的sva/svm demo环境搭建和验证
摘要:本文探讨了SVA(Shared Virtual Addressing)机制在解决设备DMA与进程内存映射一致性问题的实现原理。传统方法需固定VA-PA映射,限制了灵活性。SVA通过让SMMU与MMU共享页表,实现IOVA与VA统一,并支持设备侧缺页处理,确保映射同步。文章详细介绍了基于QEMU模拟的Intel IOMMU环境搭建步骤,包括编译支持SVM的QEMU分支、配置虚拟机参数(如1G巨页和IOMMU启用),以及验证测试用例的流程。该环境为无硬件条件下研究IOMMU/SVM机制提供了有效平台。原创 2025-12-20 12:58:20 · 751 阅读 · 0 评论 -
映射与人生
文章摘要:本文通过计算机系统架构类比人类认知过程,提出"人生进程"概念,认为外部事物需通过"映射"机制进入个人体验才具有意义。核心同构包括:用户地址空间对应个人生活领域,内核空间象征潜意识基础,内存映射类比知识吸收,页表如同记忆系统,共享内存反映共同经验。文章强调主动选择认知映射、维护心理边界(内存保护)、整合碎片化经验(碎片整理)的重要性,指出元认知能力如同系统内核,其稳定性决定人生质量。最终揭示我们既是体验接收者,也是自身认知架构的主动设计者。原创 2025-11-13 07:55:38 · 667 阅读 · 0 评论 -
KVM影子页表和EPT页表的实现机制分析
摘要:影子页表是CPU虚拟化中实现内存虚拟化的关键技术,为每个虚拟机独立维护页表。其建表函数包括nonpaging_init_context(实模式)、paging64_init_context(64位系统)和paging32_init_context(32位系统)。传统影子页表实现复杂开销大,而硬件辅助的EPT技术通过CPU的第二层地址翻译硬件显著提升性能。在EPT模式下,硬件直接完成第二阶段的地址翻译,无需构建影子页表,从而降低虚拟化开销。原创 2025-10-29 20:03:25 · 877 阅读 · 0 评论 -
Qemu调试ARM64 linux内核 IOMMU(SMMU)驱动环境搭建
本文详细介绍了在ARM64平台上构建Linux系统的完整流程。首先安装64位ARM GCC编译器并编译BusyBox,配置静态库选项和工具链。随后定制文件系统,创建必要的目录和配置文件(fstab、inittab等),设置环境变量和挂载点。接着编译Linux 5.16.12内核,配置initramfs和调试选项。然后从源码编译QEMU 4.2.1,支持多种架构模拟。最后使用QEMU启动内核,指定内存大小、CPU类型、内核镜像和启动参数(包括init进程、控制台输出等关键设置)。整个过程涵盖了工具链准备、文件原创 2025-10-04 12:58:49 · 809 阅读 · 0 评论 -
QEMU如何模拟目标机上的原子指令?
关于QEMU对原子操作的指令,社区答疑汇总如下,说明的和文中分析基本一致。基本说明了通过HOST Native atomic 指令替代实现和stop-the-world两种方法实现,和分析是一致的。原创 2024-05-04 00:17:37 · 602 阅读 · 0 评论 -
Qemu mdev GPA->HVA映射逻辑
QEMU vfio_realize初始化:Host Memory映射:启动参数中通过-m 4096参数为GUEST OS建立了4G内存,抓取到的这组映射如下:4G的主内存分为3G和1G的两个部分进行映射,SIZE分别是0xc0000000和0x40000000, HVA范围为[0x7fe0bbe00000,0x7fe1bbe00000]. GPA分为两段,分别是[0,0xc0000000),[0x100000000,0x140000000);原创 2024-07-10 07:08:34 · 686 阅读 · 0 评论 -
基于MDEV的PCI设备虚拟化DEMO实现
mdev受控直通体现了架构设计中的控制平面和数据平面分离的思想,平面可以理解为动作发生的地方,也就是让控制信号和数据流动发生在不同的地方,通过mdev设备虚拟化,让访问配置空间,MMIO寄存器这种低带宽配置面操作走trap-and-emulation路径,这是控制路径,而让设备存储访问(比如网络内存,GPU数据存储)以IOMMU DMA MAP的方式直通进行,控制和数据两个方向正交,彼此可以独立变化互不影响,同时兼顾了划分灵活性和访问性能。原创 2024-06-29 19:06:48 · 830 阅读 · 0 评论 -
Qemu添加自定义PCI设备
QEMU中添加新设备的核心是将设备描述TypeInfo对象注册进QEMU,将注册函数本身作为QEMU系统设备初始化链表中的一个接点注册进QEMU设备链表,而后者代表的注册函数则通过gcc attribute constructor注册进QEMU应用,在启动过程中执行。设备本身的注册函数将在QEMU启动过程中执行设备链表中的初始化会调完成。原创 2024-02-07 23:51:44 · 2303 阅读 · 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 · 6779 阅读 · 0 评论 -
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 · 532 阅读 · 0 评论 -
理解PCIE设备透传
1.透传场景下,设备内存映射给VCPU,不会通过DMAR映射给设备自身,设备内存本身就在设备上,设备可以直接访问(通过设备内部的IOMMU),不需要映射给DMAR。资源内存映射给DMAR的情况一般是三方外设通过自身IOMMU DOMAIN(自身设备绑定)访问其他设备上的存储资源。2.透传的设备访问主存仅仅需要一次映射,由DMAR完成IOVA到HPA的翻译。原创 2024-01-19 23:33:40 · 1730 阅读 · 0 评论 -
KSM Demo 分析
KSM是“Kernel SamePage Merging ”的缩写,中文可称为“内核同页合并 ”。它是一种节省内存的技术,从2.6.32版开始获得支持,内核需要打开CONFIG_KSM=y选项使用KSM机制。KSM允许内核在两个或多个进程(包括虚拟客户机)之间共享完全相同的内存页。KSM让内核扫描检查 正在运行中的程序 并比较它们的内存 ,如果发现它们有完全相同的内存区域或内存页 ,就将多个相同的内存合并为一个单一的内存页,并将其标识为“写时复制 ”。这样可以起到节省系统内存使用量的作用。原创 2023-12-28 23:58:09 · 1292 阅读 · 0 评论 -
yocto poky @ x86_64 qemu开发QuickStart
yocto的读作“幺科托",它的本意是一种非常小的度量单位(10的负24次方),在这里它代表一种LINUX的发行版及其构建系统。它的使用非常简单,按照如下步骤操作,每个开发者都可以构建一套自己的LINUX发行版镜像。原创 2023-09-15 23:21:41 · 473 阅读 · 0 评论 -
Qemu在ARM和X86平台上的运行机制初探
User mode:用户模式,在这种模式下,QEMU 运行某个单一的程序,并且适配其的系统调用。通常我们遇到的异构 PWN 题都会使用这种模式,这种模式可以简单轻便的模拟出其他架构程序的执行过程,使做题人的重心倾斜于分析异构的题目文件上,而不是转换过程中。System mode:系统模式,在这种模式下,QEMU 可以模拟出一个完整的计算机系统。包含TCG/TCI两个后端。KVM Hosting 模式,使用KVM作为加速后端。原创 2022-08-23 23:06:42 · 1802 阅读 · 1 评论 -
KVM虚拟机迁移原理与实践
热迁移环境需要满足的几个必要条件:1.热迁移之前,虚拟机安装文件必须要在源主机和目标主机都可以访问的位置上,并且具有相同的访问路径。实现方式可以是通过独立的NFS共享服务,或者是离线拷贝虚拟机镜像文件到目标主机相同的路径下。2.源主机和目标主机必须可以互相访问(SSH,TCP等协议)。3.迁移过程中经常会出现迁移进度条回滚的现象,这可能就是由迁移算法和逻辑决定的,回滚的目的是迁移上把进度条迁移过程中产生的脏页。原创 2023-11-11 23:48:31 · 2120 阅读 · 0 评论 -
ubuntu18.04下pass-through直通PCIe设备到qemu-kvm虚拟机实践
设备直通是一种虚拟化资源分配方式,通过将物理设备直通给虚拟机环境,达到使虚拟机可以直接访问物理设备的目的,直通功能对设备的要求不高,不需要设备支持SR-IOV PF/VF,目前市面上的显卡/网卡一般都支持直通。直通典型场景比如主机上有两块显卡,可以一块分配给主机用,另一块给虚拟机用,主板有集成显卡的可以采用将集成显卡给宿主机,PCIe的独立显卡给虚拟机用。原创 2023-05-07 10:50:18 · 4222 阅读 · 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 · 502 阅读 · 0 评论 -
KVM虚拟化之小型虚拟机kvmtool的使用
分配给虚拟机大于4GB的RAM需要在RAM中留下一个GAP,用于PCI MMIO、热插拔和未配置的设备(详细信息请参阅e820_setup_gap())。原创 2023-01-27 13:42:06 · 4041 阅读 · 1 评论 -
QEMU&KVM 虚拟机实例demo以及RISCV/x86上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 · 3315 阅读 · 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 · 3274 阅读 · 0 评论 -
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 · 2855 阅读 · 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 · 927 阅读 · 0 评论 -
CPU虚拟化技术及QEMU/KVM虚拟机安装实践
计算机可虚拟化的原因是因为计算机是一个离散的系统,由于资源有限,计算机只能描述有限数量的事务,只能计算到某个固定数,然后就会用尽计算机上的所有东西。在离散系统上,让另外一个事务去虚拟化一个已经存在的事物,只不过是复制创造一个和已存在事务完全一样的事件序列。现代物理告诉我们,我们的宇宙是离散和有限的,人们首先发现了自然数,接着是0,然后又发现了自然数的对立面负数,进而宣告整数的发现。后来人们觉得整数还是不够用,就发明了比例,也就是分数,所有之前发现的数在一起构成有理数集合。原创 2022-11-21 22:47:25 · 7168 阅读 · 0 评论
分享