Anaconda/Features/UEFI

= UEFI =

Summary
(from uefi.org) UEFI stands for "Unified Extensible Firmware Interface". The UEFI specification defines a new model for the interface between personal-computer operating systems and platform firmware. The interface consists of data tables that contain platform-related information, plus boot and runtime service calls that are available to the operating system and its loader. Together, these provide a standard environment for booting an operating system and running pre-boot applications.

This page tracks UEFI support for Fedora 12. Most features are already in Fedora 10 and 11. The implementation is based on UEFI 2.1

Owner

 * Name: Peter Jones
 * Name: Denise Dumas -- ddumas@redhat.com

Current status

 * Targeted release: Fedora 13
 * Last updated: 2010-11-05
 * Percentage of completion: 100%

Detailed Description
EFI has long been available for ia64 systems. UEFI brings it to i386 (the Intel-based Apple Mac products have it, as do new Dell, HP, IBM systems), and it will be widely available in x86_64-capable systems in the next few years. New systems typically include both UEFI capabilities and a fallback BIOS.

Remaining work items for F12:
 * The USB disk bootloader intermittently fails to load for no obvious reason. One power cycle it'll work, the next it won't. Debugging continues.
 * "nomodeset" may be required to get a working console. If your hardware gets part way through the install but the screen goes black, retry with "nomodeset" on the kernel command line. This is not a UEFI problem, it's a kernel problem with various devices, see BZ 464896. No solution yet, it appears.
 * graphics support is iffy with some cards, because the firmware is initializing the card in a completely different way than it is with BIOS, and the drivers depend on those details. "vnc" install may be required in these cases.
 * Framebuffer console does color fills wrong on some platforms, which causes the blue background in text mode to be strippy with various colors rather than blue. This is kernel BZ 496155 but possibly the video card is not being set up quite right by the firmware.
 * Serial console is not well supported in the bootloader at this time.
 * Systems that have the memory region starting at 1M in use don't currently work. This requires fixes in both the kernel and grub. Kernel fix appears to be in now. BZ 495120 targetted at Fedora 12.

NOTE WELL: Known UEFI issue for Fedora 11, Fedora 12


 * Fedora CD/DVD install images are not (and likely cannot be) bootable from _both_ BIOS and UEFI systems.

We can't create dual-boot CD/DVD install media for Fedora 11 or Fedora 12 without breaking many supported systems. Therefore we have left the default Fedora CD/DVD install media as BIOS-bootable only. Both the BIOS and UEFI boot images are included on the installation media, however, so that you can create your own UEFI-bootable CD/DVD if desired. Many BIOS implementations, including some currently shipping from large hardware vendors as well as Apple's BootCamp (BIOS) firmware, and even the fallback BIOS on some UEFI-based systems, do not correctly handle the multiple El-Torito boot blocks that are necessary for a dual-boot CD/DVD. Failure symptoms vary; Apple, for instance, presents the user with a text menu and no keyboard driver. There is no easy way to check whether a particular BIOS supports multiple El-Torito boot images or not; the only way is empirical testing.


 * To create a UEFI-bootable CD/DVD, use the boot.iso from the existing CD/DVD and this command:

$ cdrecord -v -sao -pad driveropts=burnfree dev=/dev/sr0 boot.iso


 * Other install methods (USB, PXE) are working; only CD/DVD has this problem

Completed work in F11:
 * GRUB can read an EFI GUID Partition Table.
 * GRUB can run as an EFI boot loader.
 * GRUB ported to build and run on ia64 so elilo can be dropped (not done - no IA64 version for Fedora)
 * Kernel has i386 and x86_64 CONFIG_EFI code
 * Kernel has CONFI_FB_IMAC and CONFIG_FB_EFI merge upstream
 * Kernel has CONFIG_FB_EFI and associated driver (efifb)
 * GRUB can write out screen_info from UGA so we can use efifb instead of imacfb
 * Kernel has CONFIG_EFI_VARS enabled on i386 and x86_64
 * efibootmgr was split out from the elilo package

Benefit to Fedora
Hardware enablement.

Scope
Well-contained. grub, efibootmgr as described above, for 3 platforms. Note that Fedora 11 IA64 compose is pre-req for IA64 UEFI changes, and it is not available yet.

Test Plan
UEFI-capable systems are increasingly available from a number of vendors. Those with access to such systems are actively solicited to perform testing. We have very limited hardware access, which hampers the debugging effort.


 * Another Fedora UEFI Test Day will be scheduled for August, 2009 - see UEFI Test Day for instructions and details

Test plan is pretty straightforward. The new components (grub, kernel, efibootmgr) will need to be tested for UEFI functionality.

X86 X86_64 (eventually IA64 but no IA64 Fedora 11 yet)
 * Architectures:

All who are interested in support for their hardware. Note that only very new platforms support UEFI 2.1
 * Manufacturer's Platforms:


 * Each platform should be able to install and boot from:
 * Internal disk
 * External disk connected by FC
 * USB CD (see NOTE WELL above)
 * USB DVD (see NOTE WELL above)
 * Other USB storage devices
 * Network devices


 * Additional test cases:
 * Variable runtime services, in particular the ability to write to NVRAM
 * Able to list at least 10 devices as boot devices
 * Boot from disk > 2TB
 * More? What else should we be testing?

User Experience
Significantly similar to that of today. The EFI Boot Manager, which runs in the BIOS, is a new feature, which can be frobbed at runtime using efibootmgr.

Dependencies
Vendor support in hardware

Contingency Plan
Initial UEFI support appeared in Fedora 10. Fedora 11 expanded support. Fedora 12 is cleanup and testing on actual platforms that are starting to become available. UEFI-capable hardware platforms provide a BIOS-compatibility mode, so if they are not verified in time for Fedora 11 and bugs later are found, the hardware platforms can boot in BIOS compatibility mode. Non-UEFI hardware platforms are not affected by this code.

Documentation

 * http://www.uefi.org
 * https://www.tianocore.org/

Release Notes

 * UEFI hardware support is not yet widely available and the user impact is negligible, so no release note is needed beyond "we support UEFI"

Comments and Discussion

 * See Talk:Features/EFI