Installare Debian su PC con firmware UEFI

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Installazione
Arrow left.png

Preparazione

Procedura generale

Casi specifici

Altro

Arrow right.png



Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

BIOS e UEFI

Partiamo con lo specificare che sia il BIOS che l’UEFI 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".
Il BIOS risale ai primi anni '80, ai 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.
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 (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.

Info.png Nota
La procedura descritta in questa guida è stata ottenuta sperimentando su due schede madri, precisamente la MSI H81M-E34 e la ASUS H81M-PLUS, che sembrano applicare correttamente le specifiche UEFI. Purtroppo sul mercato esistono delle macchine con implementazioni di firmware UEFI non completamente aderenti alle specifiche e/o contenenti bug (specialmente notebook e hardware "vecchio" che usa le prime revisioni UEFI), e si potrebbero trovare delle difficoltà nell'installazione (es. un notebook Asus che leggeva bootloader EFI solo a 64bit). Questa guida cercherà di considerare tutti questi casi, ma si ricorda anche che si può sempre provare a chiedere aiuto nel nostro forum.


MBR e GPT

La differenza principale tra BIOS e UEFI riscontrabile dall'utente è il modo di avviare i dischi.
Il BIOS si basa sul MBR (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 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.
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 (GUID Partition Table). Si possono anche usare dischi con tabella MBR, anche senza attivare il CSM (la retrocompatibilità BIOS), ma è sconsigliabile.
Nel disco GPT deve esserci una piccola partizione di sistema chiamata ESP (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 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).

Preparazione dell'installazione

Prima di procedere, è meglio entrare nelle pagine di configurazione dell'UEFI per andare a disattivare delle caratteristiche che potrebbero essere incompatibili con Debian, come il SecureBoot, il FastBoot (un avvio veloce dell'UEFI che si ottiene evitando di caricare alcune funzioni e di effettuare alcuni controlli e che può chiamarsi anche in altri modi; da non confondere con la feature Fast startup (Avvio veloce) di Windows 8.x) e per evitare di fare confusione in fase di installazione, meglio disattivare anche il CSM, ovvero la compatibilità con il vecchio BIOS. Da notare che queste funzioni possono non essere presenti in tutte le schede madri.
Per entrare nell'UEFI, generalmente si deve premere il tasto CANC / DEL (Asus, MSI) oppure F2 (Asus, Acer) o F10 (HP/Compaq) all'avvio del PC, ma in alcuni notebook non è così immediato: a volte a notebook spento bisogna tenere premuto uno dei tasti appena citati e accendere, oppure premere un apposito interruttore con la punta di una biro (Lenovo).
In alcuni UEFI (es. portatili Acer) per poter modificare alcune opzioni, bisogna prima impostare una Supervisor Password dall’UEFI stesso.

Info.png Nota
L'incompatibilità tra Debian e il Secure Boot è in corso di risoluzione. Fare riferimento a questa segnalazione di bug sul BTS. Debian 10 (Buster) è la prima a supportare il Secure Boot out-of-the-box, almeno per le architetture PC a 64 bit (amd64).

Supporti di installazione

Quasi tutti i supporti di installazione Debian sono già avviabili da UEFI, tranne:

  • l'immagine ridottissima mini.iso (conosciuta anche come netboot), che non ha un bootloader UEFI.
  • le immagini live delle "vecchie" release, Debian 8 (Jessie) compresa. Mentre da Debian 9 ( Stretch) UEFI è supportato, e da Debian 10 (Buster) lo è anche il Secure Boot sulla maggior parte dei moderni PC (per maggiori informazioni si rimanda qui).

mini.iso

Questa immagine iso non possiede un bootloader per UEFI, ma al suo interno ce n'è uno e possiamo metterlo benissimo noi se usiamo una chiavetta USB come supporto di installazione.
Dopo aver trasferito la mini.iso sulla chiavetta USB come descritto qui, avremo sulla chiavetta una piccola partizione vuota in FAT12 con etichetta "Firmware", dove in genere si piazzano i firmware di cui potrebbe aver bisogno l'installer di Debian per far funzionare alcune periferiche. Noi la useremo come se fosse una partizione ESP senza bisogno di ulteriori modifiche. Basta prelevare dalla mini.iso il file /boot/grub/efi.img (non so perché non sia già integrato di default) con:

$ isoinfo -J -i ~/Scaricati/mini.iso -x /boot/grub/efi.img > /tmp/efi.img

(isoinfo si trova nel pacchetto genisoimage; cambiare eventualmente ~/Scaricati/ con il percorso in cui si trova la mini.iso).
Poi montare la partizione "Firmware" e posizionarvisi con:

$ mkdir /tmp/Firmware
# mount /dev/sdb2 /tmp/Firmware/
$ cd /tmp/Firmware/

(cambiare eventualmente /dev/sdb con il percorso effettivo della chiavetta usb se non corrisponde).
Infine estrarre il bootloader con:

$ 7z x /tmp/efi.img

(7z è contenuto nel pacchetto p7zip-full).
Adesso anche la mini.iso è diventata avviabile da UEFI.
Se si sta usando Windows per creare il supporto di installazione è possibile usare 7-Zip sia per estrarre il file efi.img dalla mini.iso, sia per decomprimere il file efi.img nella partizione "Firmware".

Installazione

Una volta avviata, la procedura d'installazione è la stessa di quella di un PC con BIOS, almeno fino al momento del partizionamento.

Warning.png ATTENZIONE
Si suppone che il disco in cui sarà installato Debian sia vuoto o contenga dati inutili o già salvati su altre periferiche di memorizzazione, perché le operazioni che seguono, come ad esempio cambiare la tabella delle partizioni, comporteranno la perdita dei dati.


Partizionamento

Arrivati al passo dell'installazione "Partizionamento dei dischi", l'installer riconosce di essere stato avviato da UEFI e, nel caso il disco abbia una tabella partizioni MBR, chiederà: "Forzare l'installazione UEFI?". Dato che stiamo installando in modalità UEFI pura la risposta è sì, tranne che non si vuole provare a fare qualche accostamento di impostazioni esotico. Se non lo chiederà, vuol dire che il disco non ha ancora nessuna tabella delle partizioni oppure è già in GPT.
A questo punto chiederà se partizionare manualmente o automaticamente. Se si fa automaticamente si dovrebbe notare uno spazio libero di 1,0 MB all'inizio del disco, poi la partizione ESP di qualche centinaio di MB, le solite partizioni in ext4 e swap, e alla fine del disco uno spazio libero di 1,1 MB. Se sono presenti i due spazi liberi all'inizio e alla fine, allora il disco è sicuramente in GPT.
Se si sceglie il partizionamento manuale ricordarsi di creare una partizione ESP (nella lista dei possibili file system c'è "Partizione di sistema EFI"), con una grandezza di 100 MB (che è la dimensione che imposta l'installer di Windows; considerare che già 100 MB sono anche troppi se non si ha intenzione di sperimentare con gli eseguibili UEFI).
Se durante la creazione delle partizioni l'installer chiede se la partizione deve essere primaria o logica, allora il disco è ancora in MBR e bisogna cambiare manualmente in GPT. Per fare ciò basta fare doppio clic (o selezionare e premere INVIO) sulla riga contenente il nome del disco (ad esempio nel mio sistema la riga è SCSI1 (0,0,0) (sda) - 500.1 GB ATA WDC WD5000AAKS-0) e chiederà se creare una nuova tabella delle partizioni: rispondere sì (se si sta installando in expert mode farà scegliere il tipo di tabella: selezionare gpt; per la cronaca il tipo msdos è il MBR). Adesso le partizioni create manualmente non dovrebbero più richiedere se essere primarie o logiche, ma invece potrebbero richiedere un’etichetta (caratteristica di GPT).

Installazione di GRUB

GRUB, il bootloader predefinito di Debian, viene installato nella partizione ESP in /EFI/debian/grubx64.efi (quel x64 nel nome è perché ho installato Debian con architettura amd64). Durante l'installazione di GRUB, potrebbe essere chiesto se si vuole installare una seconda copia del bootloader in un percorso generico della partizione ESP (che dovrebbe essere /EFI/Boot/bootx64.efi), nel caso che l'UEFI di quella macchina sia implementato male e invece di cercare tutti i bootloader presenti nella partizione di sistema, cerchi soltanto quello presente in quel percorso (bug frequente, spesso nelle prime macchine con UEFI). In questo caso GRUB potrebbe sovrascrivere il bootloader di un S.O. già presente, ma si potrà sempre configurare GRUB per avviare anche l'altro S.O. (generalmente basta dare il comando update-grub come root o con sudo).

Dual boot con Windows

Grazie a UEFI e GPT, nessun sistema operativo installato per ultimo dovrebbe prendere il sopravvento sugli altri, ognuno piazzerà il suo bootloader e la sua configurazione d’avvio sulla partizione ESP. Quindi si può installare tranquillamente prima Debian e poi Windows, o viceversa. In ogni caso entrambi i S.O. dovrebbero avere la propria voce nelle impostazioni di avvio dell'UEFI e da qui si potrà scegliere quale dei due avviare.
Tutto ciò però in un mondo ideale. Nel mondo reale come già detto prima ci sono molti programmatori di UEFI che non rispettano gli standard e si potrebbe finire con delle situazioni in cui si dovrà reinstallare il bootloader di Debian.
In dual-boot con Windows è praticamente necessario scegliere Debian come sistema operativo da avviare in automatico, in quanto il suo bootloader GRUB riconosce e può avviare anche l'installazione di Windows (mentre il bootloader di Windows riesce solo ad avviare Windows).
Ricordarsi che il primo sistema operativo che si installa andrà a creare la partizione ESP e i successivi S.O. installati non avranno bisogno di crearne altre, perché ne basta una sola in un disco e tutti i S.O. useranno quella.

Se si installa Windows dopo Debian, bisognerà eseguire il comando

# update-grub

in Debian per far trovare a GRUB l’installazione di Windows e creare una voce d'avvio.

Per l'informazione, anche l'installer di Windows riconosce se è stato avviato in modalità UEFI e anche per lui vale la regola che bisogna avere il disco con la tabella GPT, altrimenti l'installazione non potrà proseguire. Per cambiarla bisogna aprire dall'installer stesso un prompt dei comandi ed eseguire diskpart (ma questo è off-topic), oppure si può usare una distro Linux live per convertire in GPT prima di installare Windows. Dopo alcuni test, sembrerebbe che a partire da Windows 10 la conversione da MBR a GPT sia automatica durante l'installazione e non è più necessario convertire prima di installare.
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).
Dopo l'installazione di Windows 8.x o 10 (o, se già installato, prima dell'installazione di Debian) bisogna disabilitare la funzione fast startup (avvio veloce) per poter far convivere i due sistemi operativi.

Riferimenti




Guida scritta da: BubuXP 12:52, 27 mag 2015 (CEST) Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized