From efaa049ddd320670388ccb9557ea295376bb917d Mon Sep 17 00:00:00 2001 From: Anton Midyukov Date: Tue, 15 Aug 2023 21:44:13 +0700 Subject: [PATCH] 39_memtest: add memtest86+ for EFI Signed-off-by: Anton Midyukov --- alt/39_memtest | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/alt/39_memtest b/alt/39_memtest index 4f4496e0c..3c9188787 100755 --- a/alt/39_memtest +++ b/alt/39_memtest @@ -16,11 +16,6 @@ # You should have received a copy of the GNU General Public License # along with GRUB. If not, see . -if [ -d /sys/firmware/efi ]; then - echo "Skipping memtest image in EFI mode" >&2 - exit 0 -fi - prefix=/ exec_prefix=/usr bindir=/usr/bin @@ -66,6 +61,7 @@ find /boot -name "memtest-*.bin" -printf "$FMT\\n" | while read memtest ; do version=`echo $basename | sed -e "s,^[^0-9]*-,,g" | sed -e "s,\.bin$,,g"` + echo "if [ \"\$grub_platform\" = \"pc\" ]; then" printf "menuentry \"Memtest86+-$version\" {\n" if [ -z "${prepare_boot_cache}" ]; then prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" @@ -75,5 +71,28 @@ find /boot -name "memtest-*.bin" -printf "$FMT\\n" | while read memtest ; do cat << EOF } EOF + echo "fi" +done + +find /boot -name "memtest-*.efi" -printf "$FMT\\n" | while read memtest ; do + prepare_boot_cache= + echo "Found memtest image: $memtest" >&2 + + basename=`basename $memtest` + dirname=`dirname $memtest` + if [ "$dirname" = "." ]; then dirname=""; fi + + version=`echo $basename | sed -e "s,^[^0-9]*-,,g" | sed -e "s,\.efi$,,g"` + echo "if [ \"\$grub_platform\" = \"efi\" ]; then" + printf "menuentry \"Memtest86+-$version (may not work with Secure Boot)\" {\n" + if [ -z "${prepare_boot_cache}" ]; then + prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" + fi + printf '%s\n' "${prepare_boot_cache}" + echo " linux $dirname/$basename" + cat << EOF +} +EOF + echo "fi" done -- 2.33.8