This is a fix to write grub in prep even if the --no-nvram is used.

--
Paulo Flabiano Smorigo
Linux Technology Center Brazil Software Engineer
IBM Systems & Technology Group
pfsmor...@br.ibm.com / pfsmor...@linux.vnet.ibm.com
=== modified file 'util/grub-install.in'
--- util/grub-install.in	2012-05-11 19:07:39 +0000
+++ util/grub-install.in	2012-05-30 18:46:05 +0000
@@ -734,8 +734,31 @@
 if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-pc" ] || [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "sparc64-ieee1275" ] ; then
     # Now perform the installation.
     "$grub_setup" ${allow_floppy} ${setup_verbose} ${setup_force} --directory="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform" \
-	--device-map="${device_map}" "${install_device}" || exit 1
+--device-map="${device_map}" "${install_device}" || exit 1
 elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ] || [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "powerpc-ieee1275" ]; then
+
+    # If a install device is defined, copy the core.elf to PReP partition.
+    if [ -n "${install_device}" ]; then
+        if [ "$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t msdos_parttype)" != "41" ]; then
+	       gettext "The chosen partition is not a PReP partition." 1>&2
+	       echo 1>&2
+	       exit 1
+        fi
+
+        if [ "$(file -s "${install_device}" -b | awk '{ print $1 }')" = ELF ] || [ x$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t zero_check) = xtrue ]; then
+	        dd if="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" of="${install_device}" status=noxfer || {
+	        gettext "Failed to copy Grub to the PReP partition." 1>&2
+	            echo 1>&2
+	            exit 1
+	        }
+        else
+	        gettext "The PReP partition is not empty. If you are sure you want to use it, run dd to clear it:" 1>&2
+	        echo 1>&2
+	        echo "  dd if=/dev/zero of=${install_device}"
+	        exit 1
+        fi
+    fi
+
     if [ x"$update_nvram" = xyes ]; then
 	ofpathname="`which ofpathname`"
 	nvsetenv="`which nvsetenv`"
@@ -768,28 +791,8 @@
             # Point boot-device at the new grub install
 	    boot_device="$ofpath:$partno,"`"$grub_mkrelpath" "${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" | sed 's,/,\\\\,g'`
 
-        # If a install device is defined, copy the core.elf to PReP partition.
 	else
-            if [ "$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t msdos_parttype)" != "41" ]; then
-		gettext "The chosen partition is not a PReP partition." 1>&2
-		echo 1>&2
-		exit 1
-            fi
 
-            if [ "$(file -s "${install_device}" -b | awk '{ print $1 }')" = ELF ] || [ x$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t zero_check) = xtrue ]; then
-            # Change boot device to the harddisk root
-		boot_device="$ofpath"
-		dd if="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" of="${install_device}" status=noxfer || {
-		    gettext "Failed to copy Grub to the PReP partition." 1>&2
-		    echo 1>&2
-		    exit 1
-		}
-            else
-		gettext "The PReP partition is not empty. If you are sure you want to use it, run dd to clear it:" 1>&2
-		echo 1>&2
-		echo "  dd if=/dev/zero of=${install_device}"
-		exit 1
-            fi
 	    dev="`echo "${install_device}" | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`"
 	    boot_device="`$ofpathname "$dev"`" || {
 	    # TRANSLATORS: "device tree path" is the name of the device

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to