TianoCore EDK II

{{Short description|Reference software implementation for UEFI}}

{{Infobox software

| title =

| name =

| logo =

| logo caption =

| logo alt =

| logo size =

| collapsible =

| screenshot = TianoCore EDK II splash screenshot.png

| screenshot size =

| screenshot alt =

| caption = TianoCore EDK II splash screen

| other_names =

| author =

| developer = Intel

| released =

| ver layout =

| discontinued =

| latest release version = 202502

| latest release date = {{Start date and age|2025|02|21}}

| latest preview version =

| latest preview date =

| repo = {{URL|github.com/tianocore/edk2}}

| qid =

| programming language =

| middleware =

| engine =

| operating system =

| platform =

| included with =

| replaces =

| replaced_by =

| service_name =

| size =

| standard =

| language =

| language count =

| language footnote =

| genre =

| license = BSD-2-Clause-Patent

| website =

| AsOf =

}}

File:Logo of Tianocore.svg

TianoCore EDK II (formerly Tiano) is the reference implementation of UEFI by Intel. EDK is the abbreviation for EFI Development Kit and is developed by the TianoCore community.{{Cite web|title=What is TianoCore?|url=https://www.tianocore.org/|access-date=2021-03-26|website=www.tianocore.org}} TianoCore EDK II is the de facto standard generic UEFI services implementation.{{cite book |author-link=|arxiv=2012.05471 |title=2020 Ivannikov Ispras Open Conference (ISPRAS) |last1= Häuser|first1= Marvin|last2= Cheptsov|first2= Vitaly|chapter=Securing the EDK II Image Loader |year= 2020|pages=16–25 |doi=10.1109/ISPRAS51486.2020.00010 |isbn=978-1-6654-1291-9 |s2cid=228084173 }}

History

In 2004, Intel released their "Foundation Code" of their EFI implementation using a free license. The resulting code formed the basis of the community-run EDK project on SourceForge, started in 2004. The name "Tiano" was present in the initial Intel code.{{cite web |title=tianocore/edk |url=https://github.com/tianocore/edk/blob/3e21a6a20a5114958409c7f05b017f179b2cccac/Foundation/Include/Tiano.h |publisher=tianocore |date=9 March 2023}} The last update to the EDK (version 1) project happened in May 2010.{{cite web |title=Commits · tianocore/edk |url=https://github.com/tianocore/edk/commits/master |website=GitHub |language=en}} Version 2 is in active development.{{Cite web |title=Releases · tianocore/edk2 |url=https://github.com/tianocore/edk2/releases |access-date=2024-02-23 |website=GitHub |language=en}}{{Secondary source needed|date=February 2024}}

An "edk2" project was imported into SourceForge in April 2006, with a package-oriented code base again written by Intel. The initial "DeveloperManual" referred to this project as "Tiano R9".{{cite web |title=EDK II / Code / [r29574] /tags/InitialImport |url=https://sourceforge.net/p/edk2/code/HEAD/tree/tags/InitialImport/ |website=sourceforge.net}} In 2008, a stable, validated version of EDK II was tagged as "UEFI Development Kit 2008" (UDK2008). The tag includes a BuildNotes.txt dating to November 2006 describing the code found in the initial import, and a BuildNotes2.txt describing modules added in May 2008.{{cite web |title=EDK II Project |url=https://github.com/tianocore/edk2/blob/UDK2008/BuildNotes2.txt |publisher=tianocore |date=18 May 2023}} UDK2010 was the first version of EDK II to be widely known.{{Cite book|last=Barry|first=Peter|url=https://www.worldcat.org/oclc/778434967|title=Modern embedded computing : designing connected, pervasive, media-rich systems|date=2012|publisher=Elsevier/Morgan Kaufmann|others=Patrick Crowley|isbn=978-0-12-394407-8|location=Amsterdam|pages=173|oclc=778434967}} Intel would continue to validate certain snapshots of EDK II as UDK until 2018, when EDK II moved into a "stable tag" format.{{cite web |title=UDK |url=https://github.com/tianocore/tianocore.github.io/wiki/UDK |website=tianocore documentation (GitHub) |language=en}}

Although EDK II implements the UEFI specification, it is not endorsed by the UEFI Forum.

Projects

File:UEFI shell 2.2 screenshot.png

EDK II code has been integrated into other projects.

A part of TianoCore is the UEFI shell. When a specific UEFI vendor does not provide a UEFI shell, the one from TianoCore can be used.{{Cite book|last=Babar|first=Yogesh|url=https://www.worldcat.org/oclc/1164505064|title=Hands-on booting learn the boot process of Linux, Windows, and Unix|date=2020|publisher=Apress L. P|isbn=978-1-4842-5890-3|location=Berkeley, CA|pages=119|oclc=1164505064}}

= Coreboot =

Google uses a version of coreboot modified to launch Tiano. This feature is called PIANO (payload into Tiano) or tianocoreboot. PIANO code was merged into coreboot in 2013.{{Cite web|title=Google Pushes "Project PIANO" Into Coreboot - Phoronix|url=https://www.phoronix.com/scan.php?page=news_item&px=MTI4ODU|access-date=2021-03-26|website=www.phoronix.com}} The code was updated to be compatible with EDK II in 2017.{{Cite web|title=Coreboot Now Has Basic UEFI Support Working With TianoCore - Phoronix|url=https://www.phoronix.com/scan.php?page=news_item&px=Coreboot-UEFI-Support|access-date=2021-03-26|website=www.phoronix.com}}

EDK2 source code includes instructions for building as a payload for coreboot or Intel's "slim bootloader".{{cite web |title=EDK II Project: BuildAndIntegrationInstructions.txt |url=https://github.com/tianocore/edk2/blob/edk2-stable202302/UefiPayloadPkg/BuildAndIntegrationInstructions.txt |website=GitHub |publisher=tianocore |date=18 May 2023}}

= Project Mu =

Project Mu is a fork of EDK-II by Microsoft.{{Cite web|title=Microsoft releases Mu open-source UEFI firmware {{!}} bit-tech.net|url=https://bit-tech.net/news/tech/software/microsoft-releases-mu-open-source-uefi-firmware/1/|access-date=2021-03-26|website=Bit-tech|language=en}}{{Cite web|title=Microsoft Announces "Project Mu" For Open-Source UEFI Alternative To TianoCore - Phoronix|url=https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Project-Mu-UEFI|access-date=2021-03-26|website=www.phoronix.com}} It is an open source release of the UEFI core used in Microsoft Surface and Hyper-V products initiated by Microsoft in December 2018.[https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Project-Mu-UEFI Microsoft Announces "Project Mu" For Open-Source UEFI Alternative To TianoCore - Phoronix] The project promotes the idea of firmware as a service.{{cite web|url= https://betanews.com/2018/12/20/microsoft-project-mu/|title= Microsoft announces Project Mu, an open-source release of the UEFI core|date= 20 December 2018}} The project was started to build on TianoCore's EDK II implementation to improve modularity and increase the quality of tests when building UEFI firmware.{{cite web|url=https://www.neowin.net/news/microsoft-announces-project-mu-to-promote-firmware-as-a-service/|title=Microsoft announces Project Mu to promote Firmware as a Service |date=16 June 2023 }}

= EFIDroid =

EFIDroid is a bootloader for Android devices based on Snapdragon processors that is based on EDK II.{{Cite web|date=2017-03-06|title=EFIDroid: A Second-Stage Bootloader Using UEFI Firmware to Multiboot [XDA Spotlight]|url=https://www.xda-developers.com/efidroid-is-a-second-stage-bootloader/|access-date=2021-03-26|website=xda-developers|language=en-US}}

LogoFAIL vulnerability

In December 2023 a vulnerability termed "LogoFAIL" was discovered associated with EDK II which enabled an attacker to insert their own code in place of custom boot logo bitmap loader modules.{{cite web|url=https://www.binarly.io/blog/the-far-reaching-consequences-of-logofail|title=The Far-Reaching Consequences of LogoFAIL|date=November 29, 2023|publisher=Binarly}}

References

{{Reflist}}