XenServer/Install/PXE

= PXE Install Server for XenServer =

Why do I need this?
If you choose to use XenServer as the hypervisor for your OpenStack deployment, you probably want the install to be automatic. At Citrix, we find it useful to have a PXE server around, even in a simple development environment. It makes it much easier to start automating tests later on.

Ingredients
This guide was written using:
 * 1) Xenserver 6.0.2
 * 2) Ubuntu 11.10 virtual machine as the PXE server, although this could also be a physical machine.

However, it should be equally applicable to modern versions of both XenServer and Ubuntu.

Install the following packages
sudo apt-get install apache2 isc-dhcp-server tftpd-hpa

Edit /etc/network/interfaces
The interface eth1 on my machine is on a network called "Network 1". Please change the instructions below to match your network setup.

Caution: Ensure that your "Network 1" is isolated from any corporate network, to avoid any interference from our DHCP, PXE server. auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.0.0 network 192.168.0.0 broadcast 192.168.0.255

Edit /etc/dhcp/dhcpd.conf and add the following
allow bootp;

use-host-decl-names true; option domain-name "Network 1"; option domain-name-servers 192.168.0.1; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; filename "pxelinux.0"; }

tftpboot
Mount the iso you downloaded and copy over the following to your /var/lib/tftpboot folder: cd  cp ./boot/pxelinux/mboot.c32 /var/lib/tftpboot cp ./boot/pxelinux/pxelinux.0 /var/lib/tftpboot mkdir -p /var/lib/tftpboot/xenserver cp ./boot/vmlinuz /var/lib/tftpboot/xenserver cp ./boot/xen.gz /var/lib/tftpboot/xenserver cp ./install.img /var/lib/tftpboot/xenserver

pxelinux.cfg/default
First you need to add the menu UI file handler. cp /usr/lib/syslinux/menu.c32 /var/lib/tftpboot/ And then : mkdir /var/lib/tftpboot/pxelinux.cfg

Edit /var/lib/tftpboot/pxelinux.cfg/default and paste the following
DEFAULT local UI menu.c32 PROMPT 1 TIMEOUT 60

LABEL local localboot 0

LABEL Install-XenServer kernel mboot.c32 append xenserver/xen.gz dom0_max_vcpus=2 dom0_mem=752M com1=115200,8n1 console=com1,vga --- xenserver/vmlinuz xencons=hvc console=hvc0 console=tty0 answerfile=http://192.168.0.1/answerfile install --- xenserver/install.img

The Answer File
You may use the sample answerfile below. This must be placed in /var/www/answerfile.  sda us mypass                     <=== fill this IP address of my ntp server      <=== fill this  America/Los_Angeles

Copy packages* and XS-REPOSITORY-LIST to your webserver
cd  mkdir /var/www/xenserver     # path you gave in the answerfile cp -r packages* /var/www/xenserver cp XS-REPOSITORY-LIST /var/www/xenserver

Start services
sudo /etc/init.d/networking restart #if you changed /network/interfaces sudo /etc/init.d/isc-dhcp-server start sudo /etc/init.d/tftpd-hpa start

Ready to run
On your target machine, ensure that boot sequence is set to boot from network. Reboot your machine. Ensure it acquires a DHCP address from your PXE server. At the boot prompt, enter install-xenserver and take a deep breath.

= Further Reading = For more details see:
 * http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/installation.html#pxe_boot_install
 * http://xen.org/files/XenCloud/installation.pdf