X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=templates%2Fboot%2Fgrub%2Faddons.cfg;h=34ae54c97c0ffcbb4a6129ca73e7582f81d7b635;hp=ed04291f2acfcb26dc7a05676caccf34aad12e43;hb=HEAD;hpb=b18889f0d17b02be6477e18bdc6657f374d60631 diff --git a/templates/boot/grub/addons.cfg b/templates/boot/grub/addons.cfg index ed04291..5aea931 100644 --- a/templates/boot/grub/addons.cfg +++ b/templates/boot/grub/addons.cfg @@ -1,58 +1,135 @@ submenu "Addons ->" --class=submenu { -menuentry "Memory test (memtest86+)" { - linux16 /boot/addons/memtest -} -menuentry "iPXE - boot via network/PXE" { - linux16 /boot/addons/ipxe.lkrn -} +# EFI: +if [ "${grub_platform}" == "efi" ] ; then + # arm64 doesn't provide the cpuid command, and we also + # don't have any memtest* efi files available, so only + # run on architectures other than arm64 (amd64 + i386) + if [ "${grub_cpu}" != "arm64" ] ; then + # try to detect amd64 by checking whether CPU supports 64-bit (long) mode + if cpuid -l ; then + if test -e /boot/addons/memtest86+x64.efi ; then + menuentry "Memory test (memtest86+x64.efi)" { + chainloader /boot/addons/memtest86+x64.efi + } + fi + else # assume i386 + if test -e /boot/addons/memtest86+ia32.efi ; then + menuentry "Memory test (memtest86+ia32.efi)" { + chainloader /boot/addons/memtest86+ia32.efi + } + fi + fi + fi +fi + +# BIOS/non-EFI: +if [ "${grub_platform}" != "efi" ] ; then + # try to detect amd64 by checking whether CPU supports 64-bit (long) mode + if cpuid -l ; then + if test -e /boot/addons/memtest86+x64.bin ; then + menuentry "Memory test (memtest86+x64.bin)" { + insmod linux16 + linux16 /boot/addons/memtest86+x64.bin + } + elif test -e /boot/addons/memtest ; then # fallback to old memtest + menuentry "Memory test (memtest86+)" { + insmod linux16 + linux16 /boot/addons/memtest + } + fi + else # assume i386 + if test -e /boot/addons/memtest86+ia32.bin ; then + menuentry "Memory test (memtest86+ia32.bin)" { + insmod linux16 + linux16 /boot/addons/memtest86+ia32.bin + } + elif test -e /boot/addons/memtest ; then # fallback to old memtest + menuentry "Memory test (memtest86+)" { + insmod linux16 + linux16 /boot/addons/memtest + } + fi + fi +fi -menuentry "GRUB - all in one image" { - linux16 /boot/addons/memdisk - initrd16 /boot/addons/allinone.img +menuentry "iPXE - boot via network/PXE" { + if [ "${grub_platform}" == "efi" ] ; then + chainloader /boot/addons/ipxe.efi + else + insmod linux16 + linux16 /boot/addons/ipxe.lkrn + fi } -menuentry "FreeDOS" { - linux16 /boot/addons/memdisk - initrd16 /boot/addons/balder10.imz +menuentry "Netboot.xyz" { + if [ "${grub_platform}" == "efi" ] ; then + chainloader /boot/addons/netboot.xyz.efi + else + insmod linux16 + linux16 /boot/addons/netboot.xyz.lkrn + fi } -if [ ${iso_path} ] ; then - # assume loopback.cfg boot - menuentry "MirOS bsd4grml (via loopback)" { - multiboot /boot/addons/bsd4grml/ldbsd.com - module /boot/addons/bsd4grml/bsd.rd bsd - module /boot/addons/bsd4grml/loopback.0 boot.cfg - module /boot/addons/bsd4grml/loopback.1 boot.1 - module /boot/addons/bsd4grml/loopback.2 boot.2 - module /boot/addons/bsd4grml/loopback.3 boot.3 - module /boot/addons/bsd4grml/loopback.4 boot.4 - module /boot/addons/bsd4grml/loopback.5 boot.5 - module /boot/addons/bsd4grml/loopback.6 boot.6 +if [ "${grub_platform}" != "efi" ] ; then + menuentry "Netboot.xyz" { + insmod linux16 + linux16 /boot/addons/netboot.xyz.lkrn } -else - # assume grub.cfg boot - menuentry "MirOS bsd4grml (regular method)" { - multiboot /boot/addons/bsd4grml/ldbsd.com + + menuentry "GRUB - all in one image" { + insmod linux16 + linux16 /boot/addons/memdisk + initrd16 /boot/addons/allinone.img } - menuentry "MirOS bsd4grml (fallback method)" { - multiboot /boot/addons/bsd4grml/ldbsd.com - module /boot/addons/bsd4grml/bsd.rd bsd.rd - module /boot/addons/bsd4grml/boot.1 boot.1 - module /boot/addons/bsd4grml/boot.2 boot.2 - module /boot/addons/bsd4grml/boot.3 boot.3 - module /boot/addons/bsd4grml/boot.4 boot.4 - module /boot/addons/bsd4grml/boot.5 boot.5 - module /boot/addons/bsd4grml/boot.6 boot.6 - module /boot/addons/bsd4grml/boot.cfg boot.cfg - module /boot/grub/grub.img grub.img + menuentry "FreeDOS" { + insmod linux16 + linux16 /boot/addons/memdisk + initrd16 /boot/addons/balder10.imz } -fi + if [ ${iso_path} ] ; then + # assume loopback.cfg boot + menuentry "MirOS bsd4grml (via loopback)" { + multiboot /boot/addons/bsd4grml/ldbsd.com + module /boot/addons/bsd4grml/bsd.rd bsd + module /boot/addons/bsd4grml/loopback.0 boot.cfg + module /boot/addons/bsd4grml/loopback.1 boot.1 + module /boot/addons/bsd4grml/loopback.2 boot.2 + module /boot/addons/bsd4grml/loopback.3 boot.3 + module /boot/addons/bsd4grml/loopback.4 boot.4 + module /boot/addons/bsd4grml/loopback.5 boot.5 + module /boot/addons/bsd4grml/loopback.6 boot.6 + } + else + # assume grub.cfg boot + menuentry "MirOS bsd4grml (regular method)" { + multiboot /boot/addons/bsd4grml/ldbsd.com + } + + menuentry "MirOS bsd4grml (fallback method)" { + multiboot /boot/addons/bsd4grml/ldbsd.com + module /boot/addons/bsd4grml/bsd.rd bsd.rd + module /boot/addons/bsd4grml/boot.1 boot.1 + module /boot/addons/bsd4grml/boot.2 boot.2 + module /boot/addons/bsd4grml/boot.3 boot.3 + module /boot/addons/bsd4grml/boot.4 boot.4 + module /boot/addons/bsd4grml/boot.5 boot.5 + module /boot/addons/bsd4grml/boot.6 boot.6 + module /boot/addons/bsd4grml/boot.cfg boot.cfg + module /boot/grub/grub.img grub.img + } + fi # iso_path +fi # efi mode +} + +if [ "${grub_platform}" == "efi" ] ; then +menuentry "UEFI Firmware Settings" { + fwsetup } +fi # efi mode -menuentry "Boot OS of first partition on first disk" { - set root=(hd0,1) - chainloader +1 +menuentry "Boot from next device" { + exit }