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 =
}}
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}}
External links
- {{Official website}}
- {{Github|tianocore/edk2|EDK II}}
- {{Github|Microsoft/mu_basecore|Project Mu BaseCore}}
Category:Free BIOS implementations
Category:Software related to embedded Linux
Category:Software using the BSD license
Category:Free software programmed in C