2009-04-24 17:33:51 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2014-08-26 12:19:26 +00:00
|
|
|
# GRUB 2 template
|
2011-12-07 14:48:31 +00:00
|
|
|
G2TEMPL="20_memtest86+"
|
2011-12-05 14:19:53 +00:00
|
|
|
|
2016-02-23 16:02:36 +00:00
|
|
|
# GRUB 2 environment file
|
|
|
|
CONF_FILE="/etc/memtest86+.conf"
|
|
|
|
|
2016-04-05 09:30:21 +00:00
|
|
|
# GRUB2 configuration file
|
|
|
|
GRUB2CFG="/boot/grub2/grub.cfg"
|
|
|
|
|
2016-02-23 16:02:36 +00:00
|
|
|
# GRUB2 environment variable to control image type
|
|
|
|
CONF_VAR="INSTALL_ELF"
|
|
|
|
|
|
|
|
# whether to install ELF image
|
|
|
|
ELF=1
|
|
|
|
|
2014-08-26 12:19:26 +00:00
|
|
|
if [ "$1" = "--help" -o "$1" = "-h" ]; then
|
|
|
|
cat <<:EOF
|
2018-05-17 09:46:14 +00:00
|
|
|
Usage:
|
|
|
|
memtest-setup [-b|-e|-h]
|
|
|
|
memtest-setup [--bin|--elf|--help]
|
|
|
|
|
|
|
|
The memtest-setup utility installs Memtest86+ into GRUB 2 boot loader menu.
|
|
|
|
It installs GRUB 2 template into /etc/grub.d directory.
|
2014-09-05 08:51:42 +00:00
|
|
|
|
2018-05-17 09:46:14 +00:00
|
|
|
GRUB 2 configuration file needs to be regenerated manually by running:
|
2014-08-26 12:19:26 +00:00
|
|
|
|
2018-05-17 09:46:14 +00:00
|
|
|
grub2-mkconfig -o $GRUB2CFG
|
2014-08-26 12:19:26 +00:00
|
|
|
|
2018-05-17 09:46:14 +00:00
|
|
|
This is not done automatically because it could overwrite any custom changes
|
|
|
|
in GRUB 2 configuration file.
|
2014-09-05 08:51:42 +00:00
|
|
|
|
2018-05-17 09:46:14 +00:00
|
|
|
Options:
|
|
|
|
-b, --bin Install a binary Memtest86+ image.
|
|
|
|
-e, --elf Install an ELF Memtest86+ image (the default).
|
|
|
|
-h, --help Print a help message and exit.
|
2014-09-05 08:51:42 +00:00
|
|
|
|
2014-08-26 12:19:26 +00:00
|
|
|
:EOF
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2016-02-23 16:02:36 +00:00
|
|
|
[ "$1" = "-b" -o "$1" = "--bin" ] && ELF=0
|
|
|
|
[ "$1" = "-e" -o "$1" = "--elf" ] && ELF=1
|
|
|
|
|
2009-04-24 17:33:51 +00:00
|
|
|
if [ -d /sys/firmware/efi ]; then
|
2016-04-05 09:30:21 +00:00
|
|
|
echo "ERROR: memtest86+ does not support EFI platforms."
|
2009-04-24 17:33:51 +00:00
|
|
|
exit 254
|
|
|
|
fi
|
|
|
|
|
2018-05-17 09:46:14 +00:00
|
|
|
if [ ! -r "$GRUB2CFG" ]; then
|
2016-04-05 09:30:21 +00:00
|
|
|
echo "ERROR: unable to read grub configuration file. Do you have enough permissions?"
|
|
|
|
echo "Try to run as root."
|
|
|
|
exit 249
|
|
|
|
fi
|
|
|
|
|
2018-05-17 09:46:14 +00:00
|
|
|
# install GRUB 2 template
|
|
|
|
if [ ! -d /etc/grub.d ]; then
|
|
|
|
echo "ERROR: unable to find /etc/grub.d"
|
|
|
|
exit 253
|
|
|
|
fi
|
|
|
|
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
|
|
|
|
if [ ! -w "$CONF_FILE" ]
|
|
|
|
then
|
|
|
|
echo "ERROR: file '$CONF_FILE' is not writable."
|
|
|
|
exit 250
|
2009-04-24 17:33:51 +00:00
|
|
|
fi
|
2018-05-17 09:46:14 +00:00
|
|
|
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 $GRUB2CFG"
|
2009-04-24 17:33:51 +00:00
|
|
|
|
2016-02-23 16:02:36 +00:00
|
|
|
# update/add configuration variable to the configuration file
|
|
|
|
if grep -q "^\s*$CONF_VAR\s*=" "$CONF_FILE"
|
|
|
|
then
|
|
|
|
sed -i "/^\s*$CONF_VAR\s*=/ s/\(\s*$CONF_VAR\s*=[\"']\?\)[^\"']*\([\"']\?\s*\)/\1${ELF}\2/g" "$CONF_FILE"
|
|
|
|
else
|
|
|
|
echo "$CONF_VAR=\"$ELF\"" >> "$CONF_FILE"
|
|
|
|
fi
|
|
|
|
|
2009-04-24 17:33:51 +00:00
|
|
|
echo "Setup complete."
|