摘要: background 在以5.3为内核的ubuntu中编译3.10的内核时,出现: include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc5.h错误 尝试了网上说的将当前内核(5.3)的compiler-gcc.h复制 阅读全文
posted @ 2021-02-24 11:19 EwanHai 阅读(2919) 评论(0) 推荐(0) 编辑
摘要: 以5.3.8(最新)Linux 内核为例 下载内核源码 从https://mirrors.edge.kernel.org/pub/linux/kernel下载所需的内核源码. wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/lin 阅读全文
posted @ 2021-02-24 11:17 EwanHai 阅读(1023) 评论(0) 推荐(0) 编辑
摘要: 编译内核 修改配置文件 本文使用的内核为linux-5.3.8,以下命令在源码根目录下执行. 生成针对x86_64架构的配置文件: make ARCH=x86_64 x86_64_defconfig 如果编译时所处的平台架构为x86,则无需添加ARCH=x86_64 选择需要编译的x86_64架构的 阅读全文
posted @ 2021-02-24 11:15 EwanHai 阅读(2295) 评论(0) 推荐(0) 编辑
摘要: 以kvm为例 编译 当前系统内核版本: 5.3.8 当前系统内核版本对应的源代码目录: ~/下载/linux-5.3.8/ 当前系统内核版本对应的源代码目录中kvm module源码的位置: ~/下载/linux-5.3.8/arch/x86/kvm/ 当前系统存放module文件的位置: /lib 阅读全文
posted @ 2021-02-24 11:14 EwanHai 阅读(1117) 评论(0) 推荐(0) 编辑
摘要: 最近在看《x86_x64体系探索及编程》,在制作可供bochs使用的硬盘镜像时出了一些问题,主要有以下几个: 步骤 如书中所说,做了: 使用bximage生成了硬盘镜像 对bochs的配置文件进行了配置 利用dd工具将uboot, setup, lib16二进制文件导入到hello.img中,使用的 阅读全文
posted @ 2021-02-24 11:09 EwanHai 阅读(2245) 评论(0) 推荐(0) 编辑
摘要: 当guest software读取TSC的值时, 加上TSC_offset. VMM可以利用TSC offsetting feature, 提供给guest software错觉, 让它觉得自己运行在当前TSC之前或之后的时间. 利用TSC offset, guest software可以感知到某个 阅读全文
posted @ 2021-02-24 11:06 EwanHai 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 配置网桥 在host上查看可用网络资源 ifconfig 有enp0s31f6、enp3s0u2c4i2、lo 3个网络资源。 lo用于网络自回环的,不管 enp0s31f6是连接公司网的,但是公司linux无法上网,不管 enp3s0u2c4i2连接着我的手机,可以上网,因此使用该eth配置网桥模 阅读全文
posted @ 2021-02-24 11:04 EwanHai 阅读(4407) 评论(0) 推荐(0) 编辑
摘要: 本文翻译自https://www.linux-kvm.org/page/Memory 主要内容为qemu/kvm的内存虚拟化的架构描述(的梗概)。 这是官网十年前的一篇文章,细节大家不要细扣,大概了解内存虚拟化和EPT的相关架构就行。 guest修改页表对host的影响 由于Linux内核的layz 阅读全文
posted @ 2021-02-24 11:01 EwanHai 阅读(781) 评论(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 阅读全文
posted @ 2021-02-24 10:59 EwanHai 阅读(2438) 评论(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 阅读全文
posted @ 2021-02-24 10:57 EwanHai 阅读(1067) 评论(0) 推荐(0) 编辑