+2011-01-22 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * util/grub-install.in: Ignore install device on platforms
+ where it doesn't make sense. Always use UUIDs except on pc, efi and
+ sparc64.
+ Reported by: Daniel Kahn Gillmor.
+
2011-01-22 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/bus/bonito.c (write_bases): Fix direction of the shift.
exit 1
fi
+if ! ([ "${target_cpu}-${platform}" = "i386-pc" ] \
+ || [ "${target_cpu}-${platform}" = "sparc64-ieee1275" ]); then
+ install_device=
+fi
+
# If the debugging feature is enabled, print commands.
setup_verbose=
if test x"$debug" = xyes; then
# Strip partition number
grub_partition="`echo "${grub_drive}" | sed -e 's/^[^,]*[,)]//; s/)$//'`"
grub_drive="`echo "${grub_drive}" | sed -e s/,[a-z0-9,]*//g`"
- if [ "$disk_module" = ata ] ; then
+ if [ "$disk_module" = ata ] || [ "x${grub_drive}" != "x${install_drive}" ] || ([ "x$platform" != xefi ] && [ "x$platform" != xpc ] && [ x"${target_cpu}-${platform}" != x"sparc64-ieee1275" ]) ; then
# generic method (used on coreboot and ata mod)
uuid="`"$grub_probe" --device-map="${device_map}" --target=fs_uuid --device "${grub_device}"`"
if [ "x${uuid}" = "x" ] ; then
- echo "UUID needed with ata mod, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
+ if [ "x$platform" != xefi ] && [ "x$platform" != xpc ] && [ x"${target_cpu}-${platform}" != x"sparc64-ieee1275" ]; then
+ echo "UUID needed with $platform, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
+ elif [ "$disk_module" = ata ]; then
+ echo "UUID needed with ata mod, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
+ else
+ echo "UUID needed with cross-disk installs, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
+ fi
+
exit 1
fi
echo "search.fs_uuid ${uuid} root " >> "${grubdir}/load.cfg"
echo 'set prefix=($root)'"${relative_grubdir}" >> "${grubdir}/load.cfg"
config_opt="-c ${grubdir}/load.cfg "
modules="$modules search_fs_uuid"
- elif [ "x${grub_drive}" != "x${install_drive}" ] ; then
- uuid="`"$grub_probe" --device-map="${device_map}" --target=fs_uuid --device "${grub_device}"`"
- if [ "x${uuid}" = "x" ] ; then
- echo "You attempted a cross-disk install, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
- exit 1
- fi
- echo "search.fs_uuid ${uuid} root " >> ${grubdir}/load.cfg
- echo 'set prefix=($root)'"${relative_grubdir}" >> ${grubdir}/load.cfg
- config_opt="-c ${grubdir}/load.cfg "
- modules="$modules search_fs_uuid"
elif [ "x$platform" = xefi ] || [ "x$platform" = xpc ]; then
# we need to hardcode the partition number in the core image's prefix.
if [ x"$grub_partition" = x ]; then