IIRC, the EFI shell won't launch files as programs if their names don't end in .efi
. Thus, you must first rename the kernel file so that its name ends in .efi
.
If you can't rename the kernel file, you can still launch a kernel using the EFI stub loader via another boot manager program, such as gummiboot/systemd-boot or rEFInd. These tools don't care about the filename extension -- at least, not as much as the shell does. (rEFInd's auto-scanning feature matches to *.efi
, vmlinuz*
, bzImage*
, and kernel*
, but manual boot configuration for both programs will work with any filename.)
Also, as fpmurphy1 says, the kernel must be compiled with EFI stub support. Most distributions have included this support in their 3.3.0 and later kernels, but this may not be 100% universal, particularly if you compile your kernel yourself. (The last I checked, EFI stub support was not part of the default kernel configuration for kernel source obtained from kernel.org
.)