X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-autoinstaller.git/blobdiff_plain/9ee3c4d1f220f49c2dbab202e64bfea5039b2096..2de427228fdfbf454002ebe61cd0530b58b34ebd:/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 61deefb..7989591 100755 --- a/common/usr/lib/xen-tools/debian.d/93-setup-grub +++ b/common/usr/lib/xen-tools/debian.d/93-setup-grub @@ -63,21 +63,36 @@ done # 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 # -# If this is a Jaunty machine, the fix from LP #291256 caused our -# patch to update-grub to not work, so let's use that mechanism -# instead +# 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. # -sed -i -e 's/indomU=detect/indomU=true/' /boot/grub/menu.lst +# 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")" +for i in $(seq 1 "$NUMPARTITIONS"); do + var="PARTITION${i}" + case "$(echo ${!var} | cut -f1 -d:)" in + disk) ROOT_GUEST="$(echo ${!var} | cut -f8 -d:)";; + swap) SWAP_GUEST="$(echo ${!var} | cut -f8 -d:)";; + esac +done +sed -i -e "s#root=[^ ]*#root=UUID=$ROOT_UUID#" ${prefix}/boot/grub/menu.lst +sed -i -e "s#${ROOT_GUEST}#${ROOT_UUID}#" ${prefix}/etc/fstab +sed -i -e "s#${SWAP_GUEST}#${SWAP_UUID}#" ${prefix}/etc/fstab # -# Regenerate automagic kernels list +# Regenerate automagic kernels list, saving our changes # -chroot ${prefix} /usr/sbin/update-grub -y +chroot ${prefix} env UCF_FORCE_CONFFOLD=1 /usr/sbin/update-grub -y # # Log our finish