|
set default=local
|
|
set timeout=20
|
|
echo Default PXE local template entry is set to 'local'
|
|
|
|
insmod part_gpt
|
|
insmod fat
|
|
insmod chain
|
|
|
|
echo "VMWare hosts with QuickBoot feature enabled may not find the local ESP"
|
|
echo "partition due to not initializing all the EFI devices. To address this,"
|
|
echo "use an up-to-date grub2 (*) version and include the "connectefi scsi" statement"
|
|
echo "as provided below. If you're using an older grub2 version or"
|
|
echo "the "connectefi" option isn't recognized by your grub2, grub2 will print a error"
|
|
echo "like 'can't find command connectefi' but the boot process will continue."
|
|
echo "For hosts, you can omit this by adding a (global) parameter to 'grub2-connectefi=false'."
|
|
echo "For the default GRUB2 script, you can omit this by setting the"
|
|
echo "default_connectefi_option below to 'false'."
|
|
echo "Valid values of 'grub2-connectefi' parameter: false, scsi, pciroot"
|
|
echo
|
|
echo "Virtual or physical hosts using Software RAID for the ESP partition may try"
|
|
echo "booting on the Software RAID, which will fail. To workaround, upgrade to the"
|
|
echo "latest grub2 (*) and add "--efidisk-only" argument to the "search" command in"
|
|
echo "the grub2_chainload template."
|
|
echo
|
|
echo "(*) grub2-efi-x64-2.02-122.el8 (upstream doesn't have the patches yet)"
|
|
echo
|
|
connectefi scsi
|
|
|
|
menuentry 'Chainload Grub2 EFI from ESP' --id local_chain_hd0 {
|
|
echo "Chainloading Grub2 EFI from ESP, enabled devices for booting:"
|
|
ls
|
|
echo "Trying /EFI/fedora/shim.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/fedora/shim.efi
|
|
if [ -f ($chroot)/EFI/fedora/shim.efi ]; then
|
|
chainloader ($chroot)/EFI/fedora/shim.efi
|
|
echo "Found /EFI/fedora/shim.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/fedora/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/fedora/grubx64.efi
|
|
if [ -f ($chroot)/EFI/fedora/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/fedora/grubx64.efi
|
|
echo "Found /EFI/fedora/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/redhat/shim.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/redhat/shim.efi
|
|
if [ -f ($chroot)/EFI/redhat/shim.efi ]; then
|
|
chainloader ($chroot)/EFI/redhat/shim.efi
|
|
echo "Found /EFI/redhat/shim.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/redhat/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/redhat/grubx64.efi
|
|
if [ -f ($chroot)/EFI/redhat/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/redhat/grubx64.efi
|
|
echo "Found /EFI/redhat/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/centos/shim.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/centos/shim.efi
|
|
if [ -f ($chroot)/EFI/centos/shim.efi ]; then
|
|
chainloader ($chroot)/EFI/centos/shim.efi
|
|
echo "Found /EFI/centos/shim.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/centos/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/centos/grubx64.efi
|
|
if [ -f ($chroot)/EFI/centos/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/centos/grubx64.efi
|
|
echo "Found /EFI/centos/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/rocky/shim.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/rocky/shim.efi
|
|
if [ -f ($chroot)/EFI/rocky/shim.efi ]; then
|
|
chainloader ($chroot)/EFI/rocky/shim.efi
|
|
echo "Found /EFI/rocky/shim.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/rocky/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/rocky/grubx64.efi
|
|
if [ -f ($chroot)/EFI/rocky/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/rocky/grubx64.efi
|
|
echo "Found /EFI/rocky/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/almalinux/shim.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/almalinux/shim.efi
|
|
if [ -f ($chroot)/EFI/almalinux/shim.efi ]; then
|
|
chainloader ($chroot)/EFI/almalinux/shim.efi
|
|
echo "Found /EFI/almalinux/shim.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/almalinux/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/almalinux/grubx64.efi
|
|
if [ -f ($chroot)/EFI/almalinux/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/almalinux/grubx64.efi
|
|
echo "Found /EFI/almalinux/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/debian/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/debian/grubx64.efi
|
|
if [ -f ($chroot)/EFI/debian/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/debian/grubx64.efi
|
|
echo "Found /EFI/debian/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/ubuntu/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/ubuntu/grubx64.efi
|
|
if [ -f ($chroot)/EFI/ubuntu/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/ubuntu/grubx64.efi
|
|
echo "Found /EFI/ubuntu/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/sles/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/sles/grubx64.efi
|
|
if [ -f ($chroot)/EFI/sles/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/sles/grubx64.efi
|
|
echo "Found /EFI/sles/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/opensuse/grubx64.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/opensuse/grubx64.efi
|
|
if [ -f ($chroot)/EFI/opensuse/grubx64.efi ]; then
|
|
chainloader ($chroot)/EFI/opensuse/grubx64.efi
|
|
echo "Found /EFI/opensuse/grubx64.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Trying /EFI/Microsoft/boot/bootmgfw.efi "
|
|
unset chroot
|
|
# add --efidisk-only when using Software RAID
|
|
search --file --no-floppy --set=chroot /EFI/Microsoft/boot/bootmgfw.efi
|
|
if [ -f ($chroot)/EFI/Microsoft/boot/bootmgfw.efi ]; then
|
|
chainloader ($chroot)/EFI/Microsoft/boot/bootmgfw.efi
|
|
echo "Found /EFI/Microsoft/boot/bootmgfw.efi at $chroot, attempting to chainboot it..."
|
|
sleep 2
|
|
boot
|
|
fi
|
|
echo "Partition with known EFI file not found, you may want to drop to grub shell"
|
|
echo "and investigate available files updating 'pxegrub2_chainload' template and"
|
|
echo "the list of known filepaths for probing. Available devices are:"
|
|
echo
|
|
ls
|
|
echo
|
|
echo "If you cannot see the HDD, make sure the drive is marked as bootable in EFI and"
|
|
echo "not hidden. Boot order must be the following:"
|
|
echo "1) NETWORK"
|
|
echo "2) HDD"
|
|
echo
|
|
echo "The system will poweroff in 2 minutes or press ESC to poweroff immediately."
|
|
sleep -i 120
|
|
halt
|
|
}
|
|
|
|
menuentry 'Chainload into BIOS bootloader on first disk' --id local_chain_legacy_hd0 {
|
|
set root=(hd0,0)
|
|
chainloader +1
|
|
boot
|
|
}
|
|
|
|
menuentry 'Chainload into BIOS bootloader on second disk' --id local_chain_legacy_hd1 {
|
|
set root=(hd1,0)
|
|
chainloader +1
|
|
boot
|
|
}
|
|
|
|
common="rootflags=loop root=live:/fdi.iso rootfstype=auto ro rd.live.image acpi=force rd.luks=0 rd.md=0 rd.dm=0 rd.lvm=0 rd.bootif=0 rd.neednet=0 nokaslr nomodeset proxy.url=http://foreman.example.com proxy.type=foreman BOOTIF=01-$net_default_mac"
|
|
|
|
if [ ${grub_platform} == "pc" ]; then
|
|
menuentry 'Foreman Discovery Image' --id discovery {
|
|
linux boot/fdi-image/vmlinuz0 ${common}
|
|
initrd boot/fdi-image/initrd0.img
|
|
}
|
|
else
|
|
menuentry 'Foreman Discovery Image EFI' --id discovery {
|
|
linuxefi boot/fdi-image/vmlinuz0 ${common}
|
|
initrdefi boot/fdi-image/initrd0.img
|
|
}
|
|
fi
|
|
|