Bundling Windows for Eucalyptus

Contrary to the commercial version (Eucalyptus Enterprise Edition), the open source version of Eucalyptus 2.0 does not support Windows. According to the Eucalyptus roadmap, Windows will be added in Eucalyptus 3.0. Nevertheless it is possible to run Windows with Eucalyptus 2.0.
Hence many step-by-step guides on bundling Windows images for Eucalyptus 2.0 exist, the bundling process can be very frustrating. So the intention of the following article is to provide a collection of links to useful bundling guides and to summarize the pitfalls that accompany the task of bundling Windows.

The steps needed to bundle a Windows image can be summarized as follows:

  • Create disk image
  • Install Windows
  • Add 2nd partition
  • Install e1000 drivers
  • Enable RDP (remote login)
  • Bundle and upload kernel
  • Bundle and upload initrd
  • Bundle and upload Windows image
  • Run instance with kernel and initrd

Those steps are described in detail (including commands) in the following guides on bundling Windows:
Eucalyptus Beginners Guide
running-windows-on-eucalyptus
running-windows-on-eucalyptus-improved
uec-bundling-windows-image

To safe you from some pitfalls of bundling Windows, the following summarizes the most common of them:

Image and partitioning
After an EMI is downloaded to the NC, Eucalyptus runs a script called “partition2disk” whose purpose is to create a disk out of the downloaded EMI. That doesn’t work for Windows EMIs atm and scrumbles the partition table of the Windows image, leading to instances that hang at the boot screen forever even while staying in the “running” state.
To avoid this behavior follow these two instructions:
Use a RAW image instead of qcow or qcow2: kvm-image -f raw ... and
Create a 2nd partition with an arbitrary size

Install the e1000 network drivers
As Eucalyptus is using the e1000 nic model, install the official drivers into your Windows image:
http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldId=8659&lang=ENG

Install SCSI drivers
When using SCSI disks with Eucalyptus (which is the default, but can be disabled as mentioned below), don’t forget to install SCSI drivers into your Windows instance as mentioned in the Windows bundling guides.

Disable Eucalyptus SCSI usage
If your Windows instances won’t boot even with installed SCSI drivers, consider to use IDE instead of SCSI by modifying the gen_kvm_libvirt_xml file on each Node Controller as described in this thread:
http://ubuntuforums.org/archive/index.php/t-1699691.html

Enable and test remote login (RDP)
Be sure to enable RDP logins and test it before you bundle and upload your image.

Using kernel and initrd
Eucalyptus dictates the usage of a kernel and a ramdisk for the boot process of an instance. Use the memdisk of SYSLINUX as the kernel and a windows floppy bootdisk image or grub as ramdisk.
Please see the bundling guides for the details.

Debugging with VNC on the Node Controller
If your instance just doesn’t want to boot, enable VNC debugging as shown here
(root privileges on the Node Controllers are needed).

Windows CPU support
Windows XP supports a maximum of 2 CPU sockets. Consider that when using a large instance type (http://support.microsoft.com/kb/888732).

Additional Windows issues:

Automated Password Generation at Windows startup
Take a look especially on this guide if you need automatic generation of a password at Windows startup:
running-windows-on-eucalyptus-improved

Attaching EBS
If you want to attach EBS volumes to your Windows instance take a look at this guide.

Use Eucalyptus kvm parameters
kvm -M pc-0.12 -enable-kvm -m 2048 -smp 2,sockets=2,cores=1,threads=1 -nodefaults -rtc base=utc -boot c -drive file=someimagefile.raw,if=none,id=drive-ide0-0-0,boot=on,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -net nic,model=e1000 -net tap,script=path/to/network/script -usb -vnc 0.0.0.0:1 -k en-us -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5

,
  • Delicious
  • Facebook
  • Digg
  • Reddit
  • StumbleUpon
  • Twitter

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>