Provide a more user-oriented grub-memtest.iso.

grub-memtest.iso was originally intended as a means of testing all
the different boot modes. But as we publish it on memtest.org, let's
have a more user-friendly version that provides menu entries for the
most commonly needed boot options. The original test ISO can still
be built by 'make GRUB_CFG=grub-test grub-iso'.
This commit is contained in:
Martin Whitaker 2022-10-12 15:34:09 +01:00
parent 1278f02617
commit 5036aa197a
6 changed files with 82 additions and 28 deletions

View File

@ -169,8 +169,13 @@ iso: memtest.iso
clean:
rm -rf boot system lib tests app *.img *.iso memtest* iso grub-*
# grub-memtest.iso can be used for testing the various different boot modes,
# using GRUB as an intermediate bootloader. Upstream GRUB only supports the
# grub-memtest.iso uses GRUB as an intermediate bootloader to allow Memtest86+
# to be started with the native USB keyboard drivers either enabled or disabled,
# or to be started in a fail-safe mode with SMP and memory identification &
# speed testing disabled.
#
# By setting GRUB_CFG to "grub-test", grub-memtest.iso can instead be used for
# testing the various different boot modes. Upstream GRUB only supports the
# 16-bit and 32-bit boot protocols, via the "linux16" and "linux" commands.
# Fedora add support for the EFI handover boot protocols, via the "linuxefi"
# command, and, since 2019, remove support for the 32-bit protocol, aliasing
@ -180,6 +185,8 @@ clean:
# doubt do their own thing. The boot menu on grub-memtest.iso attempts to
# support all these options.
GRUB_CFG ?= grub
GRUB_FONT_DIR ?= /usr/share/grub
GRUB_LIB_DIR ?= /usr/lib/grub
@ -195,22 +202,22 @@ grub-eltorito.img:
grub-bootia32.efi:
$(GRUB_MKIMAGE) --output $@ --prefix /EFI/BOOT/grub --format i386-efi $(GRUB_MODULES)
grub-esp.img: memtest.efi grub-bootia32.efi ../grub/grub-efi.cfg
grub-esp.img: memtest.efi grub-bootia32.efi ../grub/${GRUB_CFG}-efi.cfg
@mkdir -p grub-iso/EFI/BOOT/grub/i386-efi grub-iso/EFI/BOOT/grub/fonts
cp memtest.efi grub-iso/EFI/BOOT/memtest
cp grub-bootia32.efi grub-iso/EFI/BOOT/bootia32.efi
cp ../grub/grub-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg
cp ../grub/${GRUB_CFG}-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/EFI/BOOT/grub/fonts/
cp $(GRUB_LIB_DIR)/i386-efi/*.mod grub-iso/EFI/BOOT/grub/i386-efi/
@rm -f grub-esp.img
/sbin/mkdosfs -n MT86P_ESP -F12 -C grub-esp.img 8192
mcopy -s -i grub-esp.img grub-iso/EFI ::
grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/grub-legacy.cfg grub-esp.img
grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/${GRUB_CFG}-legacy.cfg grub-esp.img
@mkdir -p grub-iso/boot/grub/i386-pc grub-iso/boot/grub/fonts
cp memtest.bin grub-iso/boot/memtest
cp grub-eltorito.img grub-iso/boot/eltorito.img
cp ../grub/grub-legacy.cfg grub-iso/boot/grub/grub.cfg
cp ../grub/${GRUB_CFG}-legacy.cfg grub-iso/boot/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/boot/grub/fonts/
cp $(GRUB_LIB_DIR)/i386-pc/*.mod grub-iso/boot/grub/i386-pc/
xorrisofs -pad -R -J -volid MT86PLUS_32 -graft-points -hide-rr-moved \

View File

@ -168,8 +168,13 @@ iso: memtest.iso
clean:
rm -rf boot system lib tests app *.img *.iso memtest* iso grub-*
# grub-memtest.iso can be used for testing the various different boot modes,
# using GRUB as an intermediate bootloader. Upstream GRUB only supports the
# grub-memtest.iso uses GRUB as an intermediate bootloader to allow Memtest86+
# to be started with the native USB keyboard drivers either enabled or disabled,
# or to be started in a fail-safe mode with SMP and memory identification &
# speed testing disabled.
#
# By setting GRUB_CFG to "grub-test", grub-memtest.iso can instead be used for
# testing the various different boot modes. Upstream GRUB only supports the
# 16-bit and 32-bit boot protocols, via the "linux16" and "linux" commands.
# Fedora add support for the EFI handover boot protocols, via the "linuxefi"
# command, and, since 2019, remove support for the 32-bit protocol, aliasing
@ -179,6 +184,8 @@ clean:
# doubt do their own thing. The boot menu on grub-memtest.iso attempts to
# support all these options.
GRUB_CFG ?= grub
GRUB_FONT_DIR ?= /usr/share/grub
GRUB_LIB_DIR ?= /usr/lib/grub
@ -194,22 +201,22 @@ grub-eltorito.img:
grub-bootx64.efi:
$(GRUB_MKIMAGE) --output $@ --prefix /EFI/BOOT/grub --format x86_64-efi $(GRUB_MODULES)
grub-esp.img: memtest.efi grub-bootx64.efi ../grub/grub-efi.cfg
grub-esp.img: memtest.efi grub-bootx64.efi ../grub/${GRUB_CFG}-efi.cfg
@mkdir -p grub-iso/EFI/BOOT/grub/x86_64-efi grub-iso/EFI/BOOT/grub/fonts
cp memtest.efi grub-iso/EFI/BOOT/memtest
cp grub-bootx64.efi grub-iso/EFI/BOOT/bootx64.efi
cp ../grub/grub-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg
cp ../grub/${GRUB_CFG}-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/EFI/BOOT/grub/fonts/
cp $(GRUB_LIB_DIR)/x86_64-efi/*.mod grub-iso/EFI/BOOT/grub/x86_64-efi/
@rm -f grub-esp.img
/sbin/mkdosfs -n MT86P_ESP -F12 -C grub-esp.img 8192
mcopy -s -i grub-esp.img grub-iso/EFI ::
grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/grub-legacy.cfg grub-esp.img
grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/${GRUB_CFG}-legacy.cfg grub-esp.img
@mkdir -p grub-iso/boot/grub/i386-pc grub-iso/boot/grub/fonts
cp memtest.bin grub-iso/boot/memtest
cp grub-eltorito.img grub-iso/boot/eltorito.img
cp ../grub/grub-legacy.cfg grub-iso/boot/grub/grub.cfg
cp ../grub/${GRUB_CFG}-legacy.cfg grub-iso/boot/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/boot/grub/fonts/
cp $(GRUB_LIB_DIR)/i386-pc/*.mod grub-iso/boot/grub/i386-pc/
xorrisofs -pad -R -J -volid MT86PLUS_64 -graft-points -hide-rr-moved \

View File

@ -8,15 +8,13 @@ set default=0
set timeout=-1
insmod linux
insmod linuxefi
insmod linux32
menuentry "Start Memtest86+ using 'linux' command" {
linux /EFI/BOOT/memtest
menuentry "Start Memtest86+, use built-in support for USB keyboards" {
linux /EFI/BOOT/memtest keyboard=both
}
menuentry "Start Memtest86+ using 'linuxefi' command" {
linuxefi /EFI/BOOT/memtest
menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" {
linux /EFI/BOOT/memtest keyboard=legacy
}
menuentry "Start Memtest86+ using 'linux32' command" {
linux32 /EFI/BOOT/memtest
menuentry "Start Memtest86+, disable SMP and memory identification" {
linux /EFI/BOOT/memtest nosmp nosm nobench
}

View File

@ -8,15 +8,13 @@ set default=0
set timeout=-1
insmod linux
insmod linux16
insmod linux32
menuentry "Start Memtest86+ using 'linux' command" {
linux /boot/memtest
menuentry "Start Memtest86+, use built-in support for USB keyboards" {
linux /boot/memtest keyboard=both
}
menuentry "Start Memtest86+ using 'linux16' command" {
linux16 /boot/memtest
menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" {
linux /boot/memtest keyboard=legacy
}
menuentry "Start Memtest86+ using 'linux32' command" {
linux32 /boot/memtest
menuentry "Start Memtest86+, disable SMP and memory identification" {
linux /boot/memtest nosmp nosm nobench
}

22
grub/grub-test-efi.cfg Normal file
View File

@ -0,0 +1,22 @@
if loadfont unicode ; then
set gfxmode=1024x768,800x600,auto
set gfxpayload=800x600,1024x768
terminal_output gfxterm
fi
set default=0
set timeout=-1
insmod linux
insmod linuxefi
insmod linux32
menuentry "Start Memtest86+ using 'linux' command" {
linux /EFI/BOOT/memtest
}
menuentry "Start Memtest86+ using 'linuxefi' command" {
linuxefi /EFI/BOOT/memtest
}
menuentry "Start Memtest86+ using 'linux32' command" {
linux32 /EFI/BOOT/memtest
}

22
grub/grub-test-legacy.cfg Normal file
View File

@ -0,0 +1,22 @@
if loadfont unicode ; then
set gfxmode=1024x768,800x600,auto
set gfxpayload=800x600,1024x768
terminal_output gfxterm
fi
set default=0
set timeout=-1
insmod linux
insmod linux16
insmod linux32
menuentry "Start Memtest86+ using 'linux' command" {
linux /boot/memtest
}
menuentry "Start Memtest86+ using 'linux16' command" {
linux16 /boot/memtest
}
menuentry "Start Memtest86+ using 'linux32' command" {
linux32 /boot/memtest
}