Udvidbar firmwaregrænseflade

Extensible Firmware Interface ( EFI ) (fra  engelsk  -  "expandable firmware interface ") - en grænseflade mellem operativsystemet og firmwaren , der styrer udstyrets lavniveaufunktioner, dets hovedformål er at initialisere udstyret korrekt, når systemet drejes tænde og overføre kontrol til bootloaderen eller direkte til operativsystemets kerne. EFI er beregnet til at erstatte BIOS  , en grænseflade, der traditionelt bruges af alle IBM PC-kompatible pc'er. Den første EFI-specifikation blev udviklet af Intel , senere blev fornavnet opgivet, og den seneste version af standarden kaldes Unified Extensible Firmware Interface ( UEFI ). UEFI udvikles i øjeblikket af Unified EFI Forum .

Historie

EFI blev oprindeligt skabt til de første Intel-HP Itanium-systemer i midten af ​​1990'erne . Begrænsningerne af PC-BIOS (16-bit eksekverbar kode, 1 MB adresserbar hukommelse, IBM PC/AT hardware begrænsninger osv.) var åbenbart ikke tilladt på de store serverplatforme Itanium var beregnet til at blive brugt på. Det oprindelige navn er Intel Boot Initiative ( Intel Boot Initiative ), senere omdøbt til EFI [1] :

Indhold

Grænsefladen defineret af EFI-specifikationen inkluderer datatabeller, der indeholder oplysninger om platformen, boot- og runtime-tjenester, der er tilgængelige for operativsystemets (OS)-indlæseren og selve OS. Nogle eksisterende BIOS -udvidelser , såsom ACPI og SMBIOS , er også til stede i EFI, fordi de ikke kræver en 16-bit runtime-grænseflade.

Tjenester

EFI definerer "boot-tjenester", som omfatter understøttelse af en tekst- og grafisk konsol på forskellige enheder, bus-, blok- og filtjenester samt runtime-tjenester såsom dato, klokkeslæt og ikke-flygtig hukommelse.

Enhedsdrivere

Ud over standard, arkitektur-specifikke enhedsdrivere giver EFI-specifikationen et platform-uafhængigt drivermiljø kaldet EFI Byte Code (EBC). Systemfirmware kræves af UEFI - specifikationen for at have en fortolker til alle EBC-billeder, der er indlæst eller kan indlæses i miljøet. I denne forstand ligner EBC Open Firmware , den hardwareuafhængige firmware, der bruges i Apple Macintosh og Sun Microsystems SPARC -computere .

Nogle arkitekturspecifikke (ikke-EBC) EFI-drivertyper kan have grænseflader til brug af operativsystemet. Dette gør det muligt for OS at bruge EFI til grundlæggende grafik og netværksunderstøttelse, før de OS-definerede drivere indlæses.

Download Manager

EFI boot manager bruges til at vælge og starte et OS, hvilket eliminerer behovet for en dedikeret boot-mekanisme (OS-indlæseren er en EFI-applikation).

Diskunderstøttelse

Ud over standard MBR -disklayoutet har EFI GPT -understøttelse , som er fri for MBR-specifikke begrænsninger. EFI-specifikationen inkluderer ikke beskrivelser af filsystemer, men EFI-implementeringer understøtter generelt FAT32 som et filsystem [3] .

EFI shell

EFI - fællesskabet har skabt et åbent shell-miljø ( EFI shell ) [4] .  Brugeren kan indlæse en EFI-shell for at udføre nogle operationer i stedet for at starte operativsystemet. Skallen er en EFI-applikation; den kan opholde sig permanent i platformens ROM eller på en enhed, hvis drivere er i ROM'en.

Skallen kan bruges til at køre andre EFI-applikationer såsom konfiguration, OS-installation, diagnostik, konfigurationsværktøjer og firmwareopdateringer. Det kan også bruges til at afspille cd- eller dvd-medier uden at starte operativsystemet, forudsat at EFI-applikationerne understøtter disse funktioner. EFI shell-kommandoer giver dig også mulighed for at kopiere eller flytte filer og mapper på understøttede filsystemer og indlæse og fjerne drivere. Skallen kan også bruge hele TCP/IP-stakken.

EFI-skallen understøtter scripting som .nsh- filer , svarende til DOS - batchfiler . I dette tilfælde udføres scriptfilen med navnet startup.nsh automatisk ved opstart.

Shell-kommandonavne arves ofte fra kommandolinjefortolkere ( COMMAND.COM eller Unix-shell ). EFI-skallen kan ses som en funktionel erstatning for BIOS-kommandolinjefortolkeren og tekstgrænsefladen.

Udvidelser

EFI-udvidelser kan indlæses fra næsten enhver ikke-flygtig lagerenhed, der er tilsluttet en computer. For eksempel kan en OEM sælge et system med en EFI-partition på harddisken, som ville tilføje ekstra funktionalitet til EFI-firmwaren, der findes i bundkortets ROM.

Implementering

Intel Platform Innovation Framework for EFI

Intel Platform Innovation Framework for EFI ( Intel Innovation Toolkit på russisk ) er et sæt specifikationer udviklet af Intel sammen med EFI. Mens EFI definerer grænsefladen mellem OS og firmware, definerer værktøjssættet de strukturer, der bruges til at skabe indlejret software på et lavere niveau end grænsefladen mellem OS og firmware.

Især understøtter værktøjssættet alle de nødvendige trin for at initialisere en computer, efter at den er blevet tændt. Disse interne firmwarefunktioner er ikke defineret som en del af EFI-specifikationen, men er inkluderet i Platform Initialization Specification udviklet af UEFI . Værktøjssættet er blevet testet på platforme: Intel XScale , Intel Itanium og IA-32 .

Kompatibilitet med x86-operativsystemer, der kræver en "legacy BIOS"-grænseflade, opnås ved hjælp af Compatibility Support Module (CSM). CSM inkluderer et 16-bit program (CSM16) implementeret af BIOS-producenten og et lag, der forbinder CSM16 til værktøjskassen.

Intel har udviklet en referenceimplementering til værktøjssættet, kodenavnet "Tiano". Tiano er en komplet legacy-fri implementering af indlejret software, der giver EFI-support. Tiano inkluderer ikke 16-bit-delen af ​​CSM, men leverer de grænseflader, der kræves af tilføjelser implementeret af BIOS-leverandører. Intel leverer ikke en komplet implementering af Tiano til slutbrugere.

En del af Tiano er blevet frigivet som kildekode til TianoCore-projektet som EFI Developer Kit (EDK) [5] . Denne implementering inkluderer EFI og noget hardwareinitialiseringskode, men dækker ikke fuldt ud detaljerne ved den direkte indlejrede software. Adskillige licenser er blevet brugt til denne kode, inklusive BSD-licensen og Eclipse Public License .

Produkter baseret på EFI, UEFI og instrumenteringsspecifikationer er tilgængelige gennem uafhængige BIOS-producenter såsom American Megatrends (AMI) og Insyde Software . Nogle leverandørimplementeringer er udelukkende baseret på Tiano, mens andre er i overensstemmelse med specifikationerne, men er ikke baseret på Intels referenceimplementering [6] .

Platforme, der bruger EFI eller værktøjssæt

Itanium- baserede systemer udgivet af Intel i 2000 understøttede EFI 1.02. Itanium 2 - systemer udgivet i 2002 af Hewlett-Packard understøttede EFI 1.10; de kunne starte Windows , Linux , FreeBSD og HP-UX . Alle Itanium- eller Itanium 2-systemer, der udgives med EFI-kompatibel firmware, skal overholde DIG64- specifikationen .

I november 2003 introducerede Gateway Gateway 610 Media Center, det første Windows-baserede x86 - computersystem til at bruge indlejret software baseret på Insyde Softwares InsydeH2O-værktøjssæt. BIOS-understøttelse blev implementeret ved hjælp af Compatibility Support Module (CSM) til opstart af Windows.

I januar 2006, Apple Inc. introducerede de første Macintosh-computere baseret på Intel -platformen . Disse systemer bruger EFI og værktøj i stedet for den åbne firmware , der blev brugt på tidligere PowerPC platformsystemer [7] .

