Summary

Support booting on systems using UEFI firmware.

Release Note

Ubuntu now works on systems using UEFI firmware. [Depending on how this is implemented, we may need to add "as long as you boot from a USB stick" or similar.]

Rationale

UEFI systems are becoming increasingly common, and at least some of the major OEMs are likely to start shipping them in volume within a year or so.

Design

We have parts of UEFI support already, but we need to connect the dots.

Testing facilities

The "TianoCore" EFI release works in qemu, but we have encountered memory access problems in GRUB which appear to be due to bugs in the firmware. With Intel hardware/firmware, these memory access problems do not appear.

The EDK II project offers downloadable UEFI firmware images.

VirtualBox now has EFI support; we have not yet checked whether this is in the OSE release.

CD booting

The live CD needs to boot in EFI mode. El Torito permits "multi-catalog" mode: SLES and RHEL6b2 both support this. The d-i netboot mini.iso should be a multi-catalog image in much the same way.

Intel Macs should *not* boot in EFI mode, because this breaks proprietary driver bits; legacy mode will work better here. In other words, we'll leave Intel Macs as they are for the moment.

Pursuant to foundations-m-grub2-boot-framebuffer, we will need to look into our ability to support graphical boot menus in EFI. GRUB has some level of support for UGA and GOP graphics.

This requires using GRUB for CD booting, or at least having the bare minimum of configuration to support it. Note that the EFI specification includes a file naming convention to assist with boot loader detection, which will be helpful on USB sticks. Current GRUB upstream trunk supports generating dual BIOS/EFI rescue images.

Installer

We will create new i386/efi and amd64/efi subarchitectures in d-i, denoting EFI firmware systems other than Intel Macs. (In future, an armel/efi subarchitecture may also be useful.)

EFI systems will default to GPT for new partition tables.

The installer already deals with setting up an EFI System Partition on systems it recognises as EFI; we will switch this on for the new subarchitectures in partman-efi.

We will install grub-efi on EFI systems. Research and testing needs to be done on whether GRUB's bit length needs to match the bit length of the firmware; if so, then we will install grub-efi-ia32 or grub-efi-amd64 as appropriate. [Results: UEFI formally only supports 64-bit systems, so we will simply install grub-efi-amd64 on amd64 and consider UEFI on i386 to be unsupported - we'll install grub-efi-ia32 there in the event that somebody puts the pieces together, but won't advocate the use of UEFI on i386.]

We will instruct the EFI Boot Manager (via /proc/efi) to make Ubuntu the default operating system.

Kernel

Intel graphics drivers expect to be able to execute a video BIOS in some situations, and so may have problems on EFI systems. This requires further investigation and testing.

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage.

This need not be added or completed until the specification is nearing beta.

Unresolved issues

Fedora has added UEFI support, but apparently many supported BIOSes break with multiple-image El Torito CDs. It may turn out that we can only support this on USB sticks; we will need to establish this during early testing.


CategorySpec

FoundationsTeam/Specs/MaverickUefiSupport (last edited 2010-07-09 14:03:16 by cjwatson)