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
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 config/ cc_grub_ dpkg.py' config/ cc_grub_ dpkg.py 2014-02-12 19:56:55 +0000 config/ cc_grub_ dpkg.py 2014-07-02 17:00:47 +0000
idevs_ empty = "false" exists( dev):
idevs = dev
break
=== modified file 'cloudinit/
--- cloudinit/
+++ cloudinit/
@@ -46,7 +46,8 @@
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.