Utökningsbart firmware-gränssnitt

Extensible Firmware Interface ( EFI ) (från  engelska  -  "expandable firmware interface ") - ett gränssnitt mellan operativsystemet och firmware som kontrollerar utrustningens lågnivåfunktioner, dess huvudsakliga syfte är att korrekt initiera utrustningen när systemet vrids på och överför kontrollen till starthanteraren eller direkt till operativsystemets kärna. EFI är tänkt att ersätta BIOS  , ett gränssnitt som traditionellt används av alla IBM PC-kompatibla persondatorer. Den första EFI-specifikationen utvecklades av Intel , senare övergavs förnamnet och den senaste versionen av standarden kallas Unified Extensible Firmware Interface ( UEFI ). UEFI utvecklas för närvarande av Unified EFI Forum .

Historik

EFI skapades ursprungligen för de första Intel-HP Itanium-systemen i mitten av 1990-talet . Begränsningarna för PC-BIOS (16-bitars körbar kod, 1 MB adresserbart minne, IBM PC/AT -hårdvarubegränsningar etc.) var uppenbarligen inte tillåtna på de stora serverplattformar Itanium var tänkt att användas på. Det ursprungliga namnet är Intel Boot Initiative ( Intel Boot Initiative ), senare omdöpt till EFI [1] :

Innehåll

Gränssnittet som definieras av EFI-specifikationen inkluderar datatabeller som innehåller information om plattformen, start- och körtidstjänster som är tillgängliga för operativsystemet (OS) laddaren och själva operativsystemet. Vissa befintliga BIOS- tillägg , som ACPI och SMBIOS , finns också i EFI eftersom de inte kräver ett 16-bitars runtime-gränssnitt.

Tjänster

EFI definierar "boot-tjänster" som inkluderar stöd för en text- och grafisk konsol på olika enheter, buss-, block- och filtjänster, samt runtime-tjänster som datum, tid och icke-flyktigt minne.

Drivrutiner

Förutom standard, arkitekturspecifika enhetsdrivrutiner tillhandahåller EFI-specifikationen en plattformsoberoende drivrutinsmiljö som kallas EFI Byte Code (EBC). Systemets fasta programvara krävs enligt UEFI-specifikationen för att ha en tolk för alla EBC-bilder som laddas eller kan laddas in i miljön. I denna mening liknar EBC Open Firmware , den hårdvaruoberoende firmware som används i Apple Macintosh och Sun Microsystems SPARC -datorer .

Vissa arkitekturspecifika (icke-EBC) EFI-drivrutinstyper kan ha gränssnitt för användning av operativsystemet. Detta gör att operativsystemet kan använda EFI för grundläggande grafik och nätverksstöd innan de OS-definierade drivrutinerna laddas.

Download Manager

EFI-starthanteraren används för att välja och starta ett OS, vilket eliminerar behovet av en dedikerad startmekanism (OS-laddaren är en EFI-applikation).

Skivstöd

Utöver den vanliga MBR -disklayouten har EFI GPT -stöd , som är fritt från MBR-specifika begränsningar. EFI-specifikationen innehåller inte beskrivningar för filsystem, men EFI-implementationer stöder i allmänhet FAT32 som ett filsystem [3] .

EFI-skal

EFI -gemenskapen har skapat en öppen skalmiljö ( EFI-skal ) [4] .  Användaren kan ladda ett EFI-skal för att utföra vissa operationer istället för att starta operativsystemet. Skalet är en EFI-applikation; den kan finnas permanent i plattformens ROM eller på en enhet vars drivrutiner finns i ROM.

Skalet kan användas för att köra andra EFI-applikationer som konfiguration, OS-installation, diagnostik, konfigurationsverktyg och firmwareuppdateringar. Det kan också användas för att spela CD- eller DVD-media utan att starta operativsystemet, förutsatt att EFI-applikationerna stöder dessa funktioner. EFI-skalkommandon låter dig också kopiera eller flytta filer och kataloger på filsystem som stöds och ladda och ladda ur drivrutiner. Skalet kan också använda hela TCP/IP-stacken.

EFI-skalet stöder skript som .nsh- filer , liknande DOS - batchfiler . I det här fallet exekveras skriptfilen med namnet startup.nsh automatiskt vid uppstart.

Shell-kommandonamn ärvs ofta från kommandoradstolkar ( COMMAND.COM eller Unix-skal ). EFI-skalet kan ses som en funktionell ersättning för BIOS kommandoradstolk och textgränssnitt.

Tillägg

EFI-tillägg kan laddas från nästan alla icke-flyktiga lagringsenheter som är anslutna till en dator. Till exempel kan en OEM sälja ett system med en EFI-partition på hårddisken som skulle lägga till extra funktionalitet till EFI-firmwaren som finns i moderkortets ROM.

Implementering

Intel Platform Innovation Framework för EFI

Intel Platform Innovation Framework for EFI ( Intel Innovation Toolkit på ryska ) är en uppsättning specifikationer som utvecklats av Intel tillsammans med EFI. Medan EFI definierar gränssnittet mellan operativsystemet och firmware, definierar verktygslådan strukturerna som används för att skapa inbäddad programvara på en lägre nivå än gränssnittet mellan OS och firmware.

I synnerhet stöder verktygslådan alla steg som krävs för att initiera en dator efter att den har slagits på. Dessa interna funktioner för fast programvara definieras inte som en del av EFI-specifikationen, utan ingår i plattformsinitieringsspecifikationen utvecklad av UEFI . Verktygslådan har testats på plattformar: Intel XScale , Intel Itanium och IA-32 .

Kompatibilitet med x86-operativsystem som kräver ett "legacy BIOS"-gränssnitt uppnås med hjälp av Compatibility Support Module (CSM). CSM inkluderar ett 16-bitarsprogram (CSM16) implementerat av BIOS-tillverkaren och ett lager som länkar CSM16 till verktygslådan.

Intel har utvecklat en referensimplementation för verktygslådan, med kodnamnet "Tiano". Tiano är en komplett legacy-fri implementering av inbäddad programvara som ger EFI-stöd. Tiano inkluderar inte 16-bitarsdelen av CSM, men tillhandahåller de gränssnitt som krävs av tillägg implementerade av BIOS-leverantörer. Intel tillhandahåller inte en fullständig implementering av Tiano för slutanvändare.

En del av Tiano har släppts som källkod för TianoCore-projektet som EFI Developer Kit (EDK) [5] . Denna implementering inkluderar EFI och viss hårdvaruinitieringskod, men täcker inte helt detaljerna för den direkt inbäddade programvaran. Flera licenser har använts för denna kod, inklusive BSD-licensen och Eclipse Public License .

Produkter baserade på EFI-, UEFI- och instrumentspecifikationer är tillgängliga via oberoende BIOS-tillverkare som American Megatrends (AMI) och Insyde Software . Vissa leverantörsimplementeringar är helt baserade på Tiano, medan andra överensstämmer med specifikationerna men är inte baserade på Intels referensimplementering [6] .

Plattformar som använder EFI eller verktygslåda

Itanium -baserade system som släpptes av Intel 2000 stödde EFI 1.02. Itanium 2 - system som släpptes 2002 av Hewlett-Packard stödde EFI 1.10; de kunde starta upp Windows , Linux , FreeBSD och HP-UX . Alla Itanium- eller Itanium 2-system som släpps med EFI-kompatibel firmware måste uppfylla DIG64- specifikationen .

I november 2003 introducerade Gateway Gateway 610 Media Center, det första Windows -baserade x86 - datorsystemet som använder inbäddad programvara baserad på Insyde Softwares InsydeH2O-verktygssats. BIOS-stöd implementerades med hjälp av Compatibility Support Module (CSM) för uppstart av Windows.

I januari 2006, Apple Inc. introducerade de första Macintosh-datorerna baserade på Intel- plattformen . Dessa system använder EFI och verktyg istället för Open Firmware som användes på tidigare PowerPC-plattformssystem [7] .

