#! /bin/sh set -e # grub-mkconfig helper script. # Copyright (C) 2011 Michal Ambroz # Adapted for openSUSE by Andrey Borzenkov # Adapted for EFI by Hans-Peter Jansen # # you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the script. If not, see . . "$pkgdatadir/grub-mkconfig_lib" export TEXTDOMAIN=grub2 export TEXTDOMAINDIR=/usr/share/locale CLASS="--class memtest86 --class gnu --class tools" if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then OS=Memtest else OS="${GRUB_DISTRIBUTOR} Memtest" CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}" fi # memtest86+ comes in two flavours, one EFI and one suitable for x86 real mode. # The EFI module requires security disabled in BIOS (Boot Mode: Other OS) if [ -d /sys/firmware/efi -a -f /boot/efi/EFI/memtest86/memtest.efi ]; then memtest=/boot/efi/EFI/memtest86/memtest.efi loader='linux ' message="$(gettext_printf "Loading EFI memtest ...\n" | grub_quote)" # locate the real EFI partition GRUB_DEVICE_BOOT=$(grub2-probe -t device "$memtest") else memtest=/boot/memtest.bin loader='linux16' message="$(gettext_printf "Loading x86 memtest ...\n" | grub_quote)" fi if grub_file_is_not_garbage "$memtest" ; then gettext_printf "Found memtest image: %s\n" "$memtest" >&2 basename=`basename $memtest` dirname=`dirname $memtest` rel_dirname=`make_system_path_relative_to_its_root $dirname` boot_device_id="$(grub_get_device_id "${GRUB_DEVICE_BOOT}")" printf "menuentry '%s' %s \$menuentry_id_option '%s' {\n" "${OS}" "${CLASS}" "memtest-$boot_device_id" prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")" printf '%s\n' "${prepare_boot_cache}" cat << EOF echo '$message' ${loader} ${rel_dirname}/${basename} } EOF fi