随笔分类 - QEMU-KVM基础
发表于 2021-02-24 11:15阅读:2735评论:0推荐:0
摘要:编译内核 修改配置文件 本文使用的内核为linux-5.3.8,以下命令在源码根目录下执行. 生成针对x86_64架构的配置文件: make ARCH=x86_64 x86_64_defconfig 如果编译时所处的平台架构为x86,则无需添加ARCH=x86_64 选择需要编译的x86_64架构的
阅读全文 »
发表于 2021-02-24 11:06阅读:607评论:0推荐:0
摘要:当guest software读取TSC的值时, 加上TSC_offset. VMM可以利用TSC offsetting feature, 提供给guest software错觉, 让它觉得自己运行在当前TSC之前或之后的时间. 利用TSC offset, guest software可以感知到某个
阅读全文 »
发表于 2021-02-24 11:04阅读:5395评论:0推荐:0
摘要:配置网桥 在host上查看可用网络资源 ifconfig 有enp0s31f6、enp3s0u2c4i2、lo 3个网络资源。 lo用于网络自回环的,不管 enp0s31f6是连接公司网的,但是公司linux无法上网,不管 enp3s0u2c4i2连接着我的手机,可以上网,因此使用该eth配置网桥模
阅读全文 »
发表于 2021-02-24 11:01阅读:879评论:0推荐:0
摘要:本文翻译自https://www.linux-kvm.org/page/Memory 主要内容为qemu/kvm的内存虚拟化的架构描述(的梗概)。 这是官网十年前的一篇文章,细节大家不要细扣,大概了解内存虚拟化和EPT的相关架构就行。 guest修改页表对host的影响 由于Linux内核的layz
阅读全文 »
发表于 2021-02-24 10:59阅读:2603评论:0推荐:0
摘要:在5.3.0-45-generic内核上,使用5.3.0的源码编译kvm,在modprobe kvm时,出现了错误: modprobe: ERROR: could not insert ‘kvm’: Exec format error 使用dmesg发现以下log: kvm: version mag
阅读全文 »
发表于 2021-02-24 10:57阅读:1224评论:0推荐:0
摘要:kvm模块的加载 arch/x86/kvm/vmx/vmx.c 载入kvm模块时,调用顺序为module_init()->vmx_init()->kvm_init(),所以kvm_init()为核心函数 int kvm_init() { ... /* /* 1. 将vmx_x86_ops重命名为kv
阅读全文 »
发表于 2021-02-24 10:53阅读:1185评论:0推荐:0
摘要:Linux源码版本: 5.3.0 相关数据结构 #define KVM_DEFAULT_PLE_GAP 128 // ple_gap #define KVM_VMX_DEFAULT_PLE_WINDOW 4096 //ple_window // ple_window的增大系数,每次调用grow_pl
阅读全文 »
发表于 2021-02-24 10:51阅读:1562评论:0推荐:0
摘要:Linux源码版本: 5.3.0 guest os中的kvmclock驱动 kvmclock_init()函数主要做了以下几件事: 确定了各vcpu要使用的MSR 将各vcpu在kvmclock中实际使用的数据结构pvclock_vsyscall_time_info的物理地址利用write_msr写
阅读全文 »
发表于 2021-02-24 10:42阅读:761评论:0推荐:0
摘要:KSM: Kernel SamePage Merging 内核同页合并 简介 KSM允许内核在两个或多个进程(包括虚拟客户机)之间共享完全相同的内存页. KSM让内核扫描检查正在运行中的程序,并比较他们的内存,如果发现他们有内存区域或内存页是完全相同的,就将多个相同的内存合并为一个单一的内存页,并将
阅读全文 »
发表于 2021-02-08 16:56阅读:509评论:0推荐:0
摘要:相关SDM章节: 27.2.3- Information About NMI Unblocking Due to IRET 最近收到同事发来的一个问题,即: VMCS 中的 Guest Interruptibility State field 的 bit3-Blocking by NMI 和 VM-
阅读全文 »