
La partizione di sistema EFI (Extensible Firmware Interface) o ESP[1] è una partizione presente su un dispositivo di archiviazione dati (solitamente un disco rigido o un'unità a stato solido) utilizzata dai computer dotati di Unified Extensible Firmware Interface (UEFI). All'avvio del computer, il firmware UEFI carica i file memorizzati nell'ESP per avviare i sistemi operativi e varie utilità.
Un ESP contiene i boot manager o kernel dei sistemi operativi installati (che si trovano solitamente in altre partizioni) e i relativi file di configurazione (ad esempio il BCD per i sistemi Windows), i boot loader, i file dei driver dei dispositivi hardware presenti nel computer e utilizzati dal firmware durante l'avvio, i programmi di utilità di sistema che devono essere eseguiti prima dell'avvio di un sistema operativo e i file di dati come i log degli errori.[2]
Panoramica
modificaLa partizione di sistema EFI è formattata con un file system la cui specifica è basata sul file system FAT ed è mantenuta come parte della specifica UEFI; pertanto, la specifica del file system è indipendente dalla specifica FAT originale. Non è chiaramente documentato fino a che punto le due specifiche differiscano:[3][4] Apple mantiene uno strumento separato che dovrebbe essere utilizzato sui Mac Intel/x86-64,[5] mentre altri sistemi usano le utilità FAT senza problemi.[6] L'identificativo univoco universale (UUID) della partizione di sistema EFI nello schema GPT (GUID Partition Table) è C12A7328-F81F-11D2-BA4B-00A0C93EC93B, mentre il suo identificatore nello schema di partizionamento master boot record (MBR) è 0xEF. Sia i dischi partizionati in GPT che quelli in MBR possono contenere una partizione di sistema EFI, poiché il firmware UEFI è progettato per supportare entrambi gli schemi di partizionamento. Inoltre, è supportato il formato di avvio El Torito per CD-ROM e DVD.[7]
UEFI garantisce la retrocompatibilità con i sistemi legacy riservando il primo blocco (settore) della partizione a un codice di compatibilità, creando di fatto un settore di avvio legacy. Nei sistemi basati su BIOS legacy, il primo settore di una partizione viene caricato in memoria ed eseguito. Il firmware UEFI, invece, non esegue il codice nell'MBR, se non quando viene avviato in modalità legacy BIOS tramite il Compatibility Support Module (CSM).[2]
La specifica UEFI richiede il supporto completo delle tabelle di partizione MBR.[2] Tuttavia, alcune implementazioni UEFI passano immediatamente al boot basato su BIOS tramite il CSM non appena rilevano determinati tipi di tabella di partizione sul disco di avvio, impedendo di fatto l'avvio UEFI dalle partizioni di sistema EFI presenti su dischi partizionati in MBR.[8]
Il firmware UEFI supporta l'avvio da dispositivi di archiviazione rimovibili come le unità flash USB. Per questo motivo, un dispositivo rimovibile viene formattato con un file system FAT12, FAT16 o FAT32, mentre il boot loader deve essere memorizzato secondo la gerarchia convenzionale della partizione ESP standard oppure indicando un percorso completo del boot loader al boot manager del sistema. D'altra parte, sui dispositivi fissi è sempre previsto l'uso del file system FAT32.[2]
La partizione EFI non c'entra nulla con la partizione MSR (Microsoft Reserved) che è una piccola partizione (16 MB) nascosta, riservata, senza ID di partizione né dati. Essa viene aggiunta (subito dopo quella EFI) durante l'installazione pulita di Windows per assistere nella gestione delle partizioni su unità GPT. Non va eliminata perché rende Windows non avviabile. Può essere invece cancellata nelle macchine prive di Windows.
Cartelle
modifica
In una partizione ESP si trova il contenitore EFI[9] nel quale ci sono solitamente le seguenti cartelle:
- Boot. La cartella \Boot\Efi è quella che contiene materialmente il gestore di avvio predefinito (un file con estensione .efi);
- cartelle dei bootloader specifici dei sistemi operativi installati (solitamente sono denominate con il nome dei sistemi operativi);
- cartella OEM, qualora applicabile (sostituire "OEM" con il nome del produttore); essa solitamente contiene le versioni precedenti, correnti e di backup del firmware, da usare nei casi di emergenza.
Ad esempio, in \EFI\Microsoft\Boot c'è il file bootmgfw.efi che è il gestore di avvio di Microsoft in un sistema Windows.
Nella cartella Boot c'è il file \efi\boot\bootx64.efi che serve per rendere avviabili i supporti rimovibili (come le sessioni live USB). In pratica, è il gestore di avvio quando si usano i supporti removibili come dispositivi di avvio. La cartelle Boot è quella che presiede all'avvio del sistema.
Il programma di installazione di Windows crea automaticamente la partizione EFI con dimensione predefinita di 100 MB: per aggiungere altri sistemi operativi è opportuno allargare la partizione ad almeno 200 MB in modo che ci sia spazio sufficiente per i rispettivi file di avvio. Quando, si installano distro Linux affiancandole a Windows o a Mac, il programma di installazione esegue automaticamente le necessarie operazioni. Va da sé che nel caso si installasse una distro Linux su un'unità senza spazio allocato la cartella EFI sarà automaticamente e opportunamente dimensionata dal programma di installazione.
Efibootmgr è uno strumento che consente di interagire con il firmware UEFI del sistema (o, meglio, con il suo bootloader specifico). Utilizzando efibootmgr le voci di avvio possono essere create, rimescolate, modificate e rimosse. Questo è utile quando, ad esempio, il menù del firmware (quello che si apre con la combinazione di tasti all'accensione della macchina o con comandi specifici a sistema operativo in esecuzione), essendo minimale, non contiene i comandi di manipolazione delle voci dei bootloader.
Tramite applicazioni di terze parti o strumenti dei produttori dei sistemi operativi possono essere visualizzati i certificati di sicurezza dei vari componenti inclusi nella partizione ESP.
Utilizzo
modificaLinux
modificaGRUB 2, elilo e systemd-boot svolgono il ruolo di tradizionali e completi boot loader UEFI autonomi (detti anche gestori di boot loader) per Linux. Una volta caricati dal firmware UEFI, possono accedere e avviare immagini del kernel da tutti i dispositivi, partizioni e file system supportati, senza essere limitati alla partizione di sistema EFI.
Il punto di mount della partizione di sistema EFI varia a seconda del bootloader utilizzato. Bootloader più datati, come GRUB 2 e lilo/elilo, usano di default /boot/efi. In alternativa, systemd-boot preferisce /efi o /boot rispetto a /boot/efi a causa di possibili complicazioni legate a mount autofs annidati. Indipendentemente dal percorso di mount, il contenuto della partizione è accessibile una volta avviato Linux.[10][11]
EFI Boot Stub del kernel Linux
modificaEFI Boot Stub consente di avviare un'immagine del kernel Linux senza l'uso di un boot loader UEFI convenzionale. Mascherandosi come immagine eseguibile PE/COFF e apparendo al firmware come un'applicazione UEFI, un'immagine del kernel Linux con EFI Boot Stub abilitato può essere caricata ed eseguita direttamente dal firmware UEFI. Queste immagini del kernel possono essere caricate ed eseguite anche dai boot loader basati su BIOS; quindi, EFI Boot Stub permette a una singolo kernel di funzionare in qualsiasi ambiente di avvio.[12]
Il supporto del kernel Linux per EFI Boot Stub viene abilitato attivando l'opzione CONFIG_EFI_STUB (supporto per EFI stub) durante la configurazione del kernel.[13] Questa funzionalità è stata integrata nella versione 3.3 del ramo principale del kernel Linux, pubblicata il 18 marzo 2012.[14]
Systemd-boot è un semplice gestore di avvio UEFI che carica ed esegue immagini EFI configurate, accedendo unicamente alla partizione di sistema EFI. I file di configurazione, le immagini del kernel e le immagini initrd devono risiedere nella partizione di sistema EFI, poiché systemd-boot non supporta l'accesso a file su altre partizioni o file system. I kernel Linux devono essere compilati con CONFIG_EFI_STUB=y in modo che possano essere eseguiti direttamente come immagini UEFI.[15]
Apple
modificamacOS su Intel (x86 e x86-64)
modificaNei computer Apple Mac con architettura Intel x86-64, la partizione di sistema EFI rimane inizialmente vuota e inutilizzata per l'avvio in macOS.[16][17]
Tuttavia, la partizione di sistema EFI viene utilizzata come area di staging per gli aggiornamenti del firmware[18] e per il bootloader di Microsoft Windows nei Mac configurati per l'avvio di una partizione Windows tramite Boot Camp.[19][20]
Un firmware UEFI personalizzato di Apple, chiamato iBoot, gestisce la logica per individuare e caricare i bootloader. iBoot seleziona il bootloader desiderato (eventualmente configurato tramite combinazioni di tasti all'avvio o NVRAM), con la possibilità di eseguire un fallback verso l'installazione interna di macOS o a un sistema di ripristino chiamato recoveryOS.[17][20][21]
I vecchi computer Apple con architettura Intel precedente a UEFI richiedevano che la partizione di sistema EFI fosse formattata in HFS+. I bootloader di terze parti dovevano essere "blessed" (ovvero designati come avviabili) tramite uno speciale comando ioctl prima di poter essere avviati dal firmware, un retaggio della "System Folder blessing" (procedura di autorizzazione della cartella di sistema) del Mac OS Classic. Per il resto, non ci sono limitazioni riguardo ai tipi di sistemi operativi EFI o boot loader che un computer Apple basato su Intel può eseguire.[22][23]
iOS, iPadOS, macOS su Apple Silicon (AArch64)
modificaI dispositivi basati su Apple Silicon (AArch64) come iPhone, iPad e tutti i computer Mac dal 2023 in poi non includono funzionalità EFI/UEFI e di conseguenza non utilizzano partizioni di sistema EFI.[24][25]
Windows
modificaIl supporto UEFI in Windows è iniziato nel 2008 con Windows Vista SP1.[26]
Il gestore di avvio di Windows si trova nella sottocartella \EFI\Microsoft\Boot\ della partizione di sistema EFI.[27]
Su Windows XP 64-Bit Edition e versioni successive, l'accesso alla partizione di sistema EFI si ottiene eseguendo il comando mountvol, che monta la partizione EFI sull'unità specificata. Disponibile solo sui computer basati su Itanium.[28]
Note
modifica- ^ EFI system partition.
- ^ a b c d Unified Extensible Firmware Interface (UEFI) Specification (versions 2.10 and older) (PDF), su UEFI.org, Agosto 2022. URL consultato il 12 dicembre 2022.
- ^ UEFI Specification Version 2.5, Section 12.3 File System Format (PDF), su UEFI.org, Aprile 2015, pp. 536, 537. URL consultato il 29 maggio 2015.«The file system supported by the Extensible Firmware Interface is based on the FAT file system. EFI defines a specific version of FAT that is explicitly documented and testable. Conformance to the EFI specification and its associate reference documents is the only definition of FAT that needs to be implemented to support EFI. To differentiate the EFI file system from pure FAT, a new partition file system type has been defined.»
- ^ Intel Platform Innovation Framework for EFI Firmware File System Specification (PDF), su intel.com, Settembre 2003.
- ^ Technical Note TN2166: Secrets of the GPT, su Developer.Apple.com, 6 novembre 2006. URL consultato il 6 maggio 2015.
- ^ EFI system partition, su ArchWiki. URL consultato il 14 marzo 2020.
- ^ Unified Extensible Firmware Interface (UEFI) Specification (versions 2.10 and older) (PDF), su UEFI.org, Agosto 2022. URL consultato il 12 dicembre 2022.
- ^ UEFI system booting from MBR partition table and GRUB legacy, su ArchLinux.org, Giugno 2012. URL consultato il 6 ottobre 2013.
- ^ Solitamente EFI non contiene file ma solo cartelle (le quali contengono file).
- ^ UEFI - Community Ubuntu Documentation, su Ubuntu.com, 21 dicembre 2013. URL consultato il 27 dicembre 2013.
- ^ (EN) Boot Loader Specification, su uapi-group.org. URL consultato il 15 febbraio 2024.
- ^ The EFI Boot Stub - The Linux Kernel Documentation, su The Linux Kernel documentation, 16 giugno 2014. URL consultato il 14 febbraio 2024 (archiviato dall'url originale il 4 ottobre 2023).
- ^ Linux kernel 3.11.1 arch/x86/Kconfig: CONFIG_EFI_STUB (line #1575), su Kernel.org. URL consultato il 6 ottobre 2013.
- ^ Linux kernel 3.3: 1.10. EFI boot support, su KernelNewbies.org, 18 marzo 2012. URL consultato il 6 ottobre 2013.
- ^ systemd-boot UEFI Boot Manager, su systemd.io. URL consultato il 19 giugno 2025 (archiviato dall'url originale il 18 giugno 2025).
- ^ rEFIt: Myths and Facts About Intel Macs – Myth: Mac OS X Requires a Hidden EFI System Partition, su rEFIt.SourceForge.net.
- ^ a b (EN) Boot process for an Intel-based Mac, su Apple Support. URL consultato il 14 febbraio 2024.
- ^ Firmware updates for Intel-based Macs require a GUID partition scheme, su Apple Knowledgebase.
- ^ (EN) Boot process for a Mac with Apple silicon, su Apple Support. URL consultato il 14 febbraio 2024.
- ^ a b (EN) Boot modes of an Intel-based Mac with an Apple T2 Security Chip, su Apple Support. URL consultato il 14 febbraio 2024.
- ^ (EN) Startup Security Utility on a Mac with an Apple T2 Security Chip, su Apple Support. URL consultato il 14 febbraio 2024.
- ^ Ubuntu + Mac: Pure EFI Boot, su The Slightly Disgruntled Scientist, 7 settembre 2014. URL consultato il 17 novembre 2019 (archiviato dall'url originale l'8 marzo 2021).
- ^ BLESS(8), su keith.github.io. URL consultato il 14 febbraio 2024.
- ^ (EN) Introduction to Apple Silicon: Storage, su GitHub - Asahi Linux Wiki, 2 novembre 2023. URL consultato il 14 febbraio 2024 (archiviato dall'url originale il 14 febbraio 2024).
- ^ (EN) Boot process for a Mac with Apple silicon, su Apple Support. URL consultato il 14 febbraio 2024.
- ^ UEFI and Windows, su Windows Hardware Developer Central (WHDC), 24 luglio 2008. URL consultato il 5 maggio 2024 (archiviato dall'url originale il 4 gennaio 2009).
- ^ Subdirectory Registry | Unified Extensible Firmware Interface Forum, su uefi.org, UEFI Forum. URL consultato il 5 maggio 2024.
- ^ (EN) Mountvol, su Windows Server 2012 R2 and Windows Server 2012, learn.microsoft.com, 31 agosto 2016. URL consultato il 5 maggio 2024.
Voci correlate
modificaCollegamenti esterni
modifica- Registro delle sottodirectory della partizione di sistema EFI : elenco delle sottodirectory presenti sotto la directory
/EFIin una partizione di sistema EFI