Virt-v2v is a program that converts a single guest from a foreign hypervisor to run on KVM. It can read Linux and Windows guests running on VMware, Xen, Hyper-V and some other hypervisors, and convert them to KVM managed by libvirt, OpenStack, oVirt, Red Hat Virtualisation (RHV) or several other targets. It can modify the guest to make it bootable on KVM and install virtio drivers so it will run quickly.
There is also a companion front-end called virt-p2v (https://github.com/libguestfs/virt-p2v) which comes as an ISO, CD or PXE image that can be booted on physical machines to virtualize those machines (physical to virtual, or p2v).
Virt-v2v and virt-p2v have been in continuous development since 2007.
For more information about virt-v2v and virt-p2v please read the respective manual pages. For virt-v2v, see the docs/ subdirectory in the source tree.
To build from git:
git submodule update --init autoreconf -i ./configure make
To build from tarball:
./configure make
You can run virt-v2v without installing it:
./run virt-v2v ...
To run the tests:
make check
libguestfs (https://libguestfs.org)
OCaml bindings for libguestfs
OCaml bindings for libvirt (https://gitlab.com/libvirt/libvirt-ocaml)
libnbd >= 1.10 (https://gitlab.com/nbdkit/libnbd)
The 'nbdinfo' and 'nbdcopy' programs from libnbd.
OCaml bindings for libnbd
nbdkit >= 1.27.4 (https://gitlab.com/nbdkit/nbdkit)
These nbdkit plugins and filters:
nbdkit-curl-plugin
nbdkit-file-plugin
nbdkit-nbd-plugin
nbdkit-null-plugin
nbdkit-python-plugin
nbdkit-ssh-plugin
nbdkit-vddk-plugin
nbdkit-cacheextents-filter
nbdkit-cow-filter
nbdkit-multi-conn-filter
nbdkit-rate-filter
nbdkit-retry-filter
qemu-nbd
qemu-img
Optional, for enhancements to the basic program:
OCaml gettext
virtio-win (Windows virtio device drivers)
Optional, used by the test suite:
guestfish
OCaml oUnit2