summarylogtreecommitdiffstats
path: root/60_memtest86+
blob: 7f63e0e045c6adae7d4f5efb100273ac26125098 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env bash
########################################################
# This script generates a memtest86+ entry on grub.cfg #
# if memtest is installed on the system.               #
########################################################

prefix="/usr"
exec_prefix="${prefix}"
datarootdir="/usr/share"
datadir="${datarootdir}"
sysconfdir="/etc"

. "${datadir}/grub/grub-mkconfig_lib"

. "${sysconfdir}/default/grub"

MEMTEST86_IMAGE="/boot/memtest86+/memtest.bin"
CLASS="--class memtest86 --class gnu --class tool"

[[ -z "${GRUB_PLATFORM}" ]] && GRUB_PLATFORM="x86"

check="--is-${GRUB_PLATFORM}-linux"

# MEMTEST86_IMAGE="$(if grub_file_is_not_garbage "${MEMTEST86_IMAGE}" && "${grub_file}" ${check} "${MEMTEST86_IMAGE}" ; then echo -n "${MEMTEST86_IMAGE} " ; fi)"

if [[ "${GRUB_PLATFORM}" == "x86" ]]; then
    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 [ x\$grub_platform = xpc ]; then
    menuentry "Memory Tester (memtest86+)" ${CLASS} {
        search --fs-uuid --no-floppy --set=root ${_GRUB_MEMTEST_HINTS_STRING} ${_GRUB_MEMTEST_FS_UUID}
        linux16 ${_GRUB_MEMTEST_REL_PATH} ${GRUB_CMDLINE_MEMTEST86}
    }
fi
EOF
    fi
fi