一个非常简单的KVM | 一个极简的虚拟机监视器
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/christasa/trivial-kvm
一个极简KVM原型
tkvm是一个极简的虚拟机监视器,可以运行一个非常简单的虚拟机,并在未来可以运行整个操作系统。它使用KVM API模拟虚拟机。这是一个当前的学习项目。
步骤
学习tkvm可以分为4个步骤:
- [x] 构建KVM API使用原型
- [ ] 完成内存设置部分
- [ ] 完成内核启动和initrd加载部分
- [ ] 完成CPU部分
示例
运行 tkvm,然后运行以下命令
pidstat -p
pidof tkvm1
您将看到以下输出
UID PID %usr %system %guest %wait %CPU CPU Command
0 126933 0.00 0.00 100.00 0.00 100.00 0 tkvm
0 126933 0.00 0.00 100.00 0.00 99.00 0 tkvm
0 126933 0.00 0.00 96.00 0.00 96.00 0 tkvm
0 126933 1.00 0.00 98.00 0.00 99.00 0 tkvm
0 126933 0.00 0.00 100.00 0.00 100.00 0 tkvm
我们只是在Guest中运行了一个空循环,可以在guest/kernel.S中看到,并且可以观察到VCPU的Guest状态为100%,即使有时钟中断或网络卡中断等被动VM退出也会落在此CPU上。在VM退出后,VCPU在非常短的时间内停留在Host内核状态,然后立即切换回Guest。因此,统计数据中的%system状态为0。
参考
- https://github.com/kvmtool/kvmtool
- 《Linux虚拟化原理与实现》
标签:工具分享, 主机安全