C’è una credenza ancora oggi molto diffusa che continua a prendere piede sul Web, purtroppo anche sulle testate di taglio spiccatamente tecnico. Si dice che per effettuare il boot di chiavette e unità esterne USB sui sistemi dotati di BIOS UEFI è necessario utilizzare una partizione FAT32.
La prima considerazione da fare è che ciò non corrisponde al vero.
UEFI non obbliga affatto all’utilizzo esclusivo del file system FAT32 per l’avvio delle unità.
Basta prendere come esempio un qualunque sistema Intel NUC: si scoprirà immediatamente che il dispositivo si avvia in modalità UEFI pura da un’unità formattata con il file system NTFS senza che sia previsto l’utilizzo di alcuna partizione FAT32.
In un altro articolo abbiamo messo in evidenza le principali differenze tra file system FAT32, NTFS ed exFAT.
Diversamente da ciò che molti continuano a sostenere, quindi, è possibile per un qualunque dispositivo UEFI effettuare il boot da un’unità NTFS o da qualunque altro file system perché le specifiche non legano l’avvio dell’unità all’utilizzo di FAT32.
La confusione sembra derivare dal fatto che le specifiche UEFI impongono che “come minimo” un sistema UEFI dovrebbe essere in grado di avviarsi da FAT32. Ma in nessun modo si afferma che FAT32 è l’unico file system che UEFI è capace di gestire in fase di boot.
Per fare in modo che qualunque firmware UEFI possa avviare un’unità “non-FAT32” ciò che si deve fornire è un driver UEFI per il file system che s’intende utilizzare. Tutto qui.
Un programma gratuito come Rufus, che è stato già oggetto di una guida sul suo funzionamento, rappresenta una conferma evidente di quanto sin qui illustrato:
- Rufus supporta l’avvio da partizioni NTFS in modalità UEFI pura utilizzando la funzionalità UEFI:NTFS
- Quanto fa Rufus per il supporto dell’avvio da NTFS con UEFI è perfettamente aderente alle specifiche. Microsoft fa qualcosa di molto simile quando si passa dall’avvio di una partizione di sistema FAT32 EFI a una partizione NTFS
- Con l’utilizzo di UEFI:NTFS si abilita il supporto per i file di dimensioni superiori a 4 GB
UEFI:NTFS è un bootloader generico rilasciato sotto licenza GNU GPLv3 che consente l’avvio di unità NTFS ed exFAT utilizzando la modalità UEFI pura.
Concepito per essere utilizzato con Rufus, UEFI:NTFS può essere utilizzato in qualunque altro progetto.
Il funzionamento di UEFI:NTFS in breve:
- Rufus crea due partizioni sull’unità USB da rendere avviabile. Le partizioni possono essere MBR o GPT. La prima è una partizione NTFS che occupa quasi tutto lo spazio disponibile e contiene i file di Windows; la seconda è una partizione FAT molto piccola, situata alla fine dell’unità, che contiene un driver UEFI NTFS e il bootloader UEFI:NTFS.
- Quando l’unità USB si avvia in modalità UEFI, la prima partizione NTFS viene ignorata dal firmware UEFI (a meno che il firmware non includa già un driver NTFS, nel qual caso saranno disponibili due opzioni di avvio che di fatto fanno la stessa cosa) e viene eseguito il bootloader UEFI:NTFS dalla partizione FAT avviabile.
- UEFI:NTFS carica il driver UEFI NTFS, individua la partizione NTFS esistente sullo stesso supporto e carica il file
/efi/boot/bootia32.efi, /efi/boot/bootx64.efi, /efi/boot/bootarm.efi
o/efi/boot/bootaa64.efi
in essa memorizzato.
Perché per usare UEFI:NTFS non è più necessario disattivare Secure Boot
Fino alla versione 3.16 di Rufus l’unico problema derivante dalla creazione di una partizione NTFS avviabile con UEFI puro aveva a che fare con la disabilitazione temporanea di Secure Boot.
Secure Boot è una funzione integrata in UEFI che consente di bloccare boot loader, kernel e driver non certificati e, più precisamente, non firmati con una chiave crittografica autorizzata.
Nel caso di Rufus quando si crea una chiavetta USB o un’unità avviabile a partire da un file ISO che contiene file di dimensioni maggiori di 4 GB (cosa ormai molto comune per i file d’immagine .WIM e .ESD che contengono il necessario per l’installazione di Windows) il programma ricordava sempre di disattivare Secure Boot proprio in forza dell’utilizzo di UEFI:NTFS.
E questo non perché il bootloader di UEFI:NTFS dovrebbe essere ritenuto non sicuro o perché lo sviluppatore di Rufus è avaro e non ha voluto investire denaro per richiedere la certificazione della sua firma o ancora perché egli non approva Secure Boot.
Più semplicemente, per una sua decisione unilaterale, Microsoft non tollera che alcun progetto rilasciato sotto licenza GNU GPLv3 possa essere ufficialmente approvato e usare una firma riconosciuta da parte di Secure Boot. Ma è anche vero che Microsoft firma gli shim Linux ovvero i bootloader di primo grado utilizzati per l’avvio di molte distribuzioni.
Dal momento che UEFI:NTFS è un progetto GPLv3 non può ottenere la certificazione da parte di Microsoft e non può essere autorizzato a livello di Secure Boot. È questo il motivo per cui Rufus chiedeva di disattivare temporaneamente Secure Boot a livello di BIOS UEFI per avviare le unità USB basate su partizioni NTFS. Al termine dell’installazione del sistema operativo contenuto nella chiavetta USB si poteva tornare nel BIOS UEFI e riattivare Secure Boot.
Rufus contiene un meccanismo di verifica per controllare se l’immagine ISO da scrivere nel supporto USB contenga file più pesanti di 4 GB. In questi casi l’utilizzo di UEFI:NTFS viene automaticamente attivato.
Secure Boot può essere disattivato dalla sezione Security del BIOS UEFI riavviando il sistema e premendo il tasto per accedere alla sua configurazione.
Da Windows 10 e Windows 11 è possibile anche usare il comando shutdown /r /fw /f /t 0
per entrare subito nel BIOS UEFI.
Con il rilascio di Rufus 3.17, però, non è più necessario disattivare Secure Boot e UEFI:NTFS è indicato come pienamente compatibile con la soluzione di sicurezza presente nel BIOS UEFI.
Con Rufus 3.17 e versioni successive si possono quindi creare unità USB avviabili senza più bisogno di disattivare Secure Boot.
L’autore di Rufus ha infatti integrato in UEFI:NTFS i driver ntfs-3g che sono rilasciati sotto licenza GNU GPLv2 e integrano la firma digitale Microsoft.