I am in the process of creating a new USB stick which can boot from the old BIOS/Legacy way as well as the Native UEFI way without using UEFI-CSM.
I have both legacy Bios boot and native UEFI boot working now from the one usb drive but I can't seem to create BCD boot menu entries for the legacy BCD under (UsbDrive):\boot\BCD or the UEFI BCD under (UsbDrive):\efi\microsoft\boot\BCD. I've tried adding the entries using EasyBCD and Visual BCD but when I boot, it does not give me a boot menu and just boots to the boot.wim file automatically.
I'm trying to create two boot entries, one that will boot to the 32bit boot.wim file and one that will boot to the 64bit boot.wim. This way if I need to install windows on a system that only supports 32bit UEFI boot, I can select the 32bit boot.wim to boot and install 32bit windows, and if I'm booing on a system that supports/only supports 64bit UEFI boot, I can select the 64bit boot.wim to boot and install 64bit windows.
Once the system boots from the appropriate boot.wim file it will allow me to install any windows os I have in the install.wim file which pertains to the system I am installing it on. Because I will have multiple OS versions in the one install.wim file, I know that I will need to store that on an NTFS partition which is the same partition where both my legacy bios boot files and my UEFI files (bootia32.efi and bootx64.efi) reside.
At first I did not think this would be possible since UEFI needs to boot from a FAT32 partition, however, Rufus has a feature called UEFI:NTFS which allows me to do what I want. It creates a FAT32 partition on my USB drive which loads a driver to allow NTFS support under UEFI so that the UEFI can locate the appropriate EFI file to boot the computer. To make this work for the legacy side of things, after I selected the UEFI:NTFS option in rufus, I changed the Parition Scheme to "MBR partition scheme for BIOS or UEFI".
Once that was done, I copied the Boot and EFI folders along with the bootmgr and bootmgr.efi files from my 32 bit windows install sources to the USB drive. Then I created a sources folder and copied the 32 bit boot.wim to that folder and obtained the bootx64.efi file from a 64bit windows source and placed is under (UsbDrive):\efi\boot\. I also copied the boot.wim file from the 64bit windows source and placed it under the sources folder on the usb drive but named it boot64.wim.
Now at this point, I can boot a legacy system using the bios method and it will start the boot.wim and get me into the winpe environment, I can also boot Native UEFI 32bit which I tested on an Intel Compute Stick since that has been a bastard of a learning experience for me to get windows re-installed. (Which is one of the reasons I want this all in one stick to work) The issue comes though that I cannot boot to native UEFI 64bit unless I rename the 32bit boot.wim to something else and rename the boot64.wim file to boot.wim. At that point, I can then boot Legacy BIOS and native UEFI 64bit systems with the one usb stick.
Ultimately, I want to include some other utility program WIM files on the USB stick that I can boot either with BIOS or UEFI along with the windows installations and that's why I need a boot menu. Again, however, I cannot figure out how to make that work, or if it's even possible. I would assume so since I believe that the system is referencing the BCD files for available boot entries to display. However, booting under UEFI and Legacy, does not give me boot options and instead boot directly to the boot.wim file under sources.
Any help someone can give me would be much appreciated.
Thanks.