TianoCore EDK II#Project Mu

{{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 = 202505

| latest release date = {{Start date and age|2025|05|23}}

| 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 =

}}

{{pic|Logo of Tianocore.svg|Logo of Tianocore, the umbrella project of which EDK II is part of|thumb}}

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}}

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 |date=November 29, 2023 |title=The Far-Reaching Consequences of LogoFAIL |url=https://www.binarly.io/blog/the-far-reaching-consequences-of-logofail |publisher=Binarly}}

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}}

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 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 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}}

References

{{Reflist}}