--- /var/abs/core/grub/20_memtest86+ 2013-02-09 04:35:15.000000000 +0530 +++ ./20_memtest86+ 2013-02-09 21:57:07.330527680 +0530 @@ -1,4 +1,4 @@ -#! /bin/sh -e +#!/usr/bin/env bash ######################################################## # This script generates a memtest86+ entry on grub.cfg # # if memtest is installed on the system. # @@ -15,15 +15,18 @@ MEMTEST86_IMAGE="/boot/memtest86+/memtest.bin" CLASS="--class memtest86 --class gnu --class tool" -if [ -e $MEMTEST86_IMAGE ] && is_path_readable_by_grub $MEMTEST86_IMAGE; then - # image exists, create menu entry - echo "Found memtest86+ image: $MEMTEST86_IMAGE" >&2 - cat << EOF -menuentry "Memory test (memtest86+)" $CLASS { -EOF - prepare_grub_to_access_device `${grub_probe} --target=device $MEMTEST86_IMAGE` | sed -e "s/^/ /" - cat << EOF - linux16 (\$root)`make_system_path_relative_to_its_root $MEMTEST86_IMAGE` -} +if [ -e "${MEMTEST86_IMAGE}" ] && is_path_readable_by_grub "${MEMTEST86_IMAGE}" ; then + ## image exists, create menu entry + echo "Found memtest86+ image: ${MEMTEST86_IMAGE}" >&2 + _GRUB_MEMTEST_HINTS_STRING="$(${grub_probe} --target=hints_string ${MEMTEST86_IMAGE})" + _GRUB_MEMTEST_FS_UUID="$(${grub_probe} --target=fs_uuid ${MEMTEST86_IMAGE})" + _GRUB_MEMTEST_REL_PATH="$(make_system_path_relative_to_its_root ${MEMTEST86_IMAGE})" + cat << EOF +if [ "${grub_platform}" == "pc" ]; then + menuentry "Memory test (memtest86+)" ${CLASS} { + search --fs-uuid --no-floppy --set=root ${_GRUB_MEMTEST_HINTS_STRING} ${_GRUB_MEMTEST_FS_UUID} + linux16 ${_GRUB_MEMTEST_REL_PATH} + } +fi EOF fi