When virtualizing a physical machine ("P2V"), the conversion step is
done by virt-v2v, but there is a small GUI / front end component
called virt-p2v which has to run on the source physical machine in a
special environment.
http://libguestfs.org/virt-p2v.1.html#network-setup
Because the nature of the problem is that we want to virtualize old
machines, this means virt-p2v sometimes has to be run with old drivers
or on machines which would be considered obsolete today as servers
(eg. 32 bit machines).
We have a customer who wishes to virtualize a machine with an ancient
LSI controller that is only supported by a proprietary kernel module
for RHEL 5, and so I spent some time getting virt-p2v to compile and
run on RHEL 5.
These are my notes in case anyone needs to reproduce this (or *I* need
to reproduce it at some later date).
I needed both virt-p2v with the Gtk GUI, and qemu-nbd (also not
available on RHEL 5).
I started with libguestfs from git. I have added a few upstreamable
RHEL 5 patches. I also needed the attached patches which are not
upstreamable.
You will need to run bootstrap and/or autogen.sh on more recent
machine, since autotools on RHEL 5 is far too old. (This was easy for
me because I was building on an NFS homedir shared between Fedora 25
and RHEL 5).
Configure libguestfs like this:
export vmchannel_test=no
export LIBTINFO_CFLAGS=-D_GNU_SOURCE
export LIBTINFO_LIBS=-lncurses
export YAJL_CFLAGS=-D_GNU_SOURCE
export YAJL_LIBS=-lyajl
./configure \
--prefix /usr \
--libdir /usr/lib64 \
--disable-static \
--disable-appliance --disable-daemon \
--disable-ocaml --disable-perl --disable-python --disable-ruby \
--disable-php --disable-lua \
--with-qemu=no
We only want virt-p2v to be compiled, so at this point you can do one
of:
make -k
make -C p2v
This should get you a virt-p2v binary.
For qemu-nbd, the latest qemu is not even close to compiling on RHEL
5. However going back to qemu tag v1.5.0 worked, and it compiled
easily from git. This will give you a qemu-nbd binary.
Provided that both qemu-nbd and virt-p2v are available on the $PATH,
you can now run virt-p2v as normal. Note that you should run it
against virt-v2v on a modern machine (conversion server).
There is a case for making virt-p2v work with other NBD servers
(eg. nbd or nbdkit), or with a minimal built-in NBD server.
To build the RHEL 5 virt-p2v ISO, I had to quite heavily modify the
p2v.ks (kickstart) file. The file is rather large so I could not
attach it, but I placed it here instead:
http://oirase.annexia.org/tmp/p2v-rhel-5.ks
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW