summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGordon Messmer <gordon.messmer@gmail.com>2021-08-28 22:26:08 -0700
committerGordon Messmer <gordon.messmer@gmail.com>2021-08-28 22:26:08 -0700
commit9e3df2b52d74a119b6b5bf5e79879d485ed257e7 (patch)
tree2b8404ca25d7822767bdd0c8b26519fab8cece71
parent2e2e3b4e2358b4416907934a8a7d3f93118b370e (diff)
downloadpcmemtest-unsigned-x64-9e3df2b52d74a119b6b5bf5e79879d485ed257e7.tar.gz
pcmemtest-unsigned-x64-9e3df2b52d74a119b6b5bf5e79879d485ed257e7.tar.xz
pcmemtest-unsigned-x64-9e3df2b52d74a119b6b5bf5e79879d485ed257e7.zip
Add 20_pcmemtest grub helper script for bios package.
-rw-r--r--20_pcmemtest121
-rw-r--r--pcmemtest-unsigned-x64.spec13
2 files changed, 130 insertions, 4 deletions
diff --git a/20_pcmemtest b/20_pcmemtest
new file mode 100644
index 0000000..68c5072
--- /dev/null
+++ b/20_pcmemtest
@@ -0,0 +1,121 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2011 Michal Ambroz <rebus@seznam.cz>
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+prefix=/usr
+exec_prefix=/usr
+bindir=/usr/bin
+grublibdir=/usr/share/grub
+. ${grublibdir}/grub-mkconfig_lib
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR=${prefix}/share/locale
+
+CLASS=""
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=PCMemTest
+else
+ OS="${GRUB_DISTRIBUTOR} PCMemTest"
+fi
+IMAGE="pcmemtest"
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+ /dev/loop/*|/dev/loop[0-9])
+ GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+ ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+ || uses_abstraction "${GRUB_DEVICE}" lvm; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+if [ "x`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2>/dev/null || true`" = xbtrfs ]; then
+ rootsubvol="`make_system_path_relative_to_its_root /`"
+ rootsubvol="${rootsubvol#/}"
+ if [ "x${rootsubvol}" != x ]; then
+ GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+ fi
+fi
+
+pcmemtest_entry ()
+{
+ os="$1"
+ version="$2"
+ recovery="$3"
+ args="$4"
+ title="$(gettext_quoted "%s %s")"
+ printf "menuentry '${title}' {\n" "${os}" "${version}"
+
+
+ if [ x$dirname = x/ ]; then
+ if [ -z "${prepare_root_cache}" ]; then
+ prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/")"
+ fi
+ printf '%s\n' "${prepare_root_cache}"
+ else
+ if [ -z "${prepare_boot_cache}" ]; then
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
+ fi
+ printf '%s\n' "${prepare_boot_cache}"
+ fi
+ message="$(gettext_printf "Loading %s %s ..." "${os}" "${version}")"
+ cat << EOF
+ echo '$message'
+ set gfxpayload=640x400,800x600,1024x768
+ linux32 ${rel_dirname}/${basename}
+}
+EOF
+}
+
+case x`uname -m` in
+ xi?86 | xx86_64)
+ list=`for i in /boot/${IMAGE}* ; do
+ if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+ done` ;;
+ *)
+ list=`for i in /boot/${IMAGE}* ; do
+ if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+ done` ;;
+esac
+
+prepare_boot_cache=
+prepare_root_cache=
+
+while [ "x$list" != "x" ] ; do
+ linux=`version_find_latest $list`
+ echo "Found pcmemtest image: $linux" >&2
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+ version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+
+ pcmemtest_entry "${OS}" "${version}" false \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+ list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+done
diff --git a/pcmemtest-unsigned-x64.spec b/pcmemtest-unsigned-x64.spec
index 9420178..8d5f3d8 100644
--- a/pcmemtest-unsigned-x64.spec
+++ b/pcmemtest-unsigned-x64.spec
@@ -11,6 +11,7 @@ Summary: Stand-alone memory tester for x86 and x86-64 architecture comput
License: GPLv2
URL: https://github.com/martinwhitaker/pcmemtest
Source0: https://github.com/martinwhitaker/pcmemtest/archive/v%{version}/pcmemtest-%{version}.tar.gz
+Source1: 20_pcmemtest
BuildRequires: gcc
ExclusiveArch: x86_64
@@ -56,8 +57,11 @@ cd build64
%install
cd build64
mkdir -p %{buildroot}/{boot,%{efi_esp_dir}}
-install -m 0644 memtest.efi %{buildroot}/%{efi_esp_dir}/memtest.efi
-install -m 0644 memtest.bin %{buildroot}/boot/memtest.bin
+install -m 0644 memtest.efi %{buildroot}/%{efi_esp_dir}/pcmemtest.efi
+install -m 0644 memtest.bin %{buildroot}/boot/pcmemtest.bin
+
+mkdir -p %{buildroot}%{_sysconfdir}/grub.d
+install -m755 %{SOURCE1} %{buildroot}%{_sysconfdir}/grub.d
%files
@@ -66,11 +70,12 @@ install -m 0644 memtest.bin %{buildroot}/boot/memtest.bin
%files efi
-%{efi_esp_dir}/memtest.efi
+%{efi_esp_dir}/pcmemtest.efi
%files bios
-/boot/memtest.bin
+%{_sysconfdir}/grub.d/20_pcmemtest
+/boot/pcmemtest.bin
%changelog