The shim binaries are being built with relaxed file alignment
requirements. This makes some of UEFI implementations reject shim
binaries. For example Lenovo Miix 630 boots grubaa64.efi, but rejects
shimaa64.efi. Most likely this is because of the header differences.
Compare:
objdump -p shimaa64.efi:
...
BaseOfCode 000000000001e000
ImageBase 0000000000000000
SectionAlignment 00001000
FileAlignment 00000200
...
objdump -p grubaa64.efi:
...
AddressOfEntryPoint 0000000000001000
BaseOfCode 0000000000001000
ImageBase 0000000000000000
SectionAlignment 00001000
FileAlignment 00001000
...
Reference for the alignment story:
- https://git.savannah.gnu.org/cgit/grub.git/commit/include/grub/efi/pe32.h?id=a51f953f4ee87cbfbf25a7df564304c5e9fea6a0
- https://web.archive.org/web/20200619041814/https://www.linaro.org/blog/porting-linux-to-aarch64-laptops/