Some EFI thoughts and tricks i use and have tested thoroughly.
To boot EFI from USB, it must be on a fat32 partition. I have a USB with an ntfs partition and a fat32 partition. Windows can only read 1 at a time, but you can use bootice to set either one as active. The ntfs partition is a "normal" setup and what i set active, and the fat32 partition has the bootmgr.efi, EFI dir and a sources\boot.wim (x64). When my bios is set to efi boot, it defaults to the fat32 partition. In my boot options, it lists the USB twice, with an mbr boot, and an efi boot.
EFI\boot\bootx64.efi is only for USB boot, and then reads EFI\microsoft\boot\bcd. An efi bios looks for this file ONLY.
For CD\DVD booting, EFI\microsoft\boot\cdboot.efi is used, usually inside EFI\microsoft\boot\efisys.bin and then reads EFI\microsoft\boot\bcd
bootia32.efi (Win8 x86) only works on Macs and a system with efi 2.3. I have had zero success with this file.
A Win7 bootx64.efi will only boot Win7 in EFI, and a Win8 bootx64.efi will only boot Win8 in EFI
Win7 doesn't have a efi\boot\boot64.efi on the DVD, but you can rename and use \windows\boot\efi\bootmgfw.efi as efi\boot\boot64.efi. I think the file inside \cdboot.efi works also.
Win 7 x86 doesn't support EFI, but does read GPT partitions.
XP doesn't support EFI, nor reads GPT partitions (im 99% sure)
Vista SP0 doesn't support EFI or GPT, but x64 SP2 and SP1 does.
You can use a grub2 grub.efi file to boot to a EFI shell and then load another EFI file. I believe i took one from the newest Ubuntu.
You can use "refined" bootloader to boot to a small gui where you can reference alternate efi files to boot. I renamed the refined.efi file boot64.efi in efi\boot. My refind.conf file is like this :
menuentry "Windows 7 x64 EFI" {
icon \efi\boot\icons\os_win.icns
loader \efi\boot\7bootx64.efi
}
menuentry "Windows 8 x64 EFI" {
icon \efi\boot\icons\os_win.icns
loader \efi\boot\8bootx64.efi
}
menuentry "EFI Shell" {
icon efi/boot/icons/os_linux.icns
loader /efi/boot/shellx64.efi
}
menuentry "Grub2 EFI x64" {
icon efi/boot/icons/os_linux.icns
loader /efi/boot/Grubx64.efi
}
menuentry "Grub2 EFI x86" {
icon efi/boot/icons/os_linux.icns
loader /efi/boot/Grubx86.efi
}
You must also add entries in the EFI\microsoft\boot\bcd for the various boot.wims (if more than 1), booting winload.efi instead of winload.exe. If you select the Win8 efi file in refined, you must select the Win8 wim from the bcd.
You CAN edit efisys.bin placing whatever boot64.efi file you desire, or else use a 4 meg grub.bin with the refined files and various boot64.efi files renamed.
bootmgr.efi in the root of the drive from a win8 source will boot a win7 or grub boot64.efi file.
The only difference between efisys.bin and efisys_noprompt.bin is booting asking you to press a key to continue.
You don't need the \boot directory to boot efi on usb, but you need \boot\etfsboot.com to author a dvd\cd with oscdimg.
Grub4dos grub4dos-0.4.6a-2012-10-02, and syslinux syslinux-4.06 boot from ntfs now. From an ntfs MBR boot, using grub4dos you can load "EFI boot duet". I use this in my menu.lst.
title Tianocore UEFI UDK DUET x86_64 (fat32 USB)\n Loads Tinacore Boot Duet so that you can force EFI loading on a pesky Bios. Must be fat32 if USB.
find --set-root --ignore-floppies /boot/EXTRA/EFI_DUET.img.gz
kernel /boot/grub/memdisk raw
initrd /boot/EXTRA/EFI_DUET.img.gz
It WILL boot into EFI on an mbr system or mbr boot. You will need a fat32 partition and the needed efi dir and files for it to work.
Edited by halikus, 18 December 2012 - 12:09 AM.