The reason for this happening is quite simple: /dev/xvda1 is only considered as a potential grub device if /dev/xvda does not exist. Since it does appear on HVM instances, the logic is invalid.
The following works: ben@prongs:/work/patching/cloud-init/cloudinit/config$ bzr diff === modified file 'cloudinit/config/cc_grub_dpkg.py' --- cloudinit/config/cc_grub_dpkg.py 2014-02-12 19:56:55 +0000 +++ cloudinit/config/cc_grub_dpkg.py 2014-07-02 17:00:47 +0000 @@ -46,7 +46,8 @@ idevs_empty = "false" if idevs is None: idevs = "/dev/sda" - for dev in ("/dev/sda", "/dev/vda", "/dev/sda1", "/dev/vda1"): + for dev in ("/dev/sda", "/dev/vda", "/dev/xvda", "/dev/sda1", + "/dev/vda1", "/dev/xvda1"): if os.path.exists(dev): idevs = dev break ** Changed in: cloud-init (Ubuntu) Importance: High => Critical -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to cloud-init in Ubuntu. https://bugs.launchpad.net/bugs/1336855 Title: non-interactive grub updates for 12.04 break on AWS To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1336855/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs