Unified Extensible Firmware Interface (UEFI)

Unified Extensible Firmware Interface (UEFI) is a specification for a software program that connects a computer’s firmware to its operating system (OS). UEFI is expected to eventually replace BIOS.

Like BIOS, UEFI is installed at the time of manufacturing and is the first program that runs when a computer is turned on. It checks to see what hardware components the computing device has, wakes the components up and hands them over to the operating system. The new specification addresses several limitations of BIOS, including restrictions on hard disk partition size and the amount of time BIOS takes to perform its tasks.

Because UEFI is programmable, original equipment manufacturer (OEM) developers can add applications and drivers, allowing UEFI to function as a lightweight operating system. 

The Unified Extensible Firmware Interface is managed by a group of chipset, hardware, system, firmware, and operating system vendors called the UEFI Forum.The specification is most often pronounced by naming the letters U-E-F-I. 

-> Intel developed the original Extensible Firmware Interface (EFI) specifications. Some of the EFI’s practices and data formats mirror those of Microsoft Windows. In 2005, UEFI deprecated EFI 1.10 (the final release of EFI). The Unified EFI Forum is the industry body that manages the UEFI specifications throughout.

History

The original motivation for EFI came during early development of the first Intel–HP Itanium systems in the mid-1990s. BIOS limitations (such as 16-bit processor mode, 1 MB addressable space and PC AT hardware) had become too restrictive for the larger server platforms Itanium was targeting.The effort to address these concerns began in 1998 and was initially called Intel Boot Initiative. It was later renamed to Extensible Firmware Interface (EFI).

In July 2005, Intel ceased its development of the EFI specification at version 1.10, and contributed it to the Unified EFI Forum, which has developed the specification as the Unified Extensible Firmware Interface (UEFI). The original EFI specification remains owned by Intel, which exclusively provides licenses for EFI-based products, but the UEFI specification is owned by the UEFI Forum.

Version 2.0 of the UEFI specification was released on 31 January 2006. It added cryptography and “secure boot”. Version 2.1 of the UEFI specification was released on 7 January 2007. It added network authentication and the user interface architecture (‘Human Interface Infrastructure’ in UEFI). The latest UEFI specification, version 2.8, was approved in March 2019.

Tiano was the first open source UEFI implementation and was released by Intel in 2004. Tiano has since then been superseded by EDK and EDK2 and is now maintained by the TianoCore community.

In December 2018, Microsoft announced Project Mu, a fork of TianoCore EDK2 used in Microsoft Surface and Hyper-V products. The project promotes the idea of Firmware as a Service.

Advantages

The interface defined by the EFI specification includes data tables that contain platform information, and boot and runtime services that are available to the OS loader and OS. UEFI firmware provides several technical advantages over a traditional BIOS system:

  • Ability to use large disks partitions (over 2 TB) with a GUID Partition Table (GPT)
  • CPU-independent architecture
  • CPU-independent drivers
  • Flexible pre-OS environment, including network capability
  • Modular design
  • Backward and forward compatibility

Disadvantages

  • for BIOS it was enough to have 640 kilobytes of RAM. With TianoCore the minimum is somewhere around 64 megabytes.
  • the higher abstraction layer and the ability to run UEFI applications opens the door to rootkits, which were already spotted in the wild.
  • with more complexity comes slower boot ups. A BIOS machine can boot a Linux kernel by the time video is initialized and TianoCore logo is shown under UEFI.
  • many argue that UEFI introduces an unnecessary complexity that won’t be used by the operating systems anyway, one of the most prominent speakers being Linus Torvalds. It is a fact that not many mainline OSes take advantage of the CPU-independent drivers nor the flexible and modular design, and every OS needs a native driver.

Applications development

EDK2 Application Development Kit (EADK) makes it possible to use standard C library functions in UEFI applications. EADK can be freely downloaded from the Intel’s TianoCore UDK / EDK2 SourceForge project. As an example, a port of the Python interpreter is made available as a UEFI application by using the EADK.The development has moved to GitHub since UDK2015.

A minimalistic “hello, world” C program written using EADK looks similar to its usual C counterpart:

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/ShellCEntryLib.h>

EFI_STATUS EFIAPI ShellAppMain(IN UINTN Argc, IN CHAR16 **Argv)
{
    Print(L"hello, world\n");
    return EFI_SUCCESS;
}

Published by Ꭺ̂ᏴᎻᎪ̃Ꮍ ᎷᎪ̃Ⴎ́ᎡᎽᎪ̈

Goal- ARTIFICIAL INTELLIGENCE

Leave a comment

Design a site like this with WordPress.com
Get started