A refinement on my previous attempt.
This is how to configure a Jessie live-build environment to boot on UEFI systems, and get a USB key image that works:
# Build a FAT image instead of an ISO image... lb config -b hdd # ...and work around #773833 echo "/usr/lib/syslinux/mbr/*.bin /usr/lib/syslinux/" > hooks/9000-fix-773833.chroot # Get EFI Shell from https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/X64/ curl -o binary/efi/boot/Bootx64.efi https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/X64/Shell.efi # Configure the EFI shell to boot the live setup echo 'live\vmlinuz initrd=live\initrd.img append boot=live components' > binary/startup.nsh
Rationale: UEFI understants FAT filesystems, and would run EFI binaries placed under efi/boot.
For a hard drive, it only considers a FAT filesystem on a GPT partition marked with a special UUID, so that it doesn't get confused with other FAT filesystems that are on disk.
For a USB key, it seems that most hardware will happily look for
even if the partition table is the old MBR kind.
live-build can build a FAT image for USB keys, losing the ability to boot on
CDROMs and DVDs. Since I don't need that ability, I can use
-b hdd to get the
live system packaged inside a container that UEFI hardware can understand
At that point, enabling UEFI boot on a Live Debian Jessie is just a matter of
efi/boot/Bootx64.efi binary that is able to load the kernel and
initrd in memory, and blow life into them.