Blob Blame History Raw
#!/bin/bash

# package name
PNAME="memtest86+"

# executable
ENAME="elf-memtest86+"

# grub2 template
G2TEMPL="20_memtest86+"

if [ -d /sys/firmware/efi ]; then
    echo "memtest86+ does not support EFI platforms."
    exit 254
fi

if [ -f /boot/grub2/grub.cfg ]; then
    echo "grub2 detected, installing template..."
    if [ ! -d /etc/grub.d ]; then
        echo "ERROR: unable to find /etc/grub.d"
        exit 253
    fi
    if [ -x  /etc/grub.d/$G2TEMPL ]; then
        echo "grub2 template is already installed. Exiting..."
        exit 252
    fi
    if [ -f /etc/grub.d/$G2TEMPL ]; then
        echo "grub2 template is already in place, only enabling..."
    else
        if [ ! -r /usr/share/memtest86+/$G2TEMPL ]; then
            echo "ERROR: unable to find grub2 template."
            exit 251
        fi
        cp /usr/share/memtest86+/$G2TEMPL /etc/grub.d
    fi
    chmod a+x /etc/grub.d/$G2TEMPL
    echo "grub 2 template installed."
    echo "Do not forget to regenerate your grub.cfg by:"
    echo "  # grub2-mkconfig -o /boot/grub2/grub.cfg"
else
    MTVERSION=`rpm -q --qf '%{version}' $PNAME`
    MTPATH="/boot/$ENAME-$MTVERSION"

    MENT=`cat /boot/grub/grub.conf | grep "$ENAME-$MTVERSION"` &> /dev/null
    if [ "$MENT" != "" ]; then
        echo "$MTPATH is already configured. Exiting..."
        exit 0
    fi

    if [ ! -f $MTPATH ]; then
        echo "ERROR: $MTPATH does not exist."
        exit 255
    fi

    /sbin/new-memtest-pkg --install $MTVERSION --banner="Memtest86+"
    RETVAL="$?"

    if [ "$RETVAL" != "0" ]; then
        echo "ERROR: grubby failed to configure your bootloader for $MTPATH."
        exit $RETVAL
    else
        sed -i -e"s,kernel \(/boot\)\?/$ENAME,kernel --type=netbsd \1/$ENAME," /boot/grub/grub.conf
        sed -i -e"s,/$ENAME-$MTVERSION.*,/$ENAME-$MTVERSION," /boot/grub/grub.conf
    fi
fi

echo "Setup complete."