Den 5. april 2006 udgav Apple Boot Camp -pakken , som giver dig mulighed for at oprette en Windows XP-driverdisk, og som også indeholder et ikke-destruktivt diskpartitioneringsværktøj, der giver dig mulighed for at installere Windows XP med Mac OS X. En firmwareopdatering blev også udgivet den tilføjede BIOS-understøttelse til denne EFI-implementering. Efterfølgende Macintosh-modeller blev udgivet med opdateret firmware. Alle moderne Macintosh-computere kan nu starte BIOS -kompatible operativsystemer som Windows XP, Vista og Windows 7.

Et stort antal Intel-bundkort kommer med toolkit-baseret firmware[ angiv ] . Så i løbet af 2005 blev mere end en million Intel-systemer frigivet [8] . Nye mobiltelefoner, stationære computere og servere, der bruger værktøjskassen, begyndte at blive produceret i 2006. For eksempel bruger alle bundkort, der er bygget på Intel 945-chipsættet, værktøjssættet. Men fremstillet firmware inkluderer normalt ikke EFI-understøttelse og er begrænset til BIOS-understøttelse [9] .

Siden 2005 er EFI blevet brugt i ikke-pc-arkitekturer såsom indlejrede systemer baseret på XScale -kernen [10] .

EDK inkluderer et NT32-mål, der tillader EFI-firmware og EFI-applikationer at køre på Windows-applikationer.

I 2007 udgav Hewlett-Packard 8000-seriens multifunktionsprinter med EFI-kompatibel firmware [11] .

Hvordan fungerer UEFI boot

I GPT -disklayoutet indeholder EFI ( ESP ) systempartitionen med identifikatoren EF00 og FAT32 -filsystemet filen \efi\boot\boot[arkitekturnavn].efi , for eksempel: \efi\boot\bootx64. efi. EFI BIOS-bootloaderen indlæser og udfører en sådan fil i henhold til computersystemets arkitektur.  

For eksempel, for at oprette et bootbart USB-flashdrev med Windows , skal du blot markere USB-flashdrevet i GPT, oprette en aktiv partition på det med FAT32-filsystemet og partitions-ID EF00, og derefter kopiere alle filerne fra cd'en med operativsystemets distribution.

Et eksempel på oprettelse af en GPT-disk i GNU/Linux-operativsystemet:

I de fleste UEFI -implementeringer er det også muligt at starte op i kompatibilitetstilstand fra en MBR-disk.

Apple bruger ikke ESP til opstart, bootstrap overfører kontrol til adressen skrevet i NVRAM (BootRom): /System/Library/CoreServices/boot.efi ved hjælp af bless-værktøjet [brugeren kan ændre denne værdi ved hjælp af det samme hjælpeprogram], med det du kan også se den aktuelle opstartsenhed og opstartsmuligheder:

bless --info --getBoot --verbose

Operativsystemer

Microsoft Windows

Itanium- versioner af Windows 2000 (Advanced Server Limited Edition og Datacenter Server Limited Edition) modtog EFI 1.1-understøttelse i 2002.

Windows Server 2003 til IA-64 , Windows XP 64-bit og Windows 2000 Advanced Server Limited Edition til Intel Itanium -processorfamilien understøtter EFI som defineret for den pågældende platform af DIG64- specifikationen [15] .

Microsoft introducerede UEFI-understøttelse i 64-bit Windows-operativsystemer startende med Windows Server 2008 og Windows Vista Service Pack 1 [16] [17] . Microsoft hævder, at manglen på officiel EFI-understøttelse på 32-bit CPU'er skyldes utilstrækkelig support fra pc-producenter og -leverandører. Microsofts migrering til 64-bit OS'er tillader ikke brugen af ​​EFI 1.10, fordi de 64-bit processorudvidelser, der kræves af dette OS, ikke understøttes af processormiljøet. x86-64-understøttelse var inkluderet i UEFI 2.0.

Microsoft udgav en  video med Andrew Ritz og Jamie Schwarz , der forklarer implementeringen af ​​UEFI-understøttelse i Windows Vista og Windows Server 2008 [  18] .

Grafiske funktioner

EFI understøtter grafiske menuer og nogle funktioner, såsom dem implementeret af Aptio eller Great Wall UEFI [19] .

