EFI support has been added to the bootimg class which allows the "boot" label to work on EFI machines. The "install" label runs an install script which installs legacy boot GRUB 2, and will not work on EFI-only machines. The installer needs a way to determine an EFI installation should be performed, I suspect the BOOT_LABEL should be changed to INSTALL-EFI or similar to make the scenario easy to detect. To install as EFI, the target disk should have a GPT partition table with a small FAT32 FS on the first partition and an EXT3 partition for the rootfs. The EFI partition should contain the following layout: EFI/ YOCTO/ yocto.efi grub.cfg vmlinuz initrd (optional) The grub.cfg will contain the standard kernel APPEND and set root to something like /dev/sda2 to pick up the rootfs installed there (this is the same as the legacy install).
Note: Rather than installing grub-efi to the harddisk, we should consider using efibootmgr to install boot targets for the EFI Shell. This eliminates a secondary boot loader. The shell itself offers all the configurability we normally expect from grub for manipulating kernel parameters and the like. This would involve adding efibootmgr to the live image for EFI machines and doing something like the following in the install-efi script: efibootmgr --create --gpt --disk /dev/sdX --part Y --write-signature --label "Yocto 1.2 (core-image-sato)" --loader '\efi\yocto\bzImage.efi ${APPEND}'
I'm bumping the priority of this as we've seen an uptake in EFI systems and working around this issue is painful. Getting it right will take some research and likely some new recipes. Bumping the sizing as well.
http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=64f7feb5c37d06e1985c59106cf2f7cd286fd0b8
Verified on master branch. Latest commit ID: a691562e5daac69556f1dae28b3cffaa38f51fc8 There are only two grub entries: boot and install. The install parameters include LABEL=install-efi. The installation process was completed successfully with a core-image-minimal image.