Den 5 april 2006 släppte Apple Boot Camp -paketet , som låter dig skapa en drivrutinsdisk för Windows XP, och som även innehåller ett icke-förstörande verktyg för diskpartitionering som låter dig installera Windows XP med Mac OS X. En firmwareuppdatering var släppte också det extra BIOS-stödet för denna EFI-implementering. Efterföljande Macintosh-modeller släpptes med uppdaterad firmware. Alla moderna Macintosh-datorer kan nu starta BIOS -kompatibla operativsystem som Windows XP, Vista och Windows 7.

Ett stort antal Intel-moderkort kommer med verktygslåda-baserad firmware[ specificera ] . Så under 2005 släpptes mer än en miljon Intel-system [8] . Nya mobiltelefoner, stationära datorer och servrar som använder verktygslådan började produceras 2006. Till exempel använder alla moderkort som är byggda på Intel 945-chipset verktygslådan. Tillverkad firmware inkluderar vanligtvis inte EFI-stöd och är begränsad till BIOS-stöd [9] .

Sedan 2005 har EFI använts i icke-PC-arkitekturer såsom inbyggda system baserade på XScale- kärnan [10] .

EDK inkluderar ett NT32-mål som gör att EFI-firmware och EFI-applikationer kan köras på Windows-applikationer.

2007 släppte Hewlett-Packard 8000-seriens multifunktionsskrivare med EFI-kompatibel firmware [11] .

Hur fungerar UEFI-start

I GPT - disklayouten innehåller EFI ( ESP ) systempartitionen med identifieraren EF00 och filsystemet FAT32 filen \efi\boot\boot[arkitekturnamn].efi , till exempel: \efi\boot\bootx64. efi. EFI BIOS-starthanteraren laddar och kör en sådan fil enligt datorsystemets arkitektur.  

Till exempel, för att skapa en startbar USB-flashenhet med Windows behöver du bara markera USB-flashenheten i GPT, skapa en aktiv partition på den med FAT32-filsystemet och partitions-ID EF00, kopiera sedan alla filer från CD:n med distributionen av operativsystemet.

Ett exempel på att skapa en GPT-disk i GNU/Linux-operativsystemet:

I de flesta UEFI- implementeringar är det också möjligt att starta upp i kompatibilitetsläge från en MBR-disk.

Apple använder inte ESP för uppstart, bootstrap överför kontrollen till adressen skriven i NVRAM (BootRom): /System/Library/CoreServices/boot.efi med hjälp av bless-verktyget [användaren kan ändra detta värde med samma verktyg], med det du kan också se aktuell startenhet och startalternativ:

bless --info --getBoot --verbose

Operativsystem

Microsoft Windows

Itanium- versioner av Windows 2000 (Advanced Server Limited Edition och Datacenter Server Limited Edition) fick EFI 1.1-stöd 2002.

Windows Server 2003 för IA-64 , Windows XP 64-bitars och Windows 2000 Advanced Server Limited Edition för Intel Itanium -processorfamiljen stöder EFI enligt definitionen för den plattformen av DIG64- specifikationen [15] .

Microsoft introducerade UEFI-stöd i 64-bitars Windows-operativsystem från och med Windows Server 2008 och Windows Vista Service Pack 1 [16] [17] . Microsoft hävdar att bristen på officiellt EFI-stöd på 32-bitars processorer beror på otillräckligt stöd från PC-tillverkare och leverantörer. Microsofts migrering till 64-bitars operativsystem tillåter inte användning av EFI 1.10 eftersom 64-bitars processortillägg som krävs av detta operativsystem inte stöds av processormiljön. x86-64-stöd inkluderades i UEFI 2.0.

Microsoft släppte en  video med Andrew Ritz och Jamie Schwarz som förklarar implementeringen av UEFI-stöd i Windows Vista och Windows Server 2008 [  18] .

Grafiska funktioner

EFI stöder grafiska menyer och vissa funktioner som de som implementeras av Aptio eller Great Wall UEFI [19] .

Kritik

EFI har kritiserats för att lägga till komplexitet till systemet utan betydande fördelar [20] och för att ha övergett alternativa bootloaders med öppen källkod som OpenBIOS och coreboot [21] .

