Installare Debian su PC con firmware UEFI: differenze tra le versioni

Nessun oggetto della modifica
 
(34 versioni intermedie di uno stesso utente non sono mostrate)
Riga 4: Riga 4:
{{Versioni compatibili}}
{{Versioni compatibili}}


== BIOS e UEFI ==
== Introduzione ==
Partiamo con lo specificare che sia il [http://it.wikipedia.org/wiki/BIOS BIOS] (''Basic Input-Output System'') che l’[http://it.wikipedia.org/wiki/Extensible_Firmware_Interface UEFI] (''Unified Extensible Firmware Interface'') sono entrambi due tipologie di firmware per computer (generalmente è il firmware della scheda madre), ma diversi tra loro. Quindi fate attenzione a non commettere l'errore di dire "UEFI BIOS" o "BIOS di tipo UEFI".<br>
Partiamo con lo specificare che sia il [http://it.wikipedia.org/wiki/BIOS BIOS] (''Basic Input-Output System'') che l’[http://it.wikipedia.org/wiki/Extensible_Firmware_Interface UEFI] (''Unified Extensible Firmware Interface'') sono entrambi due tipologie di firmware per computer (generalmente è il firmware della scheda madre), ma diversi tra loro. Quindi fate attenzione a non commettere l'errore di dire "UEFI BIOS" o "BIOS di tipo UEFI".<br>
Il BIOS risale ai primi anni '80, ai [http://it.wikipedia.org/wiki/IBM_compatibile PC IBM compatibili] ed ormai mostra tutti i limiti della sua età, dovuti anche al fatto che, essendo uno standard ''de-facto'', non è mai stato possibile regolamentarlo.<br>
* Il BIOS risale ai primi anni '80, ai [http://it.wikipedia.org/wiki/IBM_compatibile PC IBM compatibili] ed ormai mostra tutti i limiti della sua età, dovuti anche al fatto che, essendo uno standard ''de-facto'', non è mai stato possibile regolamentarlo.<br>
Il progetto UEFI invece nasce all'inizio di questo secolo appunto per sopperire ai limiti del BIOS e per regolamentare i firmware per PC.<br>
* Il progetto UEFI invece nasce all'inizio di questo secolo appunto per sopperire ai limiti del BIOS e per regolamentare i firmware per PC. Da notare che nelle opzioni di molti PC con firmware UEFI è possibile attivare il CSM ([http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Compatibility_Support_Module Compatibility Support Module]), che emula un ambiente BIOS per poter utilizzare vecchi sistemi operativi e hardware non compatibili con UEFI. In alcune macchine può trovarsi sotto altri nomi, come ad esempio ''Legacy mode''.
Da notare che nelle opzioni di molti PC con firmware UEFI è possibile attivare il CSM ([http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Compatibility_Support_Module Compatibility Support Module]), che emula un ambiente BIOS per poter utilizzare vecchi sistemi operativi e hardware non compatibili con UEFI. In alcune macchine può trovarsi sotto altri nomi, come ad esempio ''Legacy mode''.


=== MBR e GPT ===
=== MBR e GPT ===
La differenza principale tra BIOS e UEFI riscontrabile dall'utente è il modo di avviare i dischi.<br>
La differenza principale tra BIOS e UEFI riscontrabile dall'utente è il modo di avviare i dischi.<br>
Il BIOS si basa sul MBR ([http://it.wikipedia.org/wiki/Master_boot_record Master boot record]), che è la parte iniziale di un disco (grande solo 512 bytes) che contiene la tabella delle partizioni e un piccolo programma detto [http://it.wikipedia.org/wiki/Boot_loader bootloader]. Il BIOS sa che per far avviare il disco deve leggere il MBR ed eseguire il bootloader ivi presente. Al BIOS non interessa quanti e quali sistemi operativi o partizioni sono presenti sul disco, lui sa solo che per avviare un disco deve eseguire il bootloader e poi dev'essere compito di quest'ultimo occuparsi dell'avvio.<br>
* BIOS si basa sul MBR ([http://it.wikipedia.org/wiki/Master_boot_record Master boot record]), che è la parte iniziale di un disco (grande solo 512 bytes) che contiene la tabella delle partizioni e un piccolo programma detto [http://it.wikipedia.org/wiki/Boot_loader bootloader]. Il BIOS sa che per far avviare il disco deve leggere il MBR ed eseguire il bootloader ivi presente. BIOS non ha idea di cosa sia una partizione e tantomeno un sistema operativo, sa solo che per avviare un disco deve eseguire il bootloader e poi sarà quest'ultimo ad occuparsi di tutto il resto.
L'UEFI invece lavora in modo differente. Innanzitutto non usa il MBR poiché questo pone dei limiti al numero e alla grandezza delle partizioni, ma usa invece un tipo differente di tabella delle partizioni nato proprio con l'UEFI, e cioè il GPT ([http://it.wikipedia.org/wiki/GUID_Partition_Table GUID Partition Table]). Si possono anche usare dischi con tabella MBR, anche senza attivare il CSM (la retrocompatibilità BIOS), ma è sconsigliabile.<br>
* UEFI invece lavora in modo differente, infatti '''NON usa il MBR''' poiché questo pone dei limiti al numero e alla grandezza delle partizioni, ma usa invece un tipo differente di tabella delle partizioni nato proprio con UEFI, e cioè GPT ([http://it.wikipedia.org/wiki/GUID_Partition_Table GUID Partition Table]).
Nel disco GPT deve esserci una piccola partizione di sistema chiamata ESP ([http://en.wikipedia.org/wiki/EFI_System_partition EFI System partition], in genere creata dal primo sistema operativo che si installa sul disco). Questa partizione contiene tutti i bootloader dei vari sistemi operativi presenti sul disco e viene letta direttamente dall'UEFI. Mentre nel BIOS si poteva solo scegliere quale disco avviare per primo, su UEFI si sceglie direttamente il sistema operativo da avviare per primo, indipendentemente in quale disco si trovi (ma purché il suo bootloader sia stato trovato e riconosciuto dall'UEFI). La partizione ESP deve avere un file system [http://it.wikipedia.org/wiki/File_Allocation_Table FAT] (12 / 16 / 32), e può contenere oltre ai bootloader anche dei programmi direttamente eseguibili da UEFI, come ad esempio dei software di diagnostica hardware (ma alla fin fine anche i bootloader non sono altro che dei programmi il cui unico fine è avviare dei sistemi operativi).
: In ogni sistema deve essere presente almeno un disco GPT contenente una piccola partizione di sistema chiamata ESP ([http://en.wikipedia.org/wiki/EFI_System_partition EFI System partition], generalmente creata dal primo sistema operativo che si installa sul disco) che viene letta direttamente da UEFI. Il caso tipico dell'utente domestico medio è quello di un solo disco con tabella GPT e partizione EFI che contiene i bootloader di Win e Linux. Mentre nel BIOS si poteva solo scegliere quale disco avviare per primo, su UEFI si sceglie direttamente quale bootloader avviare per primo, indipendentemente in quale disco si trovi (purché il suo bootloader sia stato trovato e riconosciuto dall'UEFI). La partizione ESP deve avere un file system [http://it.wikipedia.org/wiki/File_Allocation_Table FAT] (12 / 16 / 32), e può contenere oltre ai bootloader anche dei programmi direttamente eseguibili da UEFI, come ad esempio dei software di diagnostica hardware (ma alla fin fine anche i bootloader non sono altro che dei programmi il cui unico fine è avviare dei sistemi operativi).


== Sistemi moderni ==
== Sistemi moderni ==


UEFI ha ormai soppiantato definitivamente BIOS ed anche Secure Boot è ormai correttamente supportato nella maggioranza dei casi, quanto meno in quello di hardware IBM compatibile.<br/>
{{Box|Nota|UEFI ha ormai soppiantato definitivamente BIOS ed anche Secure Boot è ormai correttamente supportato nella maggioranza dei casi, quanto meno in quello di hardware x86 compatibile. Questo significa che la procedura d'installazione standard funziona bene e all'utente non è più richiesto di abilitare da UEFI la modalità ''CSM'' o disabilitare ''Secure Boot''.}}
Questo significa che la procedura d'installazione standard funziona bene e all'utente non è più richiesto di abilitare da UEFI la modalità ''CSM'' o disabilitare ''Secure Boot''.
 
=== Secure Boot (SB) ===
 
Ormai pienamente supportato grazie al pacchetto [https://packages.debian.org/shim shim].<br/>
In poche parole chiunque voglia scrivere del software che possa essere eseguito all'avvio di una macchina deve farselo firmare da un ente certificatore riconosciuto (''Certificate Authoruity'') e chiedere ad ogni fornitore hardware di includere le chiavi usate per firmare detto software.<br/>
In pratica la stragrande maggioranza dei produttori hardware x86 compatibile include le chiavi di Microsoft e quindi qualsiasi software firmato da Microsoft sarà eseguito da UEFI.<br/>
Dato l'enorme numero di distribuzioni Linux non è pensabile che ogni produttore hardware includa le chiavi di ogni distro, quindi sviluppatori legati a diverse distribuzioni Linux hanno collaborato per creare un unico programma che potesse essere usato da chiunque per permettere l'installazione di una qualsiasi distro linux. Tale programma è appunto <code>shim</code> e viene riconosciuto da UEFI proprio perché firmato da Microsoft. All'interno di <code>shim</code> sono anche contenuti i certificati usati dalle varie distribuzioni per firmare tutto il loro software, in questo modo è sufficiente che solo <code>shim</code> sia firmato da Microsoft.<br>
In linux è possibile verificare se il proprio sistema è stato avviato usando SB digitando il seguente comando:
<pre>$ sudo mokutil --sb-state</pre>
che in caso affermativo stamperà a video <code>SecureBoot enabled</code> e viceversa <code>SecureBoot disabled</code> in caso negativo.
 
=== Ordine avvio ===
 
A livello firmware (cioè all'accensione del PC premendo un tasto specifico che varia da produttore a produttore, es. <code>F12</code>) è generalmente possibile scegliere cosa leggere (partizione, unità CD, unità di rete, ecc.) in modo predefinito sia arrestare temporaneamente il processo di avvio e segliere manualmente cosa avviare (ciò avviene premendo un tasto specifico, es. <code>F12</code>, che varia da produttore a produttore).
{{Box|Nota|L'ordine di avvio predefinito può essere definito anche tramite il ''UEFI boot manager'' di linux.}}
 
=== Installazione ===
 
Come già accennato in precedenza installare Debian su un sistema con firmware UEFI non richiede più particolari accorgimenti, tuttavia se si vuole usare uno schema di partizioni personalizzato è necessario ricordare che è obbligatorio creare una partizione EFI e:
* formattarla in FAT32;
* contrassegnarla come avviabile.
In un sistema con firmware EFI e modalità compatibilità disattivata le uniche partizioni contrassegnabili come avviabili sono appunto quelle EFI.
{{Cautionbox|Sebbene sia possibile creare più partizioni EFI solo una di queste potrà essere contrassegnata come avviabile.}}
{{Suggerimento|Nel caso si vogliano installare più sistemi operativi è consigliabile installare tutti i relativi bootloader nella medesima partizione ESP, ovvero è generalmente inutile creare più partizioni ESP.}}
{{Warningbox|
* NON è possibile mettere in raid una partizione EFI.
* Se si installano più distro linux GRUB deve essere installato solo per una di queste distro, NON per tutte (questo è vero in generale e non solo per UEFI)
}}
 
==== Windows e Linux ====
Meglio installare prima Windows o Linux? Dipende.
* Se si installa prima Windows e poi Linux si evita la seccatura di dover cambiare manualmente l'ordine di avvio dei bootloader, visto che come sempre il bootloader di Windows può caricare solo quest'ultimo. Tuttavia la partizione EFI sarà creata da Windows e occuperà 100MiB (l'installer di windows non permette di cambiarne la dimensione). Per la stragrande maggioranza degli utenti questa soluzione è assolutamente accettabile visto che la somma dei bootloader di Windows e Debian in questo momento (06/2024) occupa in totale meno di 40 MiB, inoltre è anche consigliata in quanto meno complicata.
* Se si installa prima Linux e poi Windows sarà invece necessario cambiare manualmente l'ordine di avvio dei bootloader, ma con UEFI quest'operazione è ormai assolutamente banale in quanto può essere facilmente eseguita tramite il firmware UEFI all'avvio del PC. Rimesso quindi in prima posizione <code>GRUB</code> sarà sufficiente digitare da linux:
: <pre># update-grub</pre>
{{Cautionbox|Il comportamento predefinito del precedente comando è cambiato, ovvero l'esecuzione automatica di <code>os-prober</code> è stata disabilitata con la conseguenza che non verranno identificati altri sistemi operativi. Per risolvere questo problema è quindi necessario riabilitarne l'esecuzione automatica.}}
: Ma perché complicarsi la vita, anche se di poco? Perché così fancendo è possibile creare una partizione EFI personalizzata e in alcuni casi particolari può essere utile.
 
=== efibootmgr ===
 
Questo pacchetto permette di configurare il ''UEFI boot manager''.
* Mostrare l'ordine di avvio attuale
: <pre> $ efibootmgr</pre>
: aggiungere l'opzione <code>-v</code> per mostrare più informazioni. Torna utile per esempio quando si ha necessità di visualizzare l'UUID delle partizioni.
* Aggiungere manualmente la partizione <code>/dev/sda1</code> che contiene un'altra distro linux, per es. Ubuntu
: <pre># efibootmgr --create --disk /dev/sda --part 1 --label "Ubuntu" --loader "\EFI\ubuntu\shimx64.efi"</pre>
: Nel caso si abbiano più sistemi operativi si tratta semplicemente di ripetere il precedente comando cambiando il valore di <code>--label</code> e di <code>--loader</code> (è sufficiente digitare nuovamente <code>efibootmgr -v</code> e copiare quanto scritto tra le parentesi di <code>/File(...)</code> in corrispondenza del sistema operativo desiderato).
* Eliminare una voce di avvio
: <pre># efibootmgr -B -b 00XY</pre>
: dove <code>00XY</code> indica il numero della voce da eliminare, per esempio <code># efibootmgr -B -b 0009</code>.
* Posto di aver cinque voci di avvio <code>0000,0001,0002,0003,0004</code> e di volerle riordinare in <code>0000,0004,0001,0002,0003</code> digitare
: <pre># efibootmgr -o 0000,0004,0001,0002,0003</pre>
<br/><br/>


== Vecchi sistemi ==
== Vecchi sistemi ==
Quanto segue è stato scritto ai tempi di Debian Buster e pertanto le indicazioni presenti risultano per lo più datate.
Quanto segue è stato scritto ai tempi di Debian Buster e pertanto le indicazioni presenti risultano per lo più datate.


Riga 74: Riga 123:
Le versioni di Windows installabili su sistemi con UEFI sono Windows 7 (solo a 64 bit), Windows 8.x (tutte le architetture) e Windows 10 (tutte le architetture).<br>
Le versioni di Windows installabili su sistemi con UEFI sono Windows 7 (solo a 64 bit), Windows 8.x (tutte le architetture) e Windows 10 (tutte le architetture).<br>
Dopo l'installazione di Windows 8.x o 10 (o, se già installato, prima dell'installazione di Debian) bisogna disabilitare la funzione [https://wiki.archlinux.org/index.php/Windows_and_Arch_dual_boot#Fast_Start-Up fast startup] (avvio veloce) per poter far convivere i due sistemi operativi.
Dopo l'installazione di Windows 8.x o 10 (o, se già installato, prima dell'installazione di Debian) bisogna disabilitare la funzione [https://wiki.archlinux.org/index.php/Windows_and_Arch_dual_boot#Fast_Start-Up fast startup] (avvio veloce) per poter far convivere i due sistemi operativi.
<br/><br/>


== Riferimenti ==
== Approfondimenti ==
* https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/
* https://wiki.archlinux.org/index.php/Partitioning#GUID_Partition_Table


=== Sitografia ===
* [https://wiki.debian.org/UEFI UEFI], Debian official wiki.
* [https://wiki.debian.org/SecureBoot Secure Boot], Debian official wiki.
* [https://wiki.ubuntu.com/UEFI/SecureBoot Secure Boot], Ubuntu official wiki.
* [https://wiki.archlinux.org/index.php/Partitioning#GUID_Partition_Table GPT], Archlinux official wiki.
* [https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/ UEFI] in dettaglio


{{Autori
{{Autori
| Autore = [[Utente:BubuXP|BubuXP]] 12:52, 27 mag 2015 (CEST)
| Autore = [[Utente:BubuXP|BubuXP]] 12:52, 27 mag 2015 (CEST)
| Estesa_da =
| Estesa_da =
:
: [[Utente:Wtf|wtf]]
| Verificata_da =
| Verificata_da =
:
: [[Utente:Wtf|wtf]] (escluso vecchi sistemi)
| Numero_revisori = 0
| Numero_revisori = 1
}}
}}


[[Categoria:Installazione]]
[[Categoria:Installazione]]
3 113

contributi