While there seem to be a lot of questions regarding dual booting Windows and Linux, I did not see one that seemed to cover this problem.  That said, I believe a lot of the problems may be fixed in a similar manner.In Fedora fc20 with latest patches as of 11/9/2014, grub gives the following two errors when selecting the automatically generated Windows Bootloader entry.> error: file '/EFI/Microsoft/Boot/bootmgfw.efi' not found > error: you need to load the kernel firstWhy is this happening and how do I fix it?
Dual boot Fedora and Windows 8 gives error: you need to load the kernel first
fedora;windows;grub2;dual boot;uefi
The obvious answer is this is happening because grub can not find the windows boot loader.  The less obvious answer is because the grub configuration file does not properly specify the root for the windows bootloader.  The default operation seems to leave that line out.  While it would be somewhat complicated to fix the default Windows Bootloader, the following  instructions will allow you to have the system create a second one that works properly.If you are using Fedora fc20, or another similarly configured system that is running grub2, the following steps should fix your problem provided you have not damaged your windows bootloader partition.1) Find out which partition your windows bootloader is on.[root@localhost]# fdisk -lDisk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytesDisklabel type: gptDisk identifier: D733242D3-33B9-4C33-B33F-2C333DC52333Device           Start          End   Size Type/dev/sda1         2048       206847   100M EFI System/dev/sda2       206848      2050047   900M Windows recovery environment/dev/sda3      2050048      2312191   128M Microsoft reserved/dev/sda4      2312192    988518399 470.3G Microsoft basic data/dev/sda5   1911560192   1953523711    20G Windows recovery environment/dev/sda6    988518400    989337599   400M EFI System/dev/sda7    989337600    991385599  1000M Microsoft basic data/dev/sda8    991385600   1911560191 438.8G Linux LVMDisk /dev/mapper/fedora-swap: 7.8 GiB, 8396996608 bytes, 16400384 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytesDisk /dev/mapper/fedora-root: 431 GiB, 462728200192 bytes, 903766016 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytes2) Find out the UUID of that partition.[root@localhost]# blkid /dev/sda1/dev/sda1: LABEL=SYSTEM UUID=1234-567A TYPE=vfat PARTLABEL=EFI system partition PARTUUID=0c33e3ab-d3dc-3af3-333d-a33eee3c333cNote: Fedora will automatically generate a new configuration file when you do things like update the kernel so while you can manually edit the grub.cfg file, it is less work in the long term to edit the configuration stub files that are used to generate the grub.cfg file.3) Add the menuentry text to the end of the /etc/grub.d/40_custom file.  Use a text editor of your choice but you must be root to do so.  I used vi.  Make sure you substitute the UUID from step 2 for the 1234-567A shown here.[root@localhost]# vi /etc/grub.d/40_custommenuentry 'My Working Windows Bootloader' {    search --no-floppy --fs-uuid --set=root '1234-567A'    chainloader /EFI/Microsoft/Boot/bootmgfw.efi    boot}4) Now generate the actual config file using the grub2-mkconfig command.[root@localhost]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfgGenerating grub.cfg ...Found linux image: /boot/vmlinuz-3.16.7-200.fc20.x86_64Found initrd image: /boot/initramfs-3.16.7-200.fc20.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-0b156afaadc545779646d809437ed977Found initrd image: /boot/initramfs-0-rescue-0b156afaadc545779646d809437ed977.imgFound Windows Boot Manager on Microsoft/Boot/bootmgfw.efidoneNOTE: Running this command by specifying /etc/grub2-efi.cfg as the output file deletes the symbolic link that is normally there and creates a new file instead of updating the actual config file.5) You are done.  When you reboot, you should now have access to your Windows and GNU/Linux operating systems.