Skip to content
Jonas Pfoh edited this page Dec 10, 2013 · 5 revisions

THIS PAGE IS STILL A WIP!

nitro is an extension to the QEMU/KVM hypervisor for Linux that focuses on support for VMI. For now, it supports syscall trapping on Intel hardware. The general architecture is as follows:

  • QEMU - This is the userland component of QEMU/KVM and is only slightly modified to export the VM memory as a shared memory region (https://github.com/pfohjo/qemu).
  • KVM kernel driver - This is the kernel component of QEMU/KVM and is heavily modified by this project to perform VMI tasks that KVM does not natively support (https://github.com/pfohjo/nitro-kmod).
  • nitro - This is the userland component that implements nitro. This project contains a library (libnitro) that is essentially a wrapper around the ioctl calls that the kernel module understands. (This repository)

nitro is meant to be flexible API for VMI. It includes a reference implementation that is generally aimed at sandboxing, but other uses are encouraged. As mentioned above, this project includes libnitro, which is a wrapper around the ioctl calls that the kernel module understands. In addition, QEMU has been modified to allow direct, memory-mapped access to the VM's physical memory. This way an application can directly access the VM's memory through a mapped memory region and can read/manipulate state or set traps through libnitro.

Clone this wiki locally