{{Short description|Reference software implementation for UEFI}} {{Infobox software | title = | name = | logo = {{Dark mode switch|250px|250px|logo}} | logo caption = | logo alt = | logo size = | collapsible = <!-- Any text here will collapse the screenshot. --> | screenshot = TianoCore EDK II splash screenshot.png | screenshot size = | screenshot alt = | caption = TianoCore EDK II splash screen | other_names = | author = | developer = Intel | released = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | ver layout = <!-- simple (default) or stacked --> | discontinued = <!-- Set to yes, if software is discontinued, otherwise omit. --> | latest release version = 202602 | latest release date = {{Start date and age|2026|02|22}} | latest preview version = | latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | repo = {{URL|github.com/tianocore/edk2}} | qid = | programming language = | middleware = | engine = <!-- or |engines= --> | operating system = | platform = | included with = | replaces = | replaced_by = | service_name = | size = | standard = | language = | language count = <!-- Number only --> | language footnote = | genre = | license = BSD-2-Clause-Patent | website = <!-- {{URL|example.org}} or {{official URL}} --> | AsOf = }} '''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.<ref name=":0">{{Cite web|title=What is TianoCore?|url=https://www.tianocore.org/|access-date=2021-03-26|website=www.tianocore.org}}</ref> TianoCore EDK II is the de facto standard generic UEFI services implementation.<ref>{{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 }}</ref>
== History == In 2004, Intel released their "Foundation Code" of their EFI implementation using a free license.<ref name=":0" /> 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.<ref>{{cite web |title=tianocore/edk |url=https://github.com/tianocore/edk/blob/3e21a6a20a5114958409c7f05b017f179b2cccac/Foundation/Include/Tiano.h |publisher=tianocore |date=9 March 2023}}</ref> The last update to the EDK (version 1) project happened in May 2010.<ref>{{cite web |title=Commits · tianocore/edk |url=https://github.com/tianocore/edk/commits/master |website=GitHub |language=en}}</ref> Version 2 is in active development.<ref>{{Cite web |title=Releases · tianocore/edk2 |url=https://github.com/tianocore/edk2/releases |access-date=2024-02-23 |website=GitHub |language=en}}</ref>{{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".<ref>{{cite web |title=EDK II / Code / [r29574] /tags/InitialImport |url=https://sourceforge.net/p/edk2/code/HEAD/tree/tags/InitialImport/ |website=sourceforge.net}}</ref> 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.<ref>{{cite web |title=EDK II Project |url=https://github.com/tianocore/edk2/blob/UDK2008/BuildNotes2.txt |publisher=tianocore |date=18 May 2023}}</ref> UDK2010 was the first version of EDK II to be widely known.<ref>{{Cite book|last=Barry|first=Peter|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}}</ref> Intel would continue to validate certain snapshots of EDK II as UDK until 2018, when EDK II moved into a "stable tag" format.<ref>{{cite web |title=UDK |url=https://github.com/tianocore/tianocore.github.io/wiki/UDK |website=tianocore documentation (GitHub) |language=en}}</ref>
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.<ref name="Binarly">{{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}}</ref>
Although EDK II implements the UEFI specification, it is not endorsed by the UEFI Forum.<ref name=":0" />
== Projects == thumb|UEFI shell 2.2, a part of TianoCore EDK II 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.<ref>{{Cite book|last=Babar|first=Yogesh|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}}</ref>
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.<ref>{{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}}</ref> The code was updated to be compatible with EDK II in 2017.<ref>{{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}}</ref>
EDK II source code includes instructions for building as a payload for coreboot or Intel's "slim bootloader".<ref>{{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}}</ref>
Project Mu is a fork of EDK II by Microsoft.<ref>{{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}}</ref><ref>{{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}}</ref> It is an open source release of the UEFI core used in Microsoft Surface and Hyper-V products initiated by Microsoft in December 2018.<ref>[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]</ref> The project promotes the idea of firmware as a service.<ref>{{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}}</ref> 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.<ref>{{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 }}</ref>
EFIDroid is a bootloader for Android devices based on Snapdragon processors that is based on EDK II.<ref>{{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}}</ref>
== References == {{Reflist}}
== External links == * {{Official website}} * {{Github|tianocore/edk2|EDK II}} * {{Github|Microsoft/mu_basecore|Project Mu BaseCore}}
Category:Free BIOS implementations Category:Firmware Category:Custom firmware Category:Software related to embedded Linux Category:Software using the BSD license Category:Free software programmed in C Category:Free software programmed in C++ Category:Unified Extensible Firmware Interface