[[!summary chatGPT: Migrating a Gentoo system from VirtualBox to a libvirt machine running Fedora Core 15 Beta, including problems with image conversion, network and kernel configuration, and virtualbox kernel module building.]]
[[!meta date="2011-05-20 16:02"]]
[[!tag gentoo linux packagemanager technology]]
[[!img media/libvirtlogo.png size=150x style="float: right"]]
# motivation
i have a gentoo system inside a virtualbox but i wanted to make some 'long term tests' so i decided to migrate it to a libvirt machine which is running 'fedora core 15 beta'.
# problems converting the image
first i tried to migrate the 'Gentoo 64 (portage).vdi' directly to a libvirt image, using [2]. but anything i tried: afterwards the image was never bootable so i decided to use ssh to copy all the files instead.
1. boot both virtual machines using the '**grml64-mediaum_2010.12.iso**'.
2. assign the ip addresses
while i was using on the virtualbox side using: vboxnet0 in a host only networking schema i used a bridge on the other machine which involved lots of manual configuration as: disable networkmanager (on fedora core, remember?), removing the eth0 configuration (which happens to be called em1); adding a new configuration for the bridge br0 (using eth0).
3. finally i could ping from the virtualbox image to the libvirt guest system
4. i used '**rsync -av /mnt/gentoo -e ssh 192.168.66.20:/mnt/gentoo**'
Note: both local gentoo systems were mounted into /mnt/gentoo
5. but libvirt used a ide host controller (which was very slow)
therefore i manually removed the ide controller and replaced it by a **VirtIO Disk using 'qcow2' as storage format and 'Virtio' as bus**.
6. after all the copying i installed grub (grub-1.99rc1) but the original system had a grub1 config!
the conversion was not simple!
## The grub pitfall
virtualbox image using grub1:
### cat /boot/grub/menu.lst
default 0
timeout 30
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 2.6.24-r7
root (hd0,0)
kernel /boot/kernel-genkernel-x86_64-2.6.36-gentoo-r5 root=/dev/ram0 real_root=/dev/sda1
initrd /boot/initramfs-genkernel-x86_64-2.6.36-gentoo-r5
in comparison: 'libvirt guest' using grub2
### cat /boot/grub/grub.cfg
set default=0
set timeout=30
menuentry "Gentoo Linux 2.6.36-gentoo-r5" {
insmod part_msdos
insmod ext2
set root=(hd0,msdos1)
linux /boot/kernel-genkernel-x86_64-2.6.36-gentoo-r5 root=/dev/ram0 real_root=/dev/vda1
initrd /boot/initramfs-genkernel-x86_64-2.6.36-gentoo-r5
}
**Note:** i marked the differences.
**Note:** take care of the different filename as well!
anyway: in the grml shell you can install grub into /dev/vda using:
grub-install --root-directory=/mnt/gentoo /dev/vda
## the kernel configuration pitfall
a **libvirt guest** must be aware of **/dev/vda (virtIO)** but my genkernel was not. also i lacked ext4 support. so it is a good idea to included this into the kernel (i had it included as modules but it did not work well).
cat /etc/kernels/kernel-config-x86_64-2.6.36-gentoo-r5 | grep -i virt | grep -v "^#"
CONFIG_VIRT_TO_BUS=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTUALIZATION=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
just use 'genkernel' to build the new kernel (and don't forget the ext4 support as i did).
# fedora core network problems
i basically used [3] to make it work. the benefit is now that **em1 is not used** directly but the system uses **br0** to access the internet.
**PRO:** the libvirt guests do get their own 'mac address', thus are separated from being able to see each others traffic.
# fedora core yum problems
i also tried to install virtualbox and followed the instructions found on virtualbox.org but soon i had the problem that the virtualbox kernel modules won't build and need 'kernel-devel' but after installing the kernel-devel package using 'yum install kernel-devel' **there was a mismatch between 'used kernel' and 'kernel-devel' headers.**
# summary
libvirt and the 'virtual machine manager' are very nice:
* i like that it is so easy to start a virtual machine when the host machine boots.
* i also like the 'virtual machine manager' as it **shows cpu/disk io/network io nicely**
(but that is not limited to libvirt virtualizations).
* **fedora core 15 beta** was running quite nicely (except that it crashed while i was writing this article)
so i can at least say: **it ran for straight 6hours without crash ;P**
# links
* [1]
* [2]
* [3]