2011 varnade användare och utvecklare av Linux-baserade operativsystem för att implementering av Secure Boot -teknik på det sätt som krävs av Microsoft för Windows 8 -enheter avsevärt skulle begränsa friheten för användare av dessa enheter att välja eller använda ett operativsystem [22] [23 ] .

I september 2018 publicerade ett antivirusföretag en rapport om LoJax, det första kända rootkitet för ett UEFI-system som setts i verklig användning. Företagets ingenjörer upptäckte ett fall av att framgångsrikt besegra SPI-delsystemet och spara rootkit i detta undersystems flashenhet. Tack vare detta kunde skadlig programvara finnas kvar i datorn inte bara när hårddisken formaterades om, utan även när själva hårddisken byttes ut. Den enda chansen att bli av med ett sådant rootkit är att skriva över flashminnet för UEFI-systemets firmware.

Anteckningar

  1. Dong Wei. Bortom BIOS (förord). Intel Press, 2006, ISBN 978-0-9743649-0-2
  2. Information om Unified EFI Forum . Hämtad 13 juni 2008. Arkiverad från originalet 10 juni 2008.
  3. FAT-drivrutinsinformation för EFI  (nedlänk) (kräver registrering)
  4. Information om EFI-skalet (nedlänk) . Hämtad 16 juni 2008. Arkiverad från originalet 28 september 2007. 
  5. SourceForge.net: tianocore . Hämtad 6 juli 2008. Arkiverad från originalet 28 april 2021.
  6. Intel Platform Innovation Framework för EFI Arkiverad 21 augusti 2011 på Wayback Machine på Intels webbplats
  7. Universal Binary Programming Guidelines, andra upplagan: Extensible Firmware Interface (EFI) Arkiverad 3 januari 2009. Apple dator
  8. Översikt över ramverk Arkiverad 18 november 2008 på Wayback Machine Intel
  9. Information om EFI på Intel-kort . Hämtad 6 juli 2008. Arkiverad från originalet 27 juli 2020.
  10. Översikt över Intel Platform Innovation Framework . Hämtad 6 juli 2008. Arkiverad från originalet 18 november 2008.
  11. HP-skrivare  (otillgänglig länk)
  12. EFI-version av Grub (Debian Linux) . Hämtad 7 juli 2008. Arkiverad från originalet 30 maj 2008.
  13. Laddar Linux OS utan en bootloader / Sudo Null IT News . Hämtad 21 juli 2017. Arkiverad från originalet 7 augusti 2016.
  14. REFIT - Windows Vista och EFI . Hämtad 7 juli 2008. Arkiverad från originalet 5 september 2008.
  15. Extensible Firmware Interface Arkiverad 30 augusti 2006. Microsoft Windows Server TechCenter
  16. Microsoft bombshell: inget EFI-stöd för Vista Arkiverad 17 oktober 2006.
  17. Mary Jo Foley. Vista SP1 beta 1 lanseras i mitten av juli (nedlänk) . ZDNet (8 juli 2007). Hämtad 20 juli 2007. Arkiverad från originalet 2 mars 2012. 
  18. Microsoft Pre-OS-video . Hämtad 7 juli 2008. Arkiverad från originalet 9 april 2008.
  19. Intel visar PC som startar upp Windows med UEFI-firmware Arkiverad 20 december 2007.
  20. Linux: Linus på det utbyggbara fasta gränssnittet
  21. Intervju: Ronald G Minnich (länk ej tillgänglig) . Tillträdesdatum: 7 juli 2008. Arkiverad från originalet den 29 januari 2011. 
  22. Kommer din dators "Secure Boot" att visa sig vara "Restricted Boot"?  (engelska) . Free Software Foundation . Hämtad 24 november 2013. Arkiverad från originalet 28 november 2013.
  23. Rod Smith. Hanterar säker start  . Hantera EFI-startladdare för Linux . Hämtad 24 november 2013. Arkiverad från originalet 6 november 2013.

Länkar

Se även