memtest: Support arch-specific and EFI memtest86+ 6.00

- BIOS: Final filename doesn't change (memtest), but now uses a
  64-bit version on amd64.
- EFI: Now included as memtest.efi; 32-bit on i386, 64-bit on amd64.
  As it's GRUB-only, we can test for the existence of memtest.efi
  (6.00+ only) in GRUB itself.
- Add @MEMTEST_DIR@ to facilitate directory-based testing in GRUB.

This expands upon the previous MVP commit
15e78a3eec .
This commit is contained in:
Ryan Finnie 2022-10-31 21:55:14 -07:00
parent 15e78a3eec
commit 1d6f6dd178
No known key found for this signature in database
GPG Key ID: 7E60A3A686AE8D98
4 changed files with 26 additions and 7 deletions

View File

@ -231,7 +231,8 @@ else
fi
# Assembling memtest configuration
MEMTEST_BIN="/${INITFS}/memtest"
MEMTEST_DIR="/${INITFS}"
MEMTEST_BIN="${MEMTEST_DIR}/memtest"
if [ -f "binary/${MEMTEST_BIN}" ]; then
ENABLE_MEMTEST="true"
MEMTEST="source /boot/grub/memtest.cfg" #for backwards compatibility
@ -261,6 +262,7 @@ sed -i \
-e "s|@APPEND_INSTALL@|${LB_BOOTAPPEND_INSTALL}|" \
-e "s|@ENABLE_INSTALL_MENU@|${ENABLE_INSTALL_MENU}|" \
-e "s|@ENABLE_MEMTEST@|${ENABLE_MEMTEST}|" \
-e "s|@MEMTEST_DIR@|${MEMTEST_DIR}|" \
-e "s|@MEMTEST_BIN@|${MEMTEST_BIN}|" \
-e "s|@MEMTEST_VERSION@|${LB_MEMTEST}|" \
-e "s|@FLAVOUR_LIVE@|${FLAVOUR_LIVE}|" \

View File

@ -75,12 +75,20 @@ Install_packages
case "${LB_MEMTEST}" in
memtest86+)
case "${LB_ARCHITECTURE}" in
amd64)
_MEMTEST_ARCH=x64
;;
i386)
_MEMTEST_ARCH=x32
;;
esac
case "${LB_BUILD_WITH_CHROOT}" in
true)
[ -e "chroot/boot/${LB_MEMTEST}x32.bin" ] && _MEMTEST_BIN="${LB_MEMTEST}x32"
[ -e "chroot/boot/${LB_MEMTEST}${_MEMTEST_ARCH}.bin" ] && _MEMTEST_BIN="${LB_MEMTEST}${_MEMTEST_ARCH}"
;;
false)
[ -e "/boot/${LB_MEMTEST}x32.bin" ] && _MEMTEST_BIN="${LB_MEMTEST}x32"
[ -e "/boot/${LB_MEMTEST}${_MEMTEST_ARCH}.bin" ] && _MEMTEST_BIN="${LB_MEMTEST}${_MEMTEST_ARCH}"
;;
esac
;;
@ -104,10 +112,12 @@ mkdir -p "${DESTDIR}"
case "${LB_BUILD_WITH_CHROOT}" in
true)
cp -a "chroot/boot/${_MEMTEST_BIN}.bin" "${DESTDIR}"/memtest
[ -e "chroot/boot/${_MEMTEST_BIN}.efi" ] && cp -a "chroot/boot/${_MEMTEST_BIN}.efi" "${DESTDIR}"/memtest.efi
;;
false)
cp -a "/boot/${_MEMTEST_BIN}.bin" "${DESTDIR}"/memtest
[ -e "/boot/${_MEMTEST_BIN}.efi" ] && cp -a "/boot/${_MEMTEST_BIN}.efi" "${DESTDIR}"/memtest.efi
;;
esac

View File

@ -36,7 +36,7 @@ submenu 'Utilities...' --hotkey=u {
source /boot/grub/theme.cfg
# Memtest (if any)
if [ "${grub_platform}" = "pc" ] -a @ENABLE_MEMTEST@; then
if @ENABLE_MEMTEST@; then
source /boot/grub/memtest.cfg
fi

View File

@ -1,3 +1,10 @@
if [ "${grub_platform}" = "pc" ]; then
menuentry "Memory Diagnostic Tool (@MEMTEST_VERSION@)" --hotkey=m {
linux16 @MEMTEST_BIN@
}
elif [ "${grub_platform}" = "efi" ] -a [ -e @MEMTEST_DIR@/memtest.efi ]; then
menuentry "Memory Diagnostic Tool (@MEMTEST_VERSION@)" --hotkey=m {
insmod chain
chainloader @MEMTEST_DIR@/memtest.efi
}
fi