As promised
last
month at DebConf, I've been working on adding EFI support to
debian-cd and debian-installer, hopefully to get it up and running. At
the moment, this is basic support only for booting
and setting up the installed system via UEFI. I'm not
worrying about "Secure" (better named "Restricted"?) Boot yet - that
comes later, and depends on the basic stuff working first.

So, how is it going? Quite well, really. I've got a
debian-cd
branch that I'm working on locally, and with a relatively small
amount of work there I've got a locally-built CD that boots in EFI
mode, using grub-efi as a boot loader. I've borrowed a script
called efi-image from Colin Watson which generates the
necessary EFI boot image from bits out of the grub-efi-amd64-bin
package. For some reason, this grub image isn't working with all the
normal graphics code so I've not got a pretty branded startup screen
yet. But, nonetheless, I do have a working EFI boot CD. Yay!

Next step: the installer. At the moment, generic amd64 and i386
machines are assumed to use need dos-style partitioning, and then
either lilo or grub as a bootloader. I've patched and rebuilt some of
the d-i packages locally to add a new sub-architecture of "efi" for
both amd64 and i386, alongside the existing "generic" and "mac"
variants. Using that new sub-architecture, it's possible to add checks
for amd/efi and i386/efi in various places to make the necessary
changes:

choose the GPT partition type for blank disks

tweak the auto-partitioner to add an EFI (fat32) boot partition
on the front of the first hard disk

install the elilo bootloader

Why elilo? It's the default for current ia64 systems, and for EFI
Macs. I tried to get grub-efi working with the grub-installer package,
but with little success so far. I'll try again with grub-efi, but for
now elilo is much simpler and (importantly!) it works for me.

So, I have a netinst CD built that works for me in local testing in
a qemu VM
using James
Bottomley's OVMF build of Tianocore. It's not pretty, but it works
fine, covering all the normal Debian installation steps and giving me
a UEFI system at the end of the process. I'm about to start testing on
real hardware now, so I think it's worth sharing this netinst image
with others too. Grab it
from http://cdimage.debian.org/cdimage/unofficial/efi-development/upload1/
. The "bits" subdirectory contains all the tweaked d-i packages I've
played with, in both source and binary form. If you have an EFI system
and would like to help us get it supported well in Debian, please
download this image and play with it! Feedback to the debian-cd and/or
debian-boot lists, please!