Differences between revisions 1 and 2
Revision 1 as of 2012-08-10 15:18:38
Size: 5550
Comment: libvirt and xen how to virtualize - working tutorial -
Revision 2 as of 2012-08-10 15:20:50
Size: 5554
Comment: fixed table of content- added screenshot of windows7 fully virtuilized
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[TableOfContents(4)]] <<TableOfContents(4)>>
Line 101: Line 101:
attachment:windows7.png [[attachment:windows7.png]]

Installing Xen

CPU BIOS Requirements

Virtualization extensions need to be enabled in the BIOS. If not already enabled in BIOS, enable it.

CPU needs to have virtualization extensions.

To check Intel CPU:

cat /proc/cpuinfo | grep vmx


cat /proc/cpuinfo | grep smv

For XEN kernel, check output of the following for 'hvm':

cat /sys/hypervisor/properties/capabilities

Debian 6.0 Install Xen

apt-get install xen-linux-system xen-qemu-dm xen-utils

Boot Xen kernel by default

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen


Management tools

apt-get install libvirt-bin

*Change the default location to /home/xen/images: Edit:

vi /etc/libvirt/storage/default.xml

And change the location. Reason I'm doing that is my home partition has 80Gb while / (root) partition has only 5gb.


apt-get install virt-manager

* If you want to connect over ssh tunner you need:

aptitude install ssh-askpass

On debian squeeze the default value for this parameter is “no” which means that communication and management toos
Such as “Virt Manager” can not access the Hypervisor.

1. You need to uncomment it and change the value to “yes” –
(xend-unix-server yes)

2. Restart xend to apply the new configuration:
xend restart

Start Networking

  • To start the default network do:

virsh net-start default
virsh net-autostart default

Installing new guest OS

Create iso from cdrom

dd if=/dev/cdrom of=~/cd_image.iso

Windows 7



Extending xen raw_storage_volume

Starting Networking

  • To start the default network do:

virsh net-start default
virsh net-autostart default
  • Done.
  • *The libvirt-bin package comes with this default network defined here: /etc/libvirt/qemu/networks/default.xml
  • *If you remove the network or this file is missing you will need to recreate it manually.The default.xml contains:

  <bridge name="virbr0" />
  <ip address="" netmask="">
      <range start="" end="" />

Disable virbr0

  • Make sure the virbr0 is listed

virsh net-list
  • make sure default is listed. Below will delete /etc/libvirt/qemu/networks/default.xml . Make a copy before you delete it otherwise the only way to get it back is to purge libvirt-bin libvirt0 and reinstall.

virsh net-destroy default
virsh net-undefine default
service libvirtd restart


Error creating domain: device model '/usr/lib64/xen/bin/qemu-dm' not found

Unable to complete install '<class 'libvirt.libvirtError'> POST operation failed: xend_post: error from 
xen daemon: (xend.err "Error creating domain: device model '/usr/lib64/xen/bin
/qemu-dm' not found")


mkdir /usr/lib64/xen/
ln -s /usr/lib/xen-4.0/bin /usr/lib64/xen/bin

iptables bad rule

  • Also similar error irtual network 'default' does not exist: Network not found: no network with matching name

libvirtError: internal error '/sbin/iptables --table filter --delete INPUT --in-interface virbr0 --protocol udp --destination-port 69 --jump ACCEPT' exited with non-zero status 1 and signal 0: iptables: Bad rule (does a matching rule exist in that chain?).


This is trying to bound to interface virbr0. If for some reason you didn't start the network you will get this error. Start the network:

virsh net-start default
#or autostart it
virsh net-autostart default
  • Check if networks got started:

  • Done
  • Couple other helpful commands:

virsh net-dumpxml default

**Notes (Looks like these steps are not needed):

**trying to test this. read: vi /usr/share/doc/libvirt-bin/README.Debian

  • Need to modify the dnsmasq to support libvirt and only connect to localhost. Run this on a command line as root

aptitude install dnsmasq-base bridge-utils iptables
cat <<EOF >/etc/dnsmasq.d/00_libvirtd.conf
# only bind to loopback by default
  • This makes dnsmasq only bind to the loopback interface by default so libvirtd

can handle the virtual bridges.