X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-autoinstaller.git/blobdiff_plain/f32d14b0bccb12f07abab1ab89d8db57ad2dad9d..refs/tags/0.0.26:/common/usr/lib/xen-tools/debian.d/93-setup-grub diff --git a/common/usr/lib/xen-tools/debian.d/93-setup-grub b/common/usr/lib/xen-tools/debian.d/93-setup-grub index c6b6cb2..5102c4a 100755 --- a/common/usr/lib/xen-tools/debian.d/93-setup-grub +++ b/common/usr/lib/xen-tools/debian.d/93-setup-grub @@ -68,6 +68,21 @@ if [ "$(chroot ${prefix} lsb_release -is)" = "Ubuntu" ] && \ 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