一个非常简单的KVM | 一个极简的虚拟机监视器

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/christasa/trivial-kvm

一个极简KVM原型

tkvm是一个极简的虚拟机监视器,可以运行一个非常简单的虚拟机,并在未来可以运行整个操作系统。它使用KVM API模拟虚拟机。这是一个当前的学习项目。

步骤

学习tkvm可以分为4个步骤:

  • [x] 构建KVM API使用原型
  • [ ] 完成内存设置部分
  • [ ] 完成内核启动和initrd加载部分
  • [ ] 完成CPU部分

示例

运行 tkvm,然后运行以下命令

pidstat -p pidof tkvm 1

您将看到以下输出

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。

参考

标签:工具分享, 主机安全