Thursday, December 20, 2012

Windows Azure 12.04 and 12.10 Updates

by Ben Howard

Announcing new 12.04.1 and 12.10 Image availability

We are pleased to announce the immediate availability of the latest 12.04.1 (Precise Pangolin) and 12.10 (Quantal Quetzal) Cloud Images on Windows Azure, Microsoft's public cloud. These images are named:
  • 12.04.1: Ubuntu-12_04_1-LTS-amd64-20121218-en-us-30GB
  • 12.10: Ubuntu-12_10-amd64-20121218-1-en-us-30GB
Please note, that due to the way that Windows Azure Gallery works, we will not be able to maintain older images on the gallery. As new images become available, we will be expiring old images. If you need a specific version/serial of a Ubuntu Cloud Image, we strongly suggest that you snapshot and use that version.
Action required: Updates for Existing Images

ACTION REQUIRED: Update existing 12.04.1 or 12.10 images

Over the last year, it has been our pleasure to work with Microsoft to build the Ubuntu Cloud Images for Windows Azure. Microsoft is making updates to Windows Azure to further increase performance and stability of Virtual Machines, currently in preview. These updates require an action - by January 15, 2013 - on custom Linux virtual machine images that fit the definition below:

  • Any gallery Linux images captured into storage accounts from a virtual machine originally created on or before December 21, 2012
  • Any of your personal Linux images uploaded to Windows Azure on or before December 21, 2012.
To learn more about the changes that Microsoft has implemented, please see Microsoft’s announcement.
All Ubuntu users who have instances running on Windows Azure need to make sure that they take action BEFORE January 15, 2013 (else, they might find the Mayan prophecy 30 days late, as far as their instances are concerned).
If, however, you want to update existing images, then we present to you, utlemming’s tl;dr update guide (or you can use Microsoft’s guide, which does the same stuff, just with more explicit commands).

utlemming’s tl;dr update guide

From a Ubuntu perspective the changes required for 12.04 and 12.10 are:
  • CHANGE the current archive mirrors to the on-site Azure mirrors. Canonical has worked to build fast and stable regional mirrors which are co-located in each Azure region. To reduce your bandwidth costs and improve the experience of installing software, all users should update to the new mirrors.
  • CHANGE bootloader configuration to include kernel parameters of “rootdelay=300 console=ttyS0″ and drop the kernel parameter "ata_piix.disable_driver" as it is no longer beneficial and will cause harm after January 15, 2013
  • ADD hv-kvp-daemon-init, which facilitates the start of the hv-kvp-daemon and supporting scripts. The hv-kvp-daemon handles hyper-visor-to-Ubuntu communication channels.
  • ADD linux-backports-hv-{precise,quantal}-virtual (lbm module). The lbm module backports the 3.7 HV stack to support new hypervisor features, as well as increase performance and stability.
  • UPDATE walinuxagent to version 1.2. Microsoft has introduced some bug fixes to the way that provisioning of Linux images work. This updated agent will reduce provisioning failures.

     
Update Ubuntu 12.04 and 12.04.1

For those running 12.04 and 12.04.1, the following steps are needed to fully update Ubuntu to Windows Azure compatibility. Complete all eight steps to update the mirror, the kernel, and the Azure agent.
  1. sudo sed -i “s,archive.ubuntu.com,azure.archive.ubuntu.com,g” /etc/apt/sources.list
    • This step updates the mirrors to point to an Azure hosted mirror.
  2. sudo apt-add-repository ‘http://archive.canonical.com/ubuntu precise-backports main’
    • This step adds the repository needed to get the kernel and agent changes.
  3. sudo apt-get update
  4. sudo apt-get install linux-backports-modules-hv-precise-virtual
    • This step adds the update kernel and associated modules.
  5. sudo apt-get install hv-kvp-daemon-init walinuxagent
    • This step adds the updated agent.
  6. Perform the GRUB_CMDLINE_LINUX_DEFAULT steps outlined below to adjust the boot commandline options prior to your next boot.
  7. (recommended) sudo apt-get dist-upgrade
  8. sudo reboot

Update Ubuntu 12.10

For those who have already upgraded their images and area already running 12.10,  the following steps are needed to fully update Ubuntu to Windows Azure compatibility. Complete all eight steps to update the mirror, the kernel, and the Azure agent.
  1. sudo sed -i “s,archive.ubuntu.com,azure.archive.ubuntu.com,g” /etc/apt/sources.list
    • This step updates the mirrors to point to an Azure hosted mirror.
  2. sudo apt-add-repository ‘http://archive.canonical.com/ubuntu precise-backports main’
    • This step adds the repository needed to get the kernel and agent changes.
  3. sudo apt-get update
  4. sudo apt-get install linux-backports-modules-hv-precise-virtual
    • This step adds the update kernel and associated modules.
  5. sudo apt-get install hv-kvp-daemon-init walinuxagent
    • This step adds the updated agent.
  6. Perform the GRUB_CMDLINE_LINUX_DEFAULT steps outlined below to adjust the boot commandline options prior to your next boot.
  7. (recommended) sudo apt-get dist-upgrade
  8. sudo reboot

Update the Boot Loader Configuration

Ubuntu instances running on Windows Azure need to be configured for a long root delay (how long Ubuntu will wait for the root device to appear) and to output kernel messages to the serial console.

Edit /etc/default/grub and make sure that the GRUB_CMDLINE_LINUX_DEFAULT has “console=ttyS0 rootdelay=300” in it.  Remove any reference to "ata_piix.disable_driver". For example: 

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 rootdelay=300” Ubuntu instances running on Windows Azure should no longer be configured to disable the ata_piix driver as it is now used for simulating a CD-ROM.


An alternative to using an editor on /etc/default/grub is to just run these commands:
  1. sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 rootdelay=300 /g' /etc/default/grub
  2. sudo sed -i 's/atapiix.disable_driver//g' /etc/default/grub
Then run the following to process these grub linux command line changes:
  1. sudo update-grub
  2. (optional) sudo reboot

Bring-your-own-Ubuntu (BYOU)

Obviously, we would love for you to use the images that Canonical builds. After all, we have a team that has put in countless hours building, perfecting and QA’ing. But, if for some reason you can’t, then can we suggest that you start with our base images? You can find them here:
These VHD files are the exact base-bits that have been uploaded and registered in the Windows Azure environment. Even better, these are based on the 20121218 Amazon AWS EC2 official images with the same package version and set (except there are a few more packages to support Windows Azure).
TIP: If you use the VHD files for BYOU, cloud-init is installed. Cloud-init is the magic sauce in the Ubuntu Cloud Images that gives each instance of Ubuntu running in the cloud a personality; for Windows Azure, Cloud-Init and WALinuxAgent work side-by-side to offer the best Ubuntu experience. We have configured cloud-init for NoDataSource, which means that it will look for user-data in /var/lib/cloud/seed/nocloud-net/user-data. Simply drop your user-data script in there, and at boot time, it will be run. Also, you can edit /etc/cloud/cloud.cfg as well to use different mirrors, add SSH keys, etc. You can read more about cloud-init here: https://help.ubuntu.com/community/CloudInit
For the adventurous that like to spin their own bits, please make sure that you have the following packages installed.
  • hv-kvp-daemon-init: handles hypervisor communication with Ubuntu
  • walinuxagent: Windows Azure Linux provisioning agent and Azure fabric registration agent
  • A kernel based on 3.7 or backports of the HV stack Ubuntu 13.04 kernels support the HV stack normally.
  • Install the linux-tools-common package.
  • 12.04 and 12.10 Ubuntu kernels will need the linux-backports-hv-{precise,quantal}-virtual package installed. This package is a complete backport of the _entire_ HV stack from Ubuntu 13.04.
  • Set /etc/apt/sources.list to use the hosted-in-Azure Ubuntu mirrors (http://azure.archive.ubuntu.com), which will use the speedy mirrors local to your Azure virtual machine. WARNING: these mirrors are dreadfully slow outside Azure.
Follow the Windows Azure recommendations for publication.
NOTE: It is very hard to generate a VHD file that is compatible with Windows Azure using open-source tools without playing a very annoying and disk-space intensive dance. For this reason we strongly recommend using the VHD files above, or using the in-Azure images and taking a snapshot.

Special thanks

The Ubuntu Cloud Image team recognizes that the success on Windows Azure would not be possible if not for the amazing help and special talents of Adam Conrad (infinity), Andy Whitcroft (apw) and the QA and Certification staff, as well as our fine colleagues at Microsoft.