Extensible Firmware Interface ( EFI ) (din engleză - „expandable firmware interface ”) - o interfață între sistemul de operare și firmware care controlează funcțiile de nivel scăzut ale echipamentului, scopul său principal este de a inițializa corect echipamentul atunci când sistemul este pornit porniți și transferați controlul către bootloader -ul sau direct către nucleul sistemului de operare. EFI este destinat să înlocuiască BIOS -ul , o interfață folosită în mod tradițional de toate computerele personale IBM compatibile cu PC- uri. Prima specificație EFI a fost dezvoltată de Intel , mai târziu prenumele a fost abandonat și cea mai recentă versiune a standardului se numește Unified Extensible Firmware Interface ( UEFI ). UEFI este în prezent dezvoltat de Unified EFI Forum .
EFI a fost creat inițial pentru primele sisteme Intel-HP Itanium la mijlocul anilor 1990 . Limitările PC-BIOS (cod executabil pe 16 biți, memorie adresabilă de 1 MB, limitări hardware IBM PC/AT etc.) nu erau permise în mod evident pe platformele de server mari pe care trebuia să fie utilizat Itanium. Numele original este Intel Boot Initiative ( Intel Boot Initiative ), redenumit ulterior EFI [1] :
Interfața definită de specificația EFI include tabele de date care conțin informații despre platformă, servicii de boot și runtime care sunt disponibile pentru încărcătorul sistemului de operare (OS) și OS însuși. Unele extensii BIOS existente , cum ar fi ACPI și SMBIOS , sunt de asemenea prezente în EFI, deoarece nu necesită o interfață de rulare pe 16 biți.
EFI definește „servicii de pornire” care includ suport pentru o consolă text și grafică pe diferite dispozitive, servicii de magistrală, bloc și fișiere, precum și servicii de rulare, cum ar fi data, ora și memoria nevolatilă.
În plus față de driverele standard, specifice arhitecturii, specificația EFI oferă un mediu de driver independent de platformă, numit EFI Byte Code (EBC). Firmware -ul sistemului este cerut de specificația UEFI pentru a avea un interpret pentru orice imagini EBC care sunt încărcate sau pot fi încărcate în mediu. În acest sens, EBC este similar cu Open Firmware , firmware-ul independent de hardware folosit în computerele Apple Macintosh și Sun Microsystems SPARC .
Unele tipuri de drivere EFI specifice arhitecturii (non-EBC) pot avea interfețe pentru utilizare de către sistemul de operare. Acest lucru permite sistemului de operare să utilizeze EFI pentru suport grafic de bază și rețea înainte ca driverele definite de sistemul de operare să fie încărcate.
Managerul de boot EFI este utilizat pentru a selecta și a porni un sistem de operare, eliminând necesitatea unui mecanism de pornire dedicat (încărcătorul de sistem de operare este o aplicație EFI).
Pe lângă aspectul standard al discului MBR , EFI are suport GPT , care nu are limitări specifice MBR. Specificația EFI nu include descrieri pentru sistemele de fișiere, cu toate acestea, implementările EFI acceptă în general FAT32 ca sistem de fișiere [3] .
Comunitatea EFI a creat un mediu shell deschis ( shell EFI ) [4] . Utilizatorul poate încărca un shell EFI pentru a efectua unele operațiuni în loc să pornească sistemul de operare. Shell-ul este o aplicație EFI; poate locui permanent în ROM-ul platformei sau pe un dispozitiv ale cărui drivere se află în ROM.
Shell-ul poate fi folosit pentru a rula alte aplicații EFI, cum ar fi configurarea, instalarea sistemului de operare, diagnosticarea, utilitarele de configurare și actualizările de firmware. Poate fi folosit și pentru a reda suporturi CD sau DVD fără a porni sistemul de operare, cu condiția ca aplicațiile EFI să accepte aceste caracteristici. Comenzile shell EFI vă permit, de asemenea, să copiați sau să mutați fișiere și directoare pe sistemele de fișiere acceptate și să încărcați și să descărcați drivere. Shell-ul poate folosi, de asemenea, stiva TCP/IP completă.
Shell-ul EFI acceptă scripting ca fișiere .nsh , similar fișierelor batch DOS . În acest caz, fișierul script numit startup.nsh este executat automat la pornire.
Numele comenzilor Shell sunt adesea moștenite de la interpreții de linie de comandă ( COMMAND.COM sau shell Unix ). Shell-ul EFI poate fi văzut ca un înlocuitor funcțional pentru interpretul de linie de comandă BIOS și interfața text.
Extensiile EFI pot fi încărcate de pe aproape orice dispozitiv de stocare nevolatil atașat la un computer. De exemplu, un OEM ar putea vinde un sistem cu o partiție EFI pe hard disk care ar adăuga funcționalitate suplimentară firmware-ului EFI care se află în ROM-ul plăcii de bază.
Intel Platform Innovation Framework pentru EFI ( Intel Innovation Toolkit în rusă ) este un set de specificații dezvoltat de Intel împreună cu EFI. În timp ce EFI definește interfața dintre sistemul de operare și firmware, setul de instrumente definește structurile utilizate pentru a crea software încorporat la un nivel mai scăzut decât interfața dintre sistemul de operare și firmware.
În special, setul de instrumente acceptă toți pașii necesari pentru a inițializa un computer după ce acesta a fost pornit. Aceste capabilități interne de firmware nu sunt definite ca parte a specificației EFI, ci sunt incluse în Specificația de inițializare a platformei dezvoltată de UEFI . Setul de instrumente a fost testat pe platforme: Intel XScale , Intel Itanium și IA-32 .
Compatibilitatea cu sistemele de operare x86 care necesită o interfață „BIOS moștenită” se realizează folosind Modulul de suport pentru compatibilitate (CSM). CSM include un program pe 16 biți (CSM16) implementat de producătorul BIOS și un strat care leagă CSM16 la setul de instrumente.
Intel a dezvoltat o implementare de referință pentru setul de instrumente, cu numele de cod „Tiano”. Tiano este o implementare completă fără moștenire a software-ului încorporat care oferă suport EFI. Tiano nu include partea pe 16 biți a CSM-ului, dar furnizează interfețele cerute de suplimentele implementate de furnizorii de BIOS. Intel nu oferă o implementare completă a Tiano pentru utilizatorii finali.
O parte din Tiano a fost lansată ca cod sursă pentru proiectul TianoCore ca EFI Developer Kit (EDK) [5] . Această implementare include EFI și un cod de inițializare hardware, dar nu acoperă în totalitate specificul software-ului încorporat direct. Pentru acest cod au fost folosite mai multe licențe, inclusiv licența BSD și licența publică Eclipse .
Produsele bazate pe EFI, UEFI și specificațiile de instrumente sunt disponibile prin intermediul producătorilor independenți de BIOS, cum ar fi American Megatrends (AMI) și Insyde Software . Unele implementări ale furnizorilor se bazează în întregime pe Tiano, în timp ce altele sunt conforme cu specificațiile, dar nu se bazează pe implementarea de referință Intel [6] .
Sistemele bazate pe Itanium lansate de Intel în 2000 au suportat EFI 1.02. Sistemele Itanium 2 lansate în 2002 de Hewlett-Packard au suportat EFI 1.10; ar putea porni Windows , Linux , FreeBSD și HP-UX . Toate sistemele Itanium sau Itanium 2 care sunt lansate cu firmware compatibil EFI trebuie să respecte specificația DIG64 .
În noiembrie 2003, Gateway a introdus Gateway 610 Media Center, primul sistem de computer x86 bazat pe Windows care utilizează software încorporat bazat pe setul de instrumente InsydeH2O al Insyde Software. Suportul BIOS a fost implementat folosind Modulul de suport pentru compatibilitate (CSM) pentru pornirea Windows.
În ianuarie 2006, Apple Inc. a introdus primele computere Macintosh bazate pe platforma Intel . Aceste sisteme folosesc EFI și instrumente în loc de Open Firmware care a fost folosit pe sistemele anterioare cu platforme PowerPC [7] .
Pe 5 aprilie 2006, Apple a lansat pachetul Boot Camp , care vă permite să creați un disc de driver pentru Windows XP și, de asemenea, conține un instrument de partiționare a discului nedistructiv care vă permite să instalați Windows XP cu Mac OS X. O actualizare de firmware a fost a lansat, de asemenea, că a adăugat suport BIOS pentru aceste implementări EFI. Modelele Macintosh ulterioare au fost lansate cu firmware actualizat. Toate computerele moderne Macintosh pot porni acum sisteme de operare compatibile cu BIOS , cum ar fi Windows XP, Vista și Windows 7.
Un număr mare de plăci de bază Intel vin cu firmware bazat pe un set de instrumente[ specificați ] . Astfel, în cursul anului 2005 au fost lansate peste un milion de sisteme Intel [8] . Noi telefoane mobile, computere desktop și servere care utilizează setul de instrumente au început să fie produse în 2006. De exemplu, toate plăcile de bază care sunt construite pe chipset-ul Intel 945 folosesc setul de instrumente. Cu toate acestea, firmware-ul fabricat de obicei nu include suport EFI și este limitat la suportul BIOS [9] .
Din 2005, EFI a fost utilizat în arhitecturi non-PC, cum ar fi sistemele încorporate bazate pe nucleul XScale [10] .
EDK include o țintă NT32 care permite firmware-ului EFI și aplicațiilor EFI să ruleze pe aplicații Windows.
În 2007, Hewlett-Packard a lansat imprimantele multifuncționale din seria 8000 cu firmware compatibil EFI [11] .
În aspectul discului GPT , partiția de sistem EFI ( ESP ) cu identificatorul EF00 și sistemul de fișiere FAT32 conține fișierul \efi\boot\boot[nume arhitectură].efi , de exemplu: \efi\boot\bootx64. efi. Bootloader-ul EFI BIOS încarcă și execută un astfel de fișier conform arhitecturii sistemului informatic.
De exemplu, pentru a crea o unitate flash USB bootabilă cu Windows , trebuie doar să marcați unitatea flash USB în GPT, să creați o partiție activă pe ea cu sistemul de fișiere FAT32 și ID-ul partiției EF00, apoi să copiați toate fișierele de pe CD cu distribuția sistemului de operare.
Un exemplu de creare a unui disc GPT în sistemul de operare GNU/Linux:
De asemenea, în majoritatea implementărilor UEFI , este posibil să porniți în modul de compatibilitate de pe un disc MBR.
Apple nu folosește ESP pentru pornire, bootstrap transferă controlul către adresa scrisă în NVRAM (BootRom): /System/Library/CoreServices/boot.efi folosind utilitarul bless [utilizatorul poate modifica această valoare folosind același utilitar], cu acesta de asemenea, puteți vedea dispozitivul de pornire curent și opțiunile de pornire:
bless --info --getBoot --verbose
Versiunile Itanium ale Windows 2000 (Advanced Server Limited Edition și Datacenter Server Limited Edition) au primit suport EFI 1.1 în 2002.
Windows Server 2003 pentru IA-64 , Windows XP pe 64 de biți și Windows 2000 Advanced Server Limited Edition pentru familia de procesoare Intel Itanium acceptă EFI așa cum este definit pentru platforma respectivă de specificația DIG64 [15] .
Microsoft a introdus suportul UEFI în sistemele de operare Windows pe 64 de biți începând cu Windows Server 2008 și Windows Vista Service Pack 1 [16] [17] . Microsoft susține că lipsa suportului oficial EFI pe procesoarele pe 32 de biți se datorează suportului insuficient din partea producătorilor și vânzătorilor de computere. Migrarea Microsoft la sistemele de operare pe 64 de biți nu permite utilizarea EFI 1.10, deoarece extensiile de procesor pe 64 de biți cerute de acest sistem de operare nu sunt acceptate de mediul procesorului. Suportul x86-64 a fost inclus în UEFI 2.0.
Microsoft a lansat un videoclip cu Andrew Ritz și Jamie Schwarz care explică implementarea suportului UEFI în Windows Vista și Windows Server 2008 [ 18] .
EFI acceptă meniuri grafice și unele caracteristici precum cele implementate de Aptio sau Great Wall UEFI [19] .
EFI a fost criticat pentru că a adăugat complexitate sistemului fără beneficii semnificative [20] și pentru că a abandonat încărcătoarele alternative complet open source, cum ar fi OpenBIOS și coreboot [21] .
În 2011, utilizatorii și dezvoltatorii sistemelor de operare bazate pe Linux au avertizat că implementarea tehnologiei Secure Boot în modul cerut de Microsoft pentru dispozitivele Windows 8 ar limita în mod semnificativ libertatea utilizatorilor acestor dispozitive de a alege sau de a opera un sistem de operare [22] [23 ]. ] .
În septembrie 2018, o companie de antivirus a publicat un raport despre LoJax, primul rootkit cunoscut pentru un sistem UEFI văzut în uz real. Inginerii companiei au descoperit un caz de înfrângere cu succes a subsistemului SPI și de salvare a rootkit-ului în unitatea flash a acestui subsistem. Datorită acestui fapt, malware-ul ar putea rămâne în computer nu numai atunci când hard disk-ul a fost reformatat, ci și atunci când hard disk-ul în sine a fost înlocuit. Singura șansă de a scăpa de un astfel de rootkit este să suprascrieți memoria flash a firmware-ului sistemului UEFI.
ale sistemelor de operare | Aspecte|||||
---|---|---|---|---|---|
| |||||
Tipuri |
| ||||
Nucleu |
| ||||
Managementul proceselor |
| ||||
Gestionarea și adresarea memoriei |
| ||||
Instrumente de încărcare și inițializare | |||||
coajă | |||||
Alte | |||||
Categorie Wikimedia Commons Wikibooks Wiktionar |