#
if [ "$(chroot ${prefix} lsb_release -is)" = "Ubuntu" ] && \
dpkg --compare-versions "$(chroot ${prefix} lsb_release -rs)" ge 8.10; then
- sed -i -e 's/xvc0/hvc0/' /etc/event.d/tty1
- sed -i -e 's/console=ttyS0[^ ]*/console=hvc0/' /boot/grub/menu.lst
+ sed -i -e 's/xvc0/hvc0/' ${prefix}/etc/event.d/tty1
+ sed -i -e 's/console=ttyS0[^ ]*/console=hvc0/' ${prefix}/boot/grub/menu.lst
fi
#
+# Since pv_ops kernels force block device names to xvda, xvdb, etc,
+# the default root value of root=/dev/hda won't actually help us.
+#
+# To work around that, find a UUID for the swap and root partitions
+# and use that in the grub config (and also in /etc/fstab)
+#
+ROOT_DEV="$(perl -e 'print $ENV{"image-dev"}')"
+SWAP_DEV="$(perl -e 'print $ENV{"swap-dev"}')"
+ROOT_UUID="$(vol_id --uuid "$ROOT_DEV")"
+SWAP_UUID="$(vol_id --uuid "$SWAP_DEV")"
+sed -i -e "s#root=[^ ]*#root=UUID=$ROOT_UUID#" ${prefix}/boot/grub/menu.lst
+sed -i -e "s#${ROOT_DEV}#${ROOT_UUID}#" ${prefix}/etc/fstab
+sed -i -e "s#${SWAP_DEV}#${SWAP_UUID}#" ${prefix}/etc/fstab
+
+#
# Regenerate automagic kernels list
#
chroot ${prefix} /usr/sbin/update-grub -y