This is an old revision of the document!
Xen
First install the hypervisor, xen aware kernel and xen tools. This can be done by a metapackage:
> apt-get install xen-linux-system
Prioritise Booting Xen Over Native
Debian Squeeze uses Grub 2 whose default is to list normal kernels first, and only then list the Xen hypervisor and its kernels.
You can change this to cause Grub to prefer to boot Xen by changing the priority of Grub's Xen configuration script (20_linux_xen) to be higher than the standard Linux config (10_linux). This is most easily done using dpkg-divert:
> dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
to undo this:
> dpkg-divert --rename --remove /etc/grub.d/20_linux_xen
After any update to the Grub configuration you must apply the configuration by running:
update-grub
Configure Networking
In order to give network access to guest domains it is necessary to configure the domain 0 network appropriately. The most common configuration is to use a software bridge.
It is recommended that you manage your own network bridge using the Debian network bridge. The Xen wiki page Host Configuration/Networking also has some useful information. The Xen supplied network scripts are not always reliable and will be removed from a later version. They are disabled by default in Debian's packages.
If you have a router that assigns ip addresses through dhcp, the following is a working example of the /etc/network/interfaces file using bridge-utils software.
> nano /etc/network/interfaces #The loopback network interface auto lo iface lo inet loopback iface eth0 inet manual auto xenbr0 iface xenbr0 inet dhcp bridge_ports eth0 #other possibly useful options in a virtualized environment #bridge_stp off # disable Spanning Tree Protocol #bridge_waitport 0 # no delay before a port becomes available #bridge_fd 0 # no forwarding delay
activate your changes like this:
> ifdown eth0 > killall dhclient > ifup xenbr0 > brctl show bridge name bridge id STP enabled interfaces br-lan 8000.xxxxxxxxxxxx no eth0
You should see your new IP address on ifconfig br-lan, and you should still be able to ping out (e.g. ping 8.8.8.8 / and resolve: ping google.com).
Configure Domain 0 Memory
On a system which is dedicated to running Xen guests it is better to instead give dom0 some static amount of RAM and to disable ballooning, here 1024MB.
In order to do this you must first add the dom0_mem option to your hypervisor command line. This is done by editing /etc/default/grub and adding:
In order to do this you must first add the dom0_mem option to your hypervisor command line. This is done by editing /etc/default/grub and adding
# Xen boot parameters for all Xen boots GRUB_CMDLINE_XEN="dom0_mem=1280M"
at the bottom of the file.
Note : On servers with huge memory, Xen kernel crash. You must set a dom0 memory limit.
Take care on Wheezy, 1024M is not enough and cause kernel crash at boot with out-of-memory message.
Remember to apply the change to the grub configuration by running
> update-grub
Then edit /etc/xen/xend-config.sxp to configure the toolstack to match by changing the following settings:
(dom0-min-mem 1280) (enable-dom0-ballooning no)
At this point you should reboot so that these changes take effect.
===== Configure guest behaviour on host reboot
By default, when Xen dom0 shuts down or reboots, it tries to save (i.e. hibernate) the state of the domUs. Sometimes there are problems with that - it could fail because of a lack of disk space in /var, or because of random software bugs. Because it is also clean to just have the VMs shutdown upon host shutdown, if you want you can make sure they get shut down normally by setting these parameters in /etc/default/xendomains:
XENDOMAINS_RESTORE=false XENDOMAINS_SAVE=""
Configure Boot Parameters
You may also want to pass some boot parameters to Xen when starting up in normal or recovery mode. Add these variables to /etc/default/grub to achieve this:
# Xen boot parameters for all Xen boots GRUB_CMDLINE_XEN="something" # Xen boot parameters for non-recovery Xen boots (in addition to GRUB_CMDLINE_XEN) GRUB_CMDLINE_XEN_DEFAULT="something else"
Remember to apply the change to the grub configuration by running update-grub!
More information on the available hypervisor command line options can be found in the upstream documentation.