Kritik

EFI er blevet kritiseret for at tilføje kompleksitet til systemet uden væsentlige fordele [20] og for at opgive fuldt open source alternative bootloadere såsom OpenBIOS og coreboot [21] .

I 2011 advarede brugere og udviklere af Linux-baserede operativsystemer om , at implementering af Secure Boot -teknologi på den måde, der kræves af Microsoft til Windows 8 -enheder, ville begrænse friheden for brugere af disse enheder til at vælge eller betjene et operativsystem markant [22] [23 ] .

I september 2018 offentliggjorde et antivirusfirma en rapport om LoJax, det første kendte rootkit til et UEFI-system set i reel brug. Virksomhedens ingeniører opdagede en sag om succesfuldt at besejre SPI-undersystemet og gemme rootkittet i dette undersystems flashdrev. Takket være dette kunne malware blive i computeren, ikke kun når harddisken blev omformateret, men også når selve harddisken blev udskiftet. Den eneste chance for at slippe af med et sådant rootkit er at overskrive flashhukommelsen på UEFI-systemets firmware.

Noter

  1. Dong Wei. Ud over BIOS (forord). Intel Press, 2006, ISBN 978-0-9743649-0-2
  2. Information om Unified EFI Forum . Hentet 13. juni 2008. Arkiveret fra originalen 10. juni 2008.
  3. FAT Driver Information for EFI  (downlink) (kræver registrering)
  4. Information om EFI-skallen (downlink) . Hentet 16. juni 2008. Arkiveret fra originalen 28. september 2007. 
  5. SourceForge.net: tianocore . Hentet 6. juli 2008. Arkiveret fra originalen 28. april 2021.
  6. Intel Platform Innovation Framework for EFI Arkiveret 21. august 2011 på Wayback Machine på Intels websted
  7. Universal Binary Programming Guidelines, anden udgave: Extensible Firmware Interface (EFI) Arkiveret 3. januar 2009. Apple computer
  8. Oversigt over rammeværk Arkiveret 18. november 2008 på Wayback Machine Intel
  9. Information om EFI på Intel-kort . Hentet 6. juli 2008. Arkiveret fra originalen 27. juli 2020.
  10. Oversigt over Intel Platform Innovation Framework . Hentet 6. juli 2008. Arkiveret fra originalen 18. november 2008.
  11. HP-printere  (utilgængeligt link)
  12. EFI-version af Grub (Debian Linux) . Hentet 7. juli 2008. Arkiveret fra originalen 30. maj 2008.
  13. Indlæser Linux OS uden en bootloader / Sudo Null IT News . Hentet 21. juli 2017. Arkiveret fra originalen 7. august 2016.
  14. REFIt - Windows Vista og EFI . Hentet 7. juli 2008. Arkiveret fra originalen 5. september 2008.
  15. Extensible Firmware Interface Arkiveret 30. august 2006. Microsoft Windows Server TechCenter
  16. Microsoft bombshell: ingen EFI-understøttelse for Vista Arkiveret 17. oktober 2006.
  17. Mary Jo Foley. Vista SP1 beta 1 lanceres i midten af ​​juli (downlink) . ZDNet (8. juli 2007). Hentet 20. juli 2007. Arkiveret fra originalen 2. marts 2012. 
  18. Microsoft Pre-OS Video . Hentet 7. juli 2008. Arkiveret fra originalen 9. april 2008.
  19. Intel viser pc, der starter Windows med UEFI-firmware Arkiveret 20. december 2007.
  20. Linux: Linus på den udvidelige firmwaregrænseflade
  21. Interview: Ronald G Minnich (link utilgængeligt) . Dato for adgang: 7. juli 2008. Arkiveret fra originalen 29. januar 2011. 
  22. Vil din computers "Secure Boot" vise sig at være "Restricted Boot"?  (engelsk) . Free Software Foundation . Hentet 24. november 2013. Arkiveret fra originalen 28. november 2013.
  23. Rod Smith. Beskæftiger sig med sikker opstart  . Håndtering af EFI Boot Loaders til Linux . Hentet 24. november 2013. Arkiveret fra originalen 6. november 2013.

Links

Se også