memtest86plus/memtest-setup

94 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# package name
PNAME="memtest86+"
# executable
ENAME="elf-memtest86+"
# GRUB 2 template
G2TEMPL="20_memtest86+"
if [ "$1" = "--help" -o "$1" = "-h" ]; then
cat <<:EOF
usage: memtest-setup [OPTIONS]
This utility installs Memtest86+ into your GRUB boot loader menu.
It supports both GRUB 2 and GRUB Legacy (i.e. GRUB 0.9x).
In case of GRUB 2 it installs GRUB 2 template into /etc/grub.d and GRUB 2
config needs to be regenerated manually by running:
grub2-mkconfig -o /boot/grub2/grub.cfg
This is not done automatically because it could overwrite any custom changes
in /boot/grub2/grub.cfg.
OPTIONS:
-h , --help show this help
:EOF
exit 0
fi
if [ -d /sys/firmware/efi ]; then
echo "memtest86+ does not support EFI platforms."
exit 254
fi
if [ -f /boot/grub2/grub.cfg ]; then
echo "GRUB 2 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 "GRUB 2 template is already installed. Exiting..."
exit 252
fi
if [ -f /etc/grub.d/$G2TEMPL ]; then
echo "GRUB 2 template is already in place, only enabling..."
else
if [ ! -r /usr/share/memtest86+/$G2TEMPL ]; then
echo "ERROR: unable to find GRUB 2 template."
exit 251
fi
if ! cp /usr/share/memtest86+/$G2TEMPL /etc/grub.d; then
echo "ERROR: unable to copy GRUB 2 template, do you have write permission to"
echo "/etc/grub.d?"
# EX_IOERR
exit 74
fi
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."