Preparing the USB stick

The first step was to prepare a USB-stick with the XenServer 6.2 ISO downloaded from http://www.xenserver.org. Since my workstation runs Linux, I initially tried using dd, but my server refused to boot from the USB stick.

After trying virtually every guide on the Internet, I could finally put something together that worked.

On my home computer I run Arch Linux, some paths in the commands below might have to be adapted for your system (most probably the /usr/lib/syslinux/bios paths). Throughout the commands /dev/sdX is the USB stick. Make sure you choose the correct path!

First of all, to be able to transfer the ISO-image to the USB-stick it is important that the USB stick:

  • Has a MBR partition table.
  • Has a single FAT32 partition.
  • Has the the boot-flag set on the first partition.

I fixed the requirements above using gparted.

First, let’s install syslinux on the USB stick.

# syslinux -i /dev/sdX1
# dd conv=notrunc bs=440 count=1 if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdX

Now, mount the USB stick’s partition, and also mount the XenServer 6.2 ISO.

# mount /dev/sdX1 /path/to/usb
# mount -o loop /path/to/XenServer-6.2.0-install-cd.iso /path/to/isomount

Copy all files from the XenServer ISO to the USB stick. Also rename the original CD/DVD-bootloaders config files such that syslinux can read them.

# cp -R /path/to/isomount/* /path/to/usb/
# cd /path/to/usb
# mv boot/isolinux boot/syslinux
# mv boot/syslinux/isolinux.cfg boot/syslinux/syslinux.cfg

Since the .c32-files on the XenServer ISO is made for ISOLinux, they have to be replaced by our own syslinux modules, otherwise the USB will not boot. I copied every possible .c32 file because I was lazy.

# cp /usr/lib/syslinux/bios/*.c32 boot/syslinux/

After unmounting the drive, the stick could finally be used to boot the XenServer installation.