From d94d59583a1cee955ed14256efa37dcb00960f98 Mon Sep 17 00:00:00 2001 From: longpanda Date: Mon, 26 Dec 2022 22:08:23 +0800 Subject: [PATCH] Search VTEFI directory for UEFI boot files. When user install for example Windows in the reserved space of Ventoy USB stick in UEFI mode. Windows will create part 3 as the EFI partition and when you boot the USB stick, the BIOS may skip Ventoy and directly boot the Windows. To avoid this, we suggest to rename the directory name from EFI to VTEFI. --- INSTALL/grub/localboot.cfg | 41 +++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/INSTALL/grub/localboot.cfg b/INSTALL/grub/localboot.cfg index b48b2c96..a28ae834 100644 --- a/INSTALL/grub/localboot.cfg +++ b/INSTALL/grub/localboot.cfg @@ -81,13 +81,18 @@ else terminal_output console chainloader /efi/Microsoft/Boot/bootmgfw.efi boot + elif [ -f ($vtoydev,$partid)/VTEFI/Microsoft/Boot/bootmgfw.efi ]; then + set root=($vtoydev,$partid) + terminal_output console + chainloader /VTEFI/Microsoft/Boot/bootmgfw.efi + boot fi else break fi vt_incr partid 1 done - + if search -n -s -f /EFI/Microsoft/Boot/bootmgfw.efi; then terminal_output console chainloader /EFI/Microsoft/Boot/bootmgfw.efi @@ -109,6 +114,11 @@ else terminal_output console chainloader /efi/boot/bootia32.efi boot + elif search -n -s -f /vtefi/boot/bootia32.efi; then + unset VTOY_SEARCH_NO_VTOYEFI + terminal_output console + chainloader /vtefi/boot/bootia32.efi + boot else unset VTOY_SEARCH_NO_VTOYEFI echo "BOOTIA32.EFI NOT found ..." @@ -126,6 +136,15 @@ else chainloader /efi/xorboot/xorboot.efi fi boot + elif search -n -s -f /vtefi/xorboot/xorboot32.xor; then + unset VTOY_SEARCH_NO_VTOYEFI + terminal_output console + if [ -f /vtefi/xorboot/bootia32.efi ]; then + chainloader /vtefi/xorboot/bootia32.efi + elif [ -f /vtefi/xorboot/xorboot.efi ]; then + chainloader /vtefi/xorboot/xorboot.efi + fi + boot else unset VTOY_SEARCH_NO_VTOYEFI echo "xorboot NOT found ..." @@ -139,6 +158,12 @@ else terminal_output console chainloader /efi/boot/bootaa64.efi boot + elif search -n -s -f /vtefi/boot/bootaa64.efi; then + unset VTOY_SEARCH_NO_VTOYEFI + terminal_output console + chainloader /vtefi/boot/bootaa64.efi + boot + else else unset VTOY_SEARCH_NO_VTOYEFI echo "BOOTAA64.EFI NOT found ..." @@ -152,6 +177,11 @@ else terminal_output console chainloader /efi/boot/bootx64.efi boot + elif search -n -s -f /vtefi/boot/bootx64.efi; then + unset VTOY_SEARCH_NO_VTOYEFI + terminal_output console + chainloader /vtefi/boot/bootx64.efi + boot else unset VTOY_SEARCH_NO_VTOYEFI echo "BOOTX64.EFI NOT found ..." @@ -169,6 +199,15 @@ else chainloader /efi/xorboot/xorboot.efi fi boot + elif search -n -s -f /vtefi/xorboot/xorboot.xor; then + unset VTOY_SEARCH_NO_VTOYEFI + terminal_output console + if [ -f /vtefi/xorboot/bootx64.efi ]; then + chainloader /vtefi/xorboot/bootx64.efi + elif [ -f /vtefi/xorboot/xorboot.efi ]; then + chainloader /vtefi/xorboot/xorboot.efi + fi + boot else unset VTOY_SEARCH_NO_VTOYEFI echo "xorboot NOT found ..."