Skip to content

Instantly share code, notes, and snippets.

@pfsmorigo
Created May 30, 2012 20:38
Show Gist options
  • Save pfsmorigo/2838787 to your computer and use it in GitHub Desktop.
Save pfsmorigo/2838787 to your computer and use it in GitHub Desktop.
[PATCH] Writes core.elf in PReP even if the --no-nvram parameter is used.
=== modified file 'ChangeLog'
--- ChangeLog 2012-05-30 12:56:53 +0000
+++ ChangeLog 2012-05-31 01:11:02 +0000
@@ -1,3 +1,8 @@
+2012-05-30 Paulo Flabiano Smorigo <[email protected]>
+
+ * util/grub-install.in: Writes core.elf in PReP even if the --no-nvram
+ parameter is used.
+
2012-05-30 Vladimir Serbinenko <[email protected]>
Fix handling of EFI with big memory maps.
=== modified file 'util/grub-install.in'
--- util/grub-install.in 2012-05-11 19:07:39 +0000
+++ util/grub-install.in 2012-05-31 01:41:46 +0000
@@ -736,6 +736,29 @@
"$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
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 [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "powerpc-ieee1276" ] && [ -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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment