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 .
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] :
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.
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.
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.
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).
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 - 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.
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.
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] .
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] .
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
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] .
EFI understøtter grafiske menuer og nogle funktioner, såsom dem implementeret af Aptio eller Great Wall UEFI [19] .
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.
af operativsystemer | Aspekter|||||
---|---|---|---|---|---|
| |||||
Typer |
| ||||
Nucleus |
| ||||
Procesledelse _ |
| ||||
Hukommelseshåndtering og adressering | |||||
Indlæsnings- og initialiseringsværktøjer | |||||
skal | |||||
Andet | |||||
Kategori Wikimedia Commons Wikibooks Wiktionary |