I posted this a while ago in a different thread but as I still find it useful I thought I'd post both scripts together. These scripts make it easier to use something like Easy2Boot for all your BIOS booting needs while keeping loose files for your UEFI/EFI booting, as long as they can boot from the same filesystem.
uefi_switch.lst
WINX64.EFI - Windows UEFI Boot Loader that's not currently active
GRUBX64.EFI - Grub2 UEFI Boot Loader that's not currently active
REFX64.EFI - reFIND EFI Boot Loader that's not currently active
BOOTX64.EFI - Currently active 64-bit UEFI/EFI Boot Loader
Note: Requires FAT module. This script assumes one of these is currently renamed to BOOTX64.EFI, but can work without BOOTX64.EFI even existing.
iftitle [if exist /efi/boot/WINX64.EFI] Switch to Windows UEFI Boot Loader # Load or reload the FAT module insmod fat find --set-root /uefi_switch.lst if not exist /efi/boot/GRUBX64.EFI fat ren /efi/boot/BOOTX64.EFI /efi/boot/GRUBX64.EFI if exist /efi/boot/BOOTX64.EFI if not exist /efi/boot/REFX64.EFI fat ren /efi/boot/BOOTX64.EFI /efi/boot/REFX64.EFI fat ren /efi/boot/WINX64.EFI /efi/boot/BOOTX64.EFI if not exist /efi/boot/WINX64.EFI echo OK, Windows UEFI Boot Loader set pause root () iftitle [if exist /efi/boot/GRUBX64.EFI] Switch to Grub2 UEFI Boot Loader (Memtest, Linux, etc.) # Load or reload the FAT module insmod fat find --set-root /uefi_switch.lst if not exist /efi/boot/WINX64.EFI fat ren /efi/boot/BOOTX64.EFI /efi/boot/WINX64.EFI if exist /efi/boot/BOOTX64.EFI if not exist /efi/boot/REFX64.EFI fat ren /efi/boot/BOOTX64.EFI /efi/boot/REFX64.EFI fat ren /efi/boot/GRUBX64.EFI /efi/boot/BOOTX64.EFI if not exist /efi/boot/GRUBX64.EFI echo OK, Grub2 UEFI Boot Loader set pause root () iftitle [if exist /efi/boot/REFX64.EFI] Switch to reFIND UEFI Boot Loader (EFI Multiboot) # Load or reload the FAT module insmod fat find --set-root /uefi_switch.lst if not exist /efi/boot/WINX64.EFI fat ren /efi/boot/BOOTX64.EFI /efi/boot/WINX64.EFI if exist /efi/boot/BOOTX64.EFI if not exist /efi/boot/GRUBX64.EFI fat ren /efi/boot/BOOTX64.EFI /efi/boot/GRUBX64.EFI fat ren /efi/boot/REFX64.EFI /efi/boot/BOOTX64.EFI if not exist /efi/boot/REFX64.EFI echo OK, reFIND UEFI Boot Loader set pause root () title \n root title ...back to main menu find --set-root /menu.lst configfile /menu.lst
Accompanying Windows batch file to switch without loading grub4dos, requires BOOTICE if you also want to support saving & restoring the MBR & PBR (optional):
@echo off REM Switch between different boot loaders. SET _PREVMBR=bootice.prev.mbr SET _PREVPBR=bootice.prev.pbr SET _DISKINFO=bootice.diskinfo.txt REM EFI Bootloaders SET _BOOTEFI=%~dp0efi\boot\BOOTX64.EFI SET _WINEFI=%~dp0efi\boot\WINX64.EFI SET _GRUBEFI=%~dp0efi\boot\GRUBX64.EFI SET _REFEFI=%~dp0efi\boot\REFX64.EFI SET _OTHEREFI=%~dp0efi\boot\OTHERX64.EFI cd /d "%~dp0" IF /I [%PROCESSOR_ARCHITECTURE%]==[x86] ( set BOOTICE=BOOTICEx86.exe ) ELSE IF NOT EXIST "BOOTICEx64.exe" ( set BOOTICE=BOOTICEx86.exe ) ELSE ( set BOOTICE=BOOTICEx64.exe ) IF NOT EXIST "%BOOTICE%" ( set BOOTICE=BOOTICE.exe ) IF NOT EXIST "%BOOTICE%" ( echo Warning: BOOTICE not detected. MBR/PBR functions disabled. ) ELSE ( IF NOT EXIST "%_DISKINFO%" ( "%BOOTICE%" /device=%~d0 /diskinfo /file="%_DISKINFO%" ) type "%_DISKINFO%" ) echo. echo ************************************* echo * This file switches boot loaders for both the BIOS/CSM and UEFI. echo ************************************* echo Drive Letter: [%~d0] echo. IF EXIST "%BOOTICE%" ( IF EXIST "%_PREVMBR%" ( echo [BIOS] 1. Restore previous non-Windows boot loader [Press ENTER] ) ELSE ( echo [BIOS] 1. Switch to Windows Boot Loader [Press ENTER] ) ) IF EXIST "%_WINEFI%" ( echo [UEFI] 2. Switch to Windows UEFI Boot Loader ) IF EXIST "%_GRUBEFI%" ( echo [UEFI] 3. Switch to GRUB UEFI Boot Loader ) IF EXIST "%_REFEFI%" ( echo [UEFI] 4. Switch to REFIND EFI Boot Loader ) IF EXIST "%_OTHEREFI%" ( echo [UEFI] 5. Switch to other/unknown EFI Boot Loader ) echo. :enterselection set /p "choice=Enter your selection: " IF EXIST "%_WINEFI%" IF [%choice%]==[2] GOTO :winefi IF EXIST "%_GRUBEFI%" IF [%choice%]==[3] GOTO :grubefi IF EXIST "%_REFEFI%" IF [%choice%]==[4] GOTO :refindefi IF EXIST "%_OTHEREFI%" IF [%choice%]==[5] GOTO :otherefi IF EXIST "%BOOTICE%" ( IF EXIST "%_PREVMBR%" GOTO :restorembr GOTO :windowsmbr ) ELSE ( GOTO :enterselection ) :windowsmbr echo ** Installing Windows Boot Loader to MBR and PBR for [%~d0]... "%BOOTICE%" /device=%~d0 /mbr /backup /file="%_PREVMBR%" /quiet && "%BOOTICE%" /device=%~d0 /pbr /backup /file="%_PREVPBR%" /quiet && "%BOOTICE%" /device=%~d0 /mbr /install /type=nt60 /quiet && "%BOOTICE%" /device=%~d0 /pbr /install /type=bootmgr /quiet GOTO :done :restorembr echo ** Restoring previous boot loader to MBR and PBR for [%~d0]... "%BOOTICE%" /device=%~d0 /mbr /restore /file="%_PREVMBR%" /quiet && "%BOOTICE%" /device=%~d0 /pbr /restore /file="%_PREVPBR%" /quiet && del /f "%_PREVMBR%" && del /f "%_PREVPBR%" GOTO :done :winefi echo ** Switching to Windows UEFI Boot Loader... REM Figure out which boot loader is boot.efi by missing files IF NOT EXIST "%_GRUBEFI%" ( echo ** ...from Windows UEFI Boot Loader... move /y "%_BOOTEFI%" "%_GRUBEFI%" ) ELSE IF NOT EXIST "%_REFEFI%" ( echo ** ...from reFIND EFI Boot Loader... move /y "%_BOOTEFI%" "%_REFEFI%" ) ELSE ( echo ** ...from unknown/other EFI Boot Loader... move /y "%_BOOTEFI%" "%_OTHEREFI%" ) move /y "%_WINEFI%" "%_BOOTEFI%" GOTO :done :grubefi echo ** Switching to GRUB2 UEFI Boot Loader for [%~d0]... REM Figure out which boot loader is boot.efi by missing files IF NOT EXIST "%_WINEFI%" ( echo ** ...from Windows UEFI Boot Loader... move /y "%_BOOTEFI%" "%_WINEFI%" ) ELSE IF NOT EXIST "%_REFEFI%" ( echo ** ...from reFIND EFI Boot Loader... move /y "%_BOOTEFI%" "%_REFEFI%" ) ELSE ( echo ** ...from unknown/other EFI Boot Loader... move /y "%_BOOTEFI%" "%_OTHEREFI%" ) move /y "%_GRUBEFI%" "%_BOOTEFI%" GOTO :done :refefi echo ** Switching to REFIND EFI Boot Loader for [%~d0]... REM Figure out which boot loader is boot.efi by missing files IF NOT EXIST "%_WINEFI%" ( echo ** ...from Windows UEFI Boot Loader... move /y "%_BOOTEFI%" "%_WINEFI%" ) ELSE IF NOT EXIST "%_GRUBEFI%" ( echo ** ...from GRUB2 UEFI Boot Loader... move /y "%_BOOTEFI%" "%_GRUBEFI%" ) ELSE ( echo ** ...from unknown/other EFI Boot Loader... move /y "%_BOOTEFI%" "%_OTHEREFI%" ) move /y "%_REFEFI%" "%_BOOTEFI%" GOTO :done :otherefi echo ** Switching to other/unknown EFI Boot Loader for [%~d0]... REM Figure out which boot loader is boot.efi by missing files IF NOT EXIST "%_WINEFI%" ( echo ** ...from Windows UEFI Boot Loader... move /y "%_BOOTEFI%" "%_WINEFI%" ) ELSE IF NOT EXIST "%_GRUBEFI%" ( echo ** ...from GRUB2 UEFI Boot Loader... move /y "%_BOOTEFI%" "%_GRUBEFI%" ) ELSE IF NOT EXIST "%_REFEFI%" ( echo ** ...from reFIND EFI Boot Loader... move /y "%_BOOTEFI%" "%_REFEFI%" ) move /y "%_OTHEREFI%" "%_BOOTEFI%" GOTO :done :done echo ** Done. pause
Edited by generalmx, 28 March 2016 - 01:40 AM.