MaverickUefiSupport

Differences between revisions 2 and 3
Revision 2 as of 2010-05-18 12:30:59
Size: 4331
Editor: 82-69-40-219
Comment: dump
Revision 3 as of 2010-05-18 13:37:14
Size: 4098
Editor: 82-69-40-219
Comment:
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.)

It is mandatory.
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.]
Line 20: Line 18:
This should cover the _why_: why is this change being proposed, what justifies it, where we see this justified.

== User stories ==

== Assumptions ==
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.
Line 28: Line 22:
You can have subsections that better describe specific parts of the issue. We have parts of UEFI support already, but we need to connect the dots.
Line 30: Line 24:
== Implementation == === Testing facilities ===
Line 32: Line 26:
This section should describe a plan of action (the "how") to implement the changes discussed. Could include subsections like: The "Tiano``Core" 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.
Line 34: Line 28:
=== UI Changes === The EDK II project offers [[http://sourceforge.net/projects/edk2/files/OVMF|downloadable UEFI firmware images]].
Line 36: Line 30:
Should cover changes required to the UI, or specific UI that is required to implement this Virtual``Box now has [[http://www.virtualbox.org/wiki/Changelog|EFI support]]; we have not yet checked whether this is in the OSE release.
Line 38: Line 32:
=== Code Changes === === CD booting ===
Line 40: Line 34:
Code changes should include an overview of what needs to change, and in some cases even the specific details. 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.
Line 42: Line 36:
=== Migration === 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.
Line 44: Line 38:
Include:
 * data migration, if any
 * redirects from old URLs to new ones, if any
 * how users will be pointed to the new way of doing things, if necessary.
Pursuant to UbuntuSpec: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.

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.
Line 57: Line 66:
This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved.

== BoF agenda and discussion ==

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

Colin King:
 * started off with GRUB in qemu using TianoCore
  * various problems, largely due to dodgy firmware
 * now has proper hardware/firmware from Intel
  * GRUB loader stage works fine
  * installer side needs work
  * EFI System Partition contains GRUB and optionally kernel images
 * building TianoCore for qemu/kvm is some work
  * licensing needs investigation

Mario:
 * live CD needs to boot in EFI mode
  * ElTorito permits "multi-catalog" mode: SLES and RHEL6b2 both support this
 * no code to deal with EFI Boot Manager via /proc/efi, so that Ubuntu becomes the default boot

Michael:
 * Intel Macs should *not* boot in EFI mode because this breaks proprietary driver bits - legacy mode will work better here
  * May want to retest this in case the drivers added support when no one was looking - I personally tested EFI boot though on 1st Gen MBP
 * Need to make sure the GRUB EFI binary matches the bit length of the firmware
  * EFI specification includes a file naming convention to assist with this, at least in terms of autodetection for CD booting
 * We need PE executable headers for EFI binaries
 * GRUB will need to live on a FAT partition
 * We need a new i386/efi amd64/efi subarchitecture to exist in d-i
 * May also need armel/efi (opportunistically - offer outstanding to port GRUB upstream, given hardware)
 * So we'll have i386/mac, i386/efi, i386/generic
 * VirtualBox now has EFI support for testing - http://www.virtualbox.org/wiki/Changelog
  * Not sure if it's in the OSE release

Scott:
 * Intel graphics drivers expect to be able to execute a video BIOS

Colin Watson:
 * question mark over ability to support graphical boot menus in EFI: GRUB has some level of support for UGA and GOP
 * i386/efi should default for GPT
 * make d-i netboot mini.iso multiboot in much the same way as Ubuntu CDs
}}}
Fedora has added [[http://fedoraproject.org/wiki/Anaconda/Features/UEFI|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.

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.

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 82-69-40-219)