Bootloader to OS with Unified Extensible Firmware Interface (UEFI)

Unified Extensible Firmware Interface (UEFI) is a specification detailing an interface that helps hand off control of the system for the pre-boot environment (i.e.: after the system is powered on, but before the operating system starts) to an operating system, such as Windows or Linux. UEFI aims to provides a clean interface between operating systems and platform firmware at boot time, and supports an architecture-independent mechanism for initializing add-in cards.

UEFI will overtime replace vendor-specific BIOS. It also allows for fast boot and support for large hard drives (> 2.2 TB).

There are several documents fully defining the UEFI Specification, API and testing requirements:

  1. The UEFI Specification (version 2.3.1) describes an interface between the operating system (OS) and the platform firmware. It describes the requirements for the following components, services and protocols:
    Boot ManagerProtocols – Compression Algorithm Specification
    EFI System TableProtocols – ACPI Protocols
    GUID Partition Table (GPT) Disk LayoutEFI Byte Code Virtual Machine
    Services — Boot ServicesNetwork Protocols – SNP, PXE and BIS
    Services — Runtime ServicesNetwork Protocols — Managed Network
    Protocols — EFI Loaded ImageNetwork Protocols — VLAN and EAP
    Protocols — Device Path ProtocolNetwork Protocols —TCP, IP, IPsec, FTP and Configurations
    Protocols — UEFI Driver ModelNetwork Protocols – ARP and DHCP
    Protocols — Console SupportNetwork Protocols — UDP and MTFTP
    Protocols – Media AccessSecurity – Secure Boot, Driver Signing and Hash
    Protocols – PCI Bus SupportHuman Interface Infrastructure Overview
    Protocols — SCSI Driver Models and Bus SupportHII Protocols
    Protocols – iSCSI BootHII Configuration Processing and Browser Protocol
    Protocols — USB SupportUser Identification
    Protocols – Debugger SupportFirmware Management Protocol
  2. The UEFI Platform Initialization Specification (version 1.2) is composed of 5 documents which defines the pre EFI initialization core interface, the driver execution environment core interface,  the shared architectural elements, the system management mode core interface and the standards to be used with the Platform Initialization (PI) specifications.
  3. The UEFI Shell Specification (Version 2.0) provides an API, a command prompt and a rich set of
    commands that extend and enhance the UEFI Shell’s capability.
  4. The UEFI Platform Initialization Distribution Packaging Specification (Version 1.0)  defines the overall architecture and external interfaces that are required for distribution of UEFI/PI source and binary files.
  5. The UEFI Self Certification Test (SCT) Package provides the tools to allow companies or individuals who implement UEFI to test their products and services. It contains 6 files:
    • ReleaseNote.txt – Release note for the entire package
    • UefiSctEdkII-Dev.zip – UEFI SCT agent source package.
    • Ems-Dev.zip – Ems source package.
    • IHV-SCT_Binary.zip – Toolset for the Independent Hardware Vendors(IHV) to validate UEFI implementations on IA32, Itanium Processor Family (IPF) and EM64T based platforms for compliance to the UEFI Specification.
    • UEFI-SCT_Binary.zip – Toolset with two usage models: One is native mode which is invoked as an EFI application SCT from local EFI Shell, the other is passive mode which executes
      UEFI SCT Agent in EFI Shell and runs all test cases on UEFI Management side (EMS).
    • SCT_1_1_Specs.zip –  SCT Specifications 1.1

This is a rather complex specification, as all documents comprise several thousand pages.

UEFI: Bootloader to Operating System Interface
Unified Extensible Firmware Interface's position in the software stack.

Current UEFI Implementations and Resources.

Many (Most?) operating systems are now UEFI compliant. For example, GRUB2 and Linux follow the UEFI specifications. Here’s a non-exhaustive list of UEFI compliant products: Windows 7, Windows Server 2008 R2, Ubuntu (10.04 LTS and greater), Meego, Redhat, Suse, Fedora, VMWare etc…

Tianocore is an open source implementation of UEFI specification and provides the “Intel EDK II Application Development Kit for including the Standard C Libraries in UEFI Shell Applications”.

Linaro (Linux for ARM)  also considers work on  an UEFI implementation, as it is apparently very important for ARM servers and virtualization companies (such as Citrix).  For details about Linaro UEFI implementation, please visit: https://blueprints.launchpad.net/linaro/+spec/linaro-kernel-o-uefi

For further information, Intel also recommended those two books in one of their presentations:

 

 

Share this:

Support CNX Software! Donate via PayPal or cryptocurrencies, become a Patron on Patreon, or buy review samples

Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
0 Comments
Advertisement