close

Interfaccia firmware estensibile

Vai alla navigazione Vai alla ricerca
Image
Logo UEFI
Image
Posizione di EFI nello stack del software

Extensible Firmware Interface ( EFI ) (  dall'inglese  -  "expandable firmware interface ") - un'interfaccia tra il sistema operativo e il firmware che controlla le funzioni di basso livello dell'apparecchiatura, il suo scopo principale è inizializzare correttamente l'apparecchiatura quando il sistema viene acceso acceso e trasferire il controllo al bootloader o direttamente al kernel del sistema operativo. EFI è destinato a sostituire il BIOS  , un'interfaccia tradizionalmente utilizzata da tutti i personal computer IBM compatibili con PC. La prima specifica EFI è stata sviluppata da Intel , in seguito il nome è stato abbandonato e l'ultima versione dello standard è chiamata Unified Extensible Firmware Interface ( UEFI ). UEFI è attualmente in fase di sviluppo da parte dell'Unified EFI Forum .

Storia

EFI è stato originariamente creato per i primi sistemi Intel-HP Itanium a metà degli anni '90 . Le limitazioni di PC-BIOS (codice eseguibile a 16 bit, 1 MB di memoria indirizzabile, limitazioni hardware IBM PC/AT , ecc.) non erano ovviamente consentite sulle grandi piattaforme server su cui Itanium doveva essere utilizzato. Il nome originale è Intel Boot Initiative ( Intel Boot Initiative ), successivamente ribattezzato EFI [1] :

  • la specifica EFI 1.02 è stata rilasciata da Intel il 12 dicembre 2000 (la versione 1.01 presentava problemi legali sui marchi ed è stata rapidamente ritirata);
  • La specifica EFI 1.10 è stata rilasciata il 1° dicembre 2002. Comprendeva il modello del driver EFI e diversi miglioramenti minori rispetto alla versione 1.02;
  • nel 2005, Intel ha presentato questa specifica all'UEFI Forum, che ora è responsabile dello sviluppo e della promozione di EFI [2] . EFI è stata rinominata Unified EFI (UEFI) per riflettere questa modifica, con la maggior parte della documentazione che utilizza entrambi i termini;
  • Il Forum UEFI ha rilasciato la specifica UEFI 2.1 il 7 gennaio 2007. Ha aggiunto e migliorato la crittografia, l'autenticazione di rete e l'architettura dell'interfaccia utente ;
  • la versione 2.3.1 è stata adottata nell'aprile 2011;
  • la versione 2.4 è stata adottata nel luglio 2013;
  • la versione 2.5 è stata adottata nell'aprile 2015.
  • la versione 2.6 è stata adottata nel gennaio 2016.

Contenuti

L'interfaccia definita dalla specifica EFI include tabelle di dati contenenti informazioni sulla piattaforma, sui servizi di avvio e runtime disponibili per il caricatore del sistema operativo (OS) e il sistema operativo stesso. Alcune estensioni BIOS esistenti , come ACPI e SMBIOS , sono presenti anche in EFI perché non richiedono un'interfaccia di runtime a 16 bit.

Servizi

EFI definisce "servizi di avvio" che includono il supporto per una console di testo e grafica su vari dispositivi, bus, servizi di blocco e file, nonché servizi di runtime come data, ora e memoria non volatile.

Driver di dispositivo

Oltre ai driver di dispositivo standard specifici dell'architettura, la specifica EFI fornisce un ambiente driver indipendente dalla piattaforma chiamato EFI Byte Code (EBC). Il firmware di sistema è richiesto dalla specifica UEFI per avere un interprete per tutte le immagini EBC che vengono caricate o possono essere caricate nell'ambiente. In questo senso, EBC è simile a Open Firmware , il firmware indipendente dall'hardware utilizzato nei computer Apple Macintosh e Sun Microsystems SPARC .

Alcuni tipi di driver EFI specifici dell'architettura (non EBC) possono avere interfacce per l'utilizzo da parte del sistema operativo. Ciò consente al sistema operativo di utilizzare EFI per la grafica di base e il supporto di rete prima che i driver definiti dal sistema operativo vengano caricati.

Download Manager

Il boot manager EFI viene utilizzato per selezionare e avviare un sistema operativo, eliminando la necessità di un meccanismo di avvio dedicato (il caricatore del sistema operativo è un'applicazione EFI).

Supporto del disco

Oltre al layout del disco MBR standard, EFI ha il supporto GPT , che è privo di limitazioni specifiche dell'MBR. La specifica EFI non include le descrizioni per i file system, tuttavia le implementazioni EFI generalmente supportano FAT32 come file system [3] .

Shell EFI

La comunità EFI ha creato un ambiente shell aperto ( shell EFI ) [4] .  L'utente può caricare una shell EFI per eseguire alcune operazioni invece di avviare il sistema operativo. La shell è un'applicazione EFI; può risiedere permanentemente nella ROM della piattaforma o su un dispositivo i cui driver sono nella ROM.

La shell può essere utilizzata per eseguire altre applicazioni EFI come configurazione, installazione del sistema operativo, diagnostica, utilità di configurazione e aggiornamenti del firmware. Può anche essere utilizzato per riprodurre supporti CD o DVD senza avviare il sistema operativo, a condizione che le applicazioni EFI supportino queste funzionalità. I comandi della shell EFI consentono inoltre di copiare o spostare file e directory sui file system supportati e caricare e scaricare i driver. La shell può anche utilizzare lo stack TCP/IP completo.

La shell EFI supporta gli script come file .nsh , simili ai file batch DOS . In questo caso, il file di script denominato startup.nsh viene eseguito automaticamente all'avvio.

I nomi dei comandi della shell vengono spesso ereditati dagli interpreti della riga di comando ( COMMAND.COM o Unix shell ). La shell EFI può essere vista come un sostituto funzionale dell'interprete della riga di comando del BIOS e dell'interfaccia di testo.

Estensioni

Le estensioni EFI possono essere caricate da quasi tutti i dispositivi di archiviazione non volatili collegati a un computer. Ad esempio, un OEM potrebbe vendere un sistema con una partizione EFI sul disco rigido che aggiungerebbe funzionalità extra al firmware EFI che risiede nella ROM della scheda madre.

Attuazione

Intel Platform Innovation Framework per EFI

Intel Platform Innovation Framework for EFI ( Intel Innovation Toolkit in russo ) è un insieme di specifiche sviluppate da Intel insieme a EFI. Mentre EFI definisce l'interfaccia tra il sistema operativo e il firmware, il toolkit definisce le strutture utilizzate per creare il software integrato a un livello inferiore rispetto all'interfaccia tra il sistema operativo e il firmware.

In particolare, il toolkit supporta tutti i passaggi necessari per inizializzare un computer dopo che è stato acceso. Queste funzionalità del firmware interno non sono definite come parte della specifica EFI, ma sono incluse nella specifica di inizializzazione della piattaforma sviluppata da UEFI . Il toolkit è stato testato su piattaforme: Intel XScale , Intel Itanium e IA-32 .

La compatibilità con i sistemi operativi x86 che richiedono un'interfaccia "legacy BIOS" si ottiene utilizzando il Compatibility Support Module (CSM). Il CSM include un programma a 16 bit (CSM16) implementato dal produttore del BIOS e un livello che collega il CSM16 al toolkit.

Intel ha sviluppato un'implementazione di riferimento per il toolkit, nome in codice "Tiano". Tiano è un'implementazione completa e priva di eredità del software incorporato che fornisce supporto EFI. Tiano non include la parte a 16 bit del CSM, ma fornisce le interfacce richieste dai componenti aggiuntivi implementati dai fornitori di BIOS. Intel non fornisce un'implementazione completa di Tiano per gli utenti finali.

Parte di Tiano è stata rilasciata come codice sorgente per il progetto TianoCore come EFI Developer Kit (EDK) [5] . Questa implementazione include EFI e alcuni codici di inizializzazione hardware, ma non copre completamente le specifiche del software incorporato direttamente. Per questo codice sono state utilizzate diverse licenze, inclusa la licenza BSD e la licenza pubblica Eclipse .

I prodotti basati su EFI, UEFI e le specifiche della strumentazione sono disponibili tramite produttori di BIOS indipendenti come American Megatrends (AMI) e Insyde Software . Alcune implementazioni dei fornitori si basano interamente su Tiano, mentre altre sono conformi alle specifiche ma non si basano sull'implementazione di riferimento Intel [6] .

Piattaforme che utilizzano EFI o toolkit

I sistemi basati su Itanium rilasciati da Intel nel 2000 supportavano EFI 1.02. I sistemi Itanium 2 rilasciati nel 2002 da Hewlett-Packard supportavano EFI 1.10; potrebbero avviare Windows , Linux , FreeBSD e HP-UX . Tutti i sistemi Itanium o Itanium 2 rilasciati con firmware conforme a EFI devono essere conformi alla specifica DIG64 .

Nel novembre 2003, Gateway ha introdotto Gateway 610 Media Center, il primo sistema informatico x86 basato su Windows a utilizzare software integrato basato sul toolkit InsydeH2O di Insyde Software. Il supporto del BIOS è stato implementato utilizzando il Compatibility Support Module (CSM) per l'avvio di Windows.

Nel gennaio 2006, Apple Inc. introdusse i primi computer Macintosh basati sulla piattaforma Intel . Questi sistemi utilizzano EFI e strumenti invece dell'Open Firmware utilizzato sui precedenti sistemi con piattaforma PowerPC [7] .

Il 5 aprile 2006, Apple ha rilasciato il pacchetto Boot Camp , che consente di creare un disco driver di Windows XP e contiene anche uno strumento di partizionamento del disco non distruttivo che consente di installare Windows XP con Mac OS X. È stato eseguito un aggiornamento del firmware ha anche rilasciato il supporto BIOS aggiunto per queste implementazioni EFI. I successivi modelli Macintosh sono stati rilasciati con firmware aggiornato. Tutti i moderni computer Macintosh possono ora avviare sistemi operativi compatibili con BIOS come Windows XP, Vista e Windows 7.

Un gran numero di schede madri Intel è dotato di firmware basato su toolkit[ specificare ] . Quindi, nel corso del 2005 sono stati rilasciati più di un milione di sistemi Intel [8] . Nuovi telefoni cellulari, computer desktop e server che utilizzano il toolkit hanno iniziato a essere prodotti nel 2006. Ad esempio, tutte le schede madri basate sul chipset Intel 945 utilizzano il toolkit. Tuttavia, il firmware prodotto in genere non include il supporto EFI ed è limitato al supporto BIOS [9] .

Dal 2005, EFI è stato utilizzato in architetture non PC come i sistemi embedded basati sul core XScale [10] .

L'EDK include una destinazione NT32 che consente al firmware EFI e alle applicazioni EFI di essere eseguite su applicazioni Windows.

Nel 2007, Hewlett-Packard ha rilasciato la stampante multifunzione serie 8000 con firmware conforme a EFI [11] .

Come funziona l'avvio UEFI

Nel layout del disco GPT , la partizione di sistema EFI ru en ( ESP ) con l'identificatore EF00 e il file system FAT32 contiene il file \efi\boot\boot[nome architettura].efi , ad esempio: \efi\boot\bootx64. efi. Il bootloader EFI BIOS carica ed esegue tale file in base all'architettura del sistema informatico.  

Ad esempio, per creare un'unità flash USB avviabile con Windows , è sufficiente contrassegnare l'unità flash USB in GPT, creare su di essa una partizione attiva con il file system FAT32 e ID partizione EF00, quindi copiare tutti i file dal CD con la distribuzione del sistema operativo.

Un esempio di creazione di un disco GPT nel sistema operativo GNU/Linux:

  • gdisk: crea una partizione specificando il tipo di sistema EFI (Sistema EFI in fdisk o ef00 in gdisk). Quindi formattalo nel file system FAT32 con il comando mkfs.fat -F32 /dev/<partizione disco> ;
  • GNU Parted : crea una partizione FAT32 e quindi imposta (abilita) il flag di avvio (ma non il flag legacy_boot) su quella partizione.

Inoltre, nella maggior parte delle implementazioni UEFI , è possibile eseguire l'avvio in modalità compatibilità da un disco MBR.

Apple non utilizza ESP per l'avvio, bootstrap trasferisce il controllo all'indirizzo scritto nella NVRAM (BootRom): /System/Library/CoreServices/boot.efi utilizzando l'utilità bless [l'utente può modificare questo valore utilizzando la stessa utility], con essa puoi anche vedere il dispositivo di avvio corrente e le opzioni di avvio:

bless --info --getBoot --verbose

Sistemi operativi

  • Il kernel Linux è stato in grado di utilizzare EFI all'avvio dall'inizio del 2000 utilizzando il bootloader EFI elilo o versioni EFI successive del bootloader grub [12] . Dalla versione 3.3 il kernel Linux può essere caricato direttamente senza utilizzare un bootloader [13] .
  • I sistemi operativi HP-UX utilizzano EFI come meccanismo di avvio sui sistemi basati su IA-64 dal 2002. OpenVMS lo utilizza da gennaio 2005.
  • Apple ha adottato EFI per la sua linea di computer basati sull'architettura Intel ( Mac basati su Intel ). Mac OS X 10.4 (Tiger) per Intel e Mac OS X 10.5 (Leopard) supportano EFI v1.10 in modalità a 32 bit e su CPU a 64 bit (i Macintosh più recenti hanno EFI a 64 bit) [14] .

Microsoft Windows

Le versioni Itanium di Windows 2000 (Advanced Server Limited Edition e Datacenter Server Limited Edition) hanno ricevuto il supporto EFI 1.1 nel 2002.

Windows Server 2003 per IA-64 , Windows XP 64-bit e Windows 2000 Advanced Server Limited Edition per la famiglia di processori Intel Itanium supportano EFI come definito per tale piattaforma dalla specifica DIG64 [15] .

Microsoft ha introdotto il supporto UEFI nei sistemi operativi Windows a 64 bit a partire da Windows Server 2008 e Windows Vista Service Pack 1 [16] [17] . Microsoft afferma che la mancanza di supporto EFI ufficiale sulle CPU a 32 bit è dovuta al supporto insufficiente da parte dei produttori e fornitori di PC. La migrazione di Microsoft ai sistemi operativi a 64 bit non consente l'uso di EFI 1.10 perché le estensioni del processore a 64 bit richieste da questo sistema operativo non sono supportate dall'ambiente del processore. Il supporto x86-64 è stato incluso in UEFI 2.0.

Microsoft ha rilasciato un  video con Andrew Ritz e Jamie Schwarz che spiega l'implementazione del supporto UEFI in Windows Vista e Windows Server 2008 [  18] .

Caratteristiche grafiche

EFI supporta i menu grafici e alcune funzionalità come quelle implementate da Aptio o Great Wall UEFI [19] .

Critica

EFI è stato criticato per aver aggiunto complessità al sistema senza vantaggi significativi [20] e per aver abbandonato bootloader alternativi completamente open source come OpenBIOS e coreboot [21] .

Nel 2011, utenti e sviluppatori di sistemi operativi basati su Linux hanno avvertito che l'implementazione della tecnologia Secure Boot nel modo richiesto da Microsoft per i dispositivi Windows 8 limiterebbe notevolmente la libertà degli utenti di questi dispositivi di scegliere o utilizzare un sistema operativo [22] [23 ] .

A settembre 2018, una società di antivirus ha pubblicato un rapporto su LoJax, il primo rootkit noto per un sistema UEFI visto in uso reale. Gli ingegneri dell'azienda hanno scoperto un caso in cui è stato possibile sconfiggere con successo il sottosistema SPI e salvare il rootkit nell'unità flash di questo sottosistema. Grazie a ciò, il malware potrebbe rimanere nel computer non solo durante la riformattazione del disco rigido, ma anche quando il disco rigido stesso è stato sostituito. L'unica possibilità per sbarazzarsi di un tale rootkit è sovrascrivere la memoria flash del firmware del sistema UEFI.

Note

  1. ^ Dong Wei. Oltre il BIOS (prefazione). Intel Press, 2006, ISBN 978-0-9743649-0-2
  2. Informazioni sul forum EFI unificato . Estratto il 13 giugno 2008 . Archiviato dall'originale il 10 giugno 2008.
  3. Informazioni sul driver FAT per EFI  (downlink) (richiede la registrazione)
  4. Informazioni sulla shell EFI (downlink) . Estratto il 16 giugno 2008 . Archiviato dall'originale il 28 settembre 2007. 
  5. SourceForge.net: tiancore . Estratto il 6 luglio 2008 . Archiviato dall'originale il 28 aprile 2021.
  6. ^ Intel Platform Innovation Framework per EFI Archiviato il 21 agosto 2011 in Wayback Machine sul sito Web di Intel
  7. ^ Linee guida per la programmazione binaria universale, seconda edizione: Extensible Firmware Interface (EFI) Archiviata il 3 gennaio 2009. Computer Apple
  8. Panoramica del framework Archiviato il 18 novembre 2008 su Wayback Machine Intel
  9. Informazioni su EFI su schede Intel . Estratto il 6 luglio 2008 . Archiviato dall'originale il 27 luglio 2020.
  10. Panoramica di Intel Platform Innovation Framework . Estratto il 6 luglio 2008 . Archiviato dall'originale il 18 novembre 2008.
  11. Stampanti HP  (link inaccessibile)
  12. Versione EFI di Grub (Debian Linux) . Estratto il 7 luglio 2008. Archiviato dall'originale il 30 maggio 2008.
  13. Caricamento del sistema operativo Linux senza bootloader/Sudo Null IT News . Estratto il 21 luglio 2017 . Archiviato dall'originale il 7 agosto 2016.
  14. rEFIt - Windows Vista ed EFI . Estratto 7 luglio 2008 . Archiviato dall'originale il 5 settembre 2008.
  15. Interfaccia firmware estensibile Archiviata il 30 agosto 2006. Centro tecnico di Microsoft Windows Server
  16. ^ Bombshell Microsoft: nessun supporto EFI per Vista Archiviato il 17 ottobre 2006.
  17. ^ Mary Jo Foley. Vista SP1 beta 1 verrà lanciato a metà luglio (downlink) . ZDNet (8 luglio 2007). Estratto il 20 luglio 2007 Archiviata dall'originale il 2 marzo 2012. 
  18. Video Microsoft Pre-OS . Estratto 7 luglio 2008 . Archiviato dall'originale il 9 aprile 2008.
  19. ^ Intel mostra il PC che avvia Windows con firmware UEFI Archiviato il 20 dicembre 2007.
  20. ^ Linux: Linus sull'interfaccia del firmware estensibile
  21. Intervista: Ronald G Minnich (link non disponibile) . Data di accesso: 7 luglio 2008 Archiviata dall'originale il 29 gennaio 2011. 
  22. Il "Secure Boot" del tuo computer si rivelerà essere "Restricted Boot"?  (inglese) . Fondazione per il software libero . Estratto il 24 novembre 2013 . Archiviato dall'originale il 28 novembre 2013.
  23. ^ Rod Smith. Gestire l' avvio  sicuro . Gestione dei caricatori di avvio EFI per Linux . Estratto il 24 novembre 2013 . Archiviato dall'originale il 6 novembre 2013.

Collegamenti

Vedi anche