Differenze tra le versioni di "UEFI e GPT"

Da GolemWiki.
Jump to navigation Jump to search
m (Categoria howto)
m (Titoletto errato)
 
(3 versioni intermedie di 2 utenti non mostrate)
Riga 3: Riga 3:
 
UEFI è il nuovo standard che sostituirà il BIOS, ovvero quel programma di base che viene lanciato all'avvio del computer e ne consente la configurazione base e l'avvio dei sistemi operativi. UEFI ha destato attenzione nel mondo '''Linux''' per tre motivi:
 
UEFI è il nuovo standard che sostituirà il BIOS, ovvero quel programma di base che viene lanciato all'avvio del computer e ne consente la configurazione base e l'avvio dei sistemi operativi. UEFI ha destato attenzione nel mondo '''Linux''' per tre motivi:
  
# adotta nuovi metodi di '''avvio''' e di '''partizionamento''', infatti non è più presente la scelta di avvio dal primo/secondo disco o dal CD, bensì è UEFI a rilevare i supporti avviabili. Anche i CD e le pennine di installazione devono quindi essere '''UEFI-compatibili''', ma la maggior parte lo è (Ubuntu, Debian, ArchLinux...);
+
# adotta nuovi metodi di '''avvio''' e di '''partizionamento''', infatti non è più presente la scelta di avvio dal primo/secondo disco o dal CD, bensì è UEFI a rilevare i supporti avviabili. Anche i CD e le pennine di installazione devono quindi essere '''UEFI-compatibili''', ma la maggior parte lo è (Ubuntu, Mint, Debian, ArchLinux...);
# il sistema di partizionamento MBR è stato soppiantato da '''GPT''', quindi bisogna imparare a partizionare i dischi seguendo questo standard: la nuova tabella partizioni consente di creare più di 4 partizioni primarie (non esiste più il concetto di partizione estesa). Inoltre è necessaria una partizione di avvio ('''Partizione GPT'''), che contiene i file di avvio dei sistemi installati. Infine, al posto di fdisk e cfdisk si usano rispettivamente '''gdisk''' e '''cgdisk''';
+
# il sistema di partizionamento MBR è stato soppiantato da '''GPT''', quindi bisogna imparare a partizionare i dischi seguendo questo standard: la nuova tabella partizioni consente di creare più di 4 partizioni primarie (fino a 128, e non esiste più il concetto di partizione estesa). Inoltre è necessaria una partizione dedicata per l'avvio, detta ''ESP (EFI System Partition)'', che contiene i file di avvio dei sistemi installati. I comandi fdisk e cfdisk sono stati aggiornati e supportano anche GPT. Su distro vecchie (precedenti al 2016-2017) è necessario usare rispettivamente '''gdisk''' e '''cgdisk''';
# '''Microsoft''' ha messo lo zampino nella tecnologia del '''secure boot''': un controllo che consente di bloccare l'installazione di sistemi non autorizzati (opzione che sulla maggior parte dei dispositivi venduti è disabilitabile)
+
# '''Microsoft''' ha messo lo zampino nella tecnologia del '''secure boot''': un controllo che consente di bloccare l'installazione di sistemi non autorizzati; l'opzione sulla maggior parte dei dispositivi venduti può essere disabilitata, e se non può esserlo, spesso si riesce comunque a installare Linux, anche se con qualche grattacapo in più;
  
 
In questa pagina si cerca di riassumere tutto quello che c'è da sapere su UEFI prendendo come obiettivo l'installazione della distribuzione '''ArchLinux'''.
 
In questa pagina si cerca di riassumere tutto quello che c'è da sapere su UEFI prendendo come obiettivo l'installazione della distribuzione '''ArchLinux'''.
  
 
=Configurare UEFI=
 
=Configurare UEFI=
Il primo passo da compiere è entrare nel menù di UEFI, premendo il tasto giusto all'avvio (di solito '''CANC''' o '''F2''', ma varia in base al modello). L'interfaccia grafica non è identica su tutti i computer: alcuni produttori usano quella simile al vecchio bios (blu e bianca), altri aggiungono a questa una versione più intuitiva e grafica dove è possibile usare il mouse.
+
Il primo passo da compiere è entrare nel menù di UEFI, premendo il tasto giusto all'avvio (di solito '''DEL/CANC''' o '''F2''', ma varia in base al modello). L'interfaccia grafica non è identica su tutti i computer: alcuni produttori usano quella simile al vecchio bios (bianca e blu/grigia), altri aggiungono a questa una versione più intuitiva e grafica dove è addirittura possibile usare il mouse, navigare un filesystem, catturare screenshot e navigare con un browser web.
 
 
 
   
 
   
Per installare sistemi ''diversi da Windows'' vanno disabilitati i parametri '''Fast Boot''' e '''Secure Boot''', dopodiché è possibile inserire il cd di installazione, da cui fare il boot (a volte è necessario riavviare per far rilevare il disco a UEFI).
+
Per installare sistemi ''diversi da Windows'' vanno disabilitati i parametri '''Fast Boot''' e '''Secure Boot''', dopodiché è possibile inserire il CD di installazione, da cui fare il boot (a volte è necessario riavviare per far rilevare il disco a UEFI).
  
 
=Partizionamento=
 
=Partizionamento=
Fatto il boot con il '''live CD''', apri il '''terminale''' e verifica che i tool per GPT siano installati (per esempio gdisk), altrimenti installali con:
+
Fatto il boot con il live CD, è possibile vedere tutti i dischi e le relative partizioni con il comando
 +
fdisk -l
  
# pacman -S gptfdisk              # ArchLinux
+
Eventualmente si può specificare un disco solo di cui si vogliono informazioni.
# apt-get install cgdisk gdisk    # Ubuntu/Debian
 
Con il comando ls /dev/sd* sono mostrati tutti i '''dischi''' e le relative '''partizioni''' presenti sul disco. Solitamente è presente solo sda con varie partizioni, anche se alcuni computer sono dotati di dischi ibridi (sia meccanici che a stato solido) o di doppio disco, quindi verrà mostrato anche sdb.
 
Per saperne di più sui singoli dischi digita gdisk -l /dev/disco
 
  
  # gdisk -l /dev/sda
+
  # fdisk -l /dev/sda
 
  Found valid GPT with protective MBR; using GPT.
 
  Found valid GPT with protective MBR; using GPT.
 
  Disk /dev/sda: 976773168 sectors, 465.8 GiB
 
  Disk /dev/sda: 976773168 sectors, 465.8 GiB
Riga 30: Riga 27:
 
  [...]
 
  [...]
  
Individuato il disco, è possibile passare al '''partizionamento''' (è bene sottolineare: la procedura seguente eliminerà ogni dato già presente sul disco, ma a nessuno importa...): utilizzando il comando cgdisk /dev/sda (molto simile a cfdisk) è possibile eliminare tutte le partizioni, tenendo a mente le '''dimensioni della prima''', contrassegnata dal codice EF00. Tale partizione va ricreata, preferibilmente della stessa dimensione, dopodiché è possibile creare le altre partizioni (root, home, windows-dedicata) seguendo la medesima procedura:
+
Individuato il disco, è possibile passare al ''partizionamento''.
 +
 
 +
'''ATTENZIONE''' la procedura seguente eliminerà ogni dato già presente sul disco, ma in genere a nessuno importa...
 +
 
 +
Utilizzare il comando
 +
cfdisk /dev/sda
 +
 
 +
È possibile eliminare tutte le partizioni, tenendo a mente le '''dimensioni della prima''', contrassegnata dal codice '''EF00'''. Tale partizione va ricreata, per sicurezza '''della stessa dimensione e allineata allo stesso blocco''', dopodiché è possibile creare le altre partizioni (root, home, windows-dedicata) seguendo la medesima procedura:
  
 
# Nello '''spazio libero''' (inizialmente tutto il disco) crea una ''nuova partizione'' (New);
 
# Nello '''spazio libero''' (inizialmente tutto il disco) crea una ''nuova partizione'' (New);
Riga 38: Riga 42:
 
#*'''Root''' - senza la home, ovvero solo i file di sistema Linux, occupa al massimo una decina di Gb, quindi per lasciare un margine è bene assegnare 15G
 
#*'''Root''' - senza la home, ovvero solo i file di sistema Linux, occupa al massimo una decina di Gb, quindi per lasciare un margine è bene assegnare 15G
 
#*'''/home''' - i dati utente hanno dimensione variabile, quindi è a propria discrezione
 
#*'''/home''' - i dati utente hanno dimensione variabile, quindi è a propria discrezione
# Inserisci il tipo di partizione: '''EF00''' per la EFI, '''8300''' per Linux, '''0700''' per Windows;
+
# Inserisci il tipo di partizione: '''EF00''' per la EFI, '''8300''' per Linux, '''8200'' per la swap, '''0700''' per Windows;
 
# Etichetta: sempre utile per identificare a occhio una partizione, è a discrezione dell'utente (esempio ''LinuxHome'' per la home);
 
# Etichetta: sempre utile per identificare a occhio una partizione, è a discrezione dell'utente (esempio ''LinuxHome'' per la home);
 
# Ripeti dal punto 1 per tutte le partizioni necessarie
 
# Ripeti dal punto 1 per tutte le partizioni necessarie
  
Le partizioni possono essere formattate normalmente (mkfs.ext4 /dev/sdy), eccetto la partizione '''EFI''', che va formattata in '''FAT''' con mkfs.vfat -T32 /dev/sda1. Nel caso tu voglia installare anche Windows è preferibile installarlo dopo il partizionamento e prima di installare Linux.
+
Le partizioni possono essere formattate normalmente (mkfs.ext4 /dev/sdy), eccetto la partizione '''EFI''', che va formattata in '''FAT''' con
 +
 
 +
mkfs.vfat -T32 /dev/sda1
 +
 
 +
Nel caso tu voglia installare anche Windows è preferibile installarlo dopo il partizionamento e prima di installare Linux.
  
 
=Configurazione di GRUB=
 
=Configurazione di GRUB=
Riga 51: Riga 59:
 
  # grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --recheck --debug
 
  # grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --recheck --debug
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 +
 +
==Configurazione della BootList==
 +
Il comando grub-install inserisce automaticamente Linux all'interno dei menù di avvio di EFI. In caso di dual boot sta poi all'utente decidere se impostarlo come scelta di avvio automatica, cosa che va fatta manualmente dai menù di EFI, all'avvio.
 +
 +
Ci è stato riferito che a volte il metodo manuale da EFI può fallire: c'è anche il modo di modificare la lista degli avvii di EFI dall'interno di Linux.
 +
 +
$ efibootmgr
 +
 +
BootCurrent: 0000
 +
Timeout: 0 seconds
 +
BootOrder: 0000,0004
 +
Boot0000* Windows Boot Manager
 +
Boot0004* ArchLinux
 +
 +
 +
L'output del comando efibootmgr è la lista dei sistemi installati (in questo caso ArchLinux e Windows), insieme alla lista di avvio (BootOrder), che in questo caso privilegia Windows.
 +
 +
Per modificarla basta aggiungere la relativa opzione, elencando gli ID dei sistemi operativi nell'ordine desiderato, separandoli da virgola
 +
 +
# efibootmgr --bootorder 0004,0000
 +
 +
In questo esempio si imposta Linux come primo sistema.
 +
 +
= Problemi =
 +
Problema: avete rotto tutto, avete sovrascritto le variabili EFI, non funziona più nulla, vi rannicchiate in posizione fetale.
 +
 +
Soluzione: impostare il boot da CD e procurarsi un disco di [http://www.rodsbooks.com/refind/ rEFInd]. rEFInd trova i sistemi che hanno un file di avvio nella ''ESP'' (EFI System Partition) e vi chiederà di sceglierne uno (vedi figura). rEFInd è utile anche per avviare altri utili ''strumentopoli'' che possono venire in nostro soccorso, come la ''EFI shell''.
 +
 +
<gallery>
 +
File:refind.png
 +
</gallery>
 +
 +
Procurarsi la EFI-Shell (almeno v2), da qualche parte, es [https://github.com/tianocore/edk2/tree/master/ShellBinPkg github] o [https://aur.archlinux.org/packages/uefi-shell-git/ AUR].
 +
 +
'''Attenzione''': alcune schede madri ce l'hanno integrata, ma potrebbe non essere completa (es schede MSI), perciò scaricarla ugualmente.
 +
 +
Creare una directory <code>ESP/efishell/</code> in cui mettere l'eseguibile della ''EFI Shell'' <code>shellx64_v2.efi</code>, e avviarlo tramite il disco di rEFInd (o con la EFI shell già integrata)
 +
 +
Prendere un po' di dimestichezza con l'EFI-Shell. È case-sensitive, ma fa cose "alla Windows", quindi occhio:
 +
* Vedere i device riconosciuti:
 +
> map
 +
* ''fs0'', ''fs1'', ecc... indicano i filesystem delle ESP trovate; potete navigarci:
 +
> fs0:
 +
> ls
 +
* ''blk0'', ''blk1'', ecc... indicano le partizioni trovate ma non leggibili (NTFS, EXT)
 +
 +
Eliminare tutto ciò che non è necessario (file di avvio di Windows e cartelle). ''rm'' funziona sia con file che con directory:
 +
> rm filename
 +
 +
Mostrare la lista della sequenza d'avvio. Ad ogni entry corrisponde un numero.
 +
> bcfg boot dump
 +
 +
Prima di modificare qualunque cosa, cancellare tutto ciò che non è necessario (ma occhio a non cancellare cose preziose, tipo la ''EFI Shell'' integrata). Il numero indica l'entry desiderata. Occhio perché potrebbero riordinarsi automaticamente.
 +
> bcfg boot rm 3
 +
 +
Aggiungere l'entry necessaria:
 +
> bcfg boot add 1 fs0:/EFI/arch/grubx64.efi "Arch"
 +
 +
'''Attenzione''' a volte la scheda madre vuole avviare per forza Windows. Facciamoglielo credere mettendo il ''grubx64.efi'' nella ESP sotto ''EFI/Microsoft/Boot/bootmgfw.efi'' (attenzione alle maiuscole, anche se è FAT).
  
 
[[Category: Howto]]
 
[[Category: Howto]]

Versione attuale delle 14:55, 31 gen 2018

Introduzione a UEFI e GPT

UEFI è il nuovo standard che sostituirà il BIOS, ovvero quel programma di base che viene lanciato all'avvio del computer e ne consente la configurazione base e l'avvio dei sistemi operativi. UEFI ha destato attenzione nel mondo Linux per tre motivi:

  1. adotta nuovi metodi di avvio e di partizionamento, infatti non è più presente la scelta di avvio dal primo/secondo disco o dal CD, bensì è UEFI a rilevare i supporti avviabili. Anche i CD e le pennine di installazione devono quindi essere UEFI-compatibili, ma la maggior parte lo è (Ubuntu, Mint, Debian, ArchLinux...);
  2. il sistema di partizionamento MBR è stato soppiantato da GPT, quindi bisogna imparare a partizionare i dischi seguendo questo standard: la nuova tabella partizioni consente di creare più di 4 partizioni primarie (fino a 128, e non esiste più il concetto di partizione estesa). Inoltre è necessaria una partizione dedicata per l'avvio, detta ESP (EFI System Partition), che contiene i file di avvio dei sistemi installati. I comandi fdisk e cfdisk sono stati aggiornati e supportano anche GPT. Su distro vecchie (precedenti al 2016-2017) è necessario usare rispettivamente gdisk e cgdisk;
  3. Microsoft ha messo lo zampino nella tecnologia del secure boot: un controllo che consente di bloccare l'installazione di sistemi non autorizzati; l'opzione sulla maggior parte dei dispositivi venduti può essere disabilitata, e se non può esserlo, spesso si riesce comunque a installare Linux, anche se con qualche grattacapo in più;

In questa pagina si cerca di riassumere tutto quello che c'è da sapere su UEFI prendendo come obiettivo l'installazione della distribuzione ArchLinux.

Configurare UEFI

Il primo passo da compiere è entrare nel menù di UEFI, premendo il tasto giusto all'avvio (di solito DEL/CANC o F2, ma varia in base al modello). L'interfaccia grafica non è identica su tutti i computer: alcuni produttori usano quella simile al vecchio bios (bianca e blu/grigia), altri aggiungono a questa una versione più intuitiva e grafica dove è addirittura possibile usare il mouse, navigare un filesystem, catturare screenshot e navigare con un browser web.

Per installare sistemi diversi da Windows vanno disabilitati i parametri Fast Boot e Secure Boot, dopodiché è possibile inserire il CD di installazione, da cui fare il boot (a volte è necessario riavviare per far rilevare il disco a UEFI).

Partizionamento

Fatto il boot con il live CD, è possibile vedere tutti i dischi e le relative partizioni con il comando

fdisk -l

Eventualmente si può specificare un disco solo di cui si vogliono informazioni.

# fdisk -l /dev/sda
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
[...]

Individuato il disco, è possibile passare al partizionamento.

ATTENZIONE la procedura seguente eliminerà ogni dato già presente sul disco, ma in genere a nessuno importa...

Utilizzare il comando

cfdisk /dev/sda

È possibile eliminare tutte le partizioni, tenendo a mente le dimensioni della prima, contrassegnata dal codice EF00. Tale partizione va ricreata, per sicurezza della stessa dimensione e allineata allo stesso blocco, dopodiché è possibile creare le altre partizioni (root, home, windows-dedicata) seguendo la medesima procedura:

  1. Nello spazio libero (inizialmente tutto il disco) crea una nuova partizione (New);
  2. Richiesta del primo settore (First sector): premi invio per lasciare quello di default, ovvero a seguito della precedente partizione;
  3. Dimensione della partizione: questo è a scelta libera, il valore può essere inserito nelle unità comuni (Kilo, Mega, Giga), mentre dando invio usa il massimo spazio disponibile. Tieni sempre conto delle seguenti soglie minime
    • EFI - come detto prima, è bene ricrearla della dimensione originaria, nel mio caso era 300M
    • Root - senza la home, ovvero solo i file di sistema Linux, occupa al massimo una decina di Gb, quindi per lasciare un margine è bene assegnare 15G
    • /home - i dati utente hanno dimensione variabile, quindi è a propria discrezione
  4. Inserisci il tipo di partizione: EF00' per la EFI, 8300 per Linux, 8200 per la swap, 0700 per Windows;
  5. Etichetta: sempre utile per identificare a occhio una partizione, è a discrezione dell'utente (esempio LinuxHome per la home);
  6. Ripeti dal punto 1 per tutte le partizioni necessarie

Le partizioni possono essere formattate normalmente (mkfs.ext4 /dev/sdy), eccetto la partizione EFI, che va formattata in FAT con

mkfs.vfat -T32 /dev/sda1

Nel caso tu voglia installare anche Windows è preferibile installarlo dopo il partizionamento e prima di installare Linux.

Configurazione di GRUB

Installato il sistema, bisogna configurare il bootloader per funzionare con EFI. GRUB ha una versione compatibile, da installare mentre si è chrootati. Per prima cosa la partizione EFI (in questo caso /dev/sda1) deve essere montata in una qualsiasi cartella, in modo da consentirne la scrittura dei file di avvio. Successivamente si può installare GRUB e creare il file di configurazione relativo. In caso di dual-boot gli altri sistemi installati saranno rilevati automaticamente soltanto se la partizione EFI è montata.

# mkdir /boot/EFI
# mount /dev/sda1 /boot/EFI
# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --recheck --debug
# grub-mkconfig -o /boot/grub/grub.cfg

Configurazione della BootList

Il comando grub-install inserisce automaticamente Linux all'interno dei menù di avvio di EFI. In caso di dual boot sta poi all'utente decidere se impostarlo come scelta di avvio automatica, cosa che va fatta manualmente dai menù di EFI, all'avvio.

Ci è stato riferito che a volte il metodo manuale da EFI può fallire: c'è anche il modo di modificare la lista degli avvii di EFI dall'interno di Linux.

$ efibootmgr
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0004
Boot0000* Windows Boot Manager
Boot0004* ArchLinux


L'output del comando efibootmgr è la lista dei sistemi installati (in questo caso ArchLinux e Windows), insieme alla lista di avvio (BootOrder), che in questo caso privilegia Windows.

Per modificarla basta aggiungere la relativa opzione, elencando gli ID dei sistemi operativi nell'ordine desiderato, separandoli da virgola

# efibootmgr --bootorder 0004,0000

In questo esempio si imposta Linux come primo sistema.

Problemi

Problema: avete rotto tutto, avete sovrascritto le variabili EFI, non funziona più nulla, vi rannicchiate in posizione fetale.

Soluzione: impostare il boot da CD e procurarsi un disco di rEFInd. rEFInd trova i sistemi che hanno un file di avvio nella ESP (EFI System Partition) e vi chiederà di sceglierne uno (vedi figura). rEFInd è utile anche per avviare altri utili strumentopoli che possono venire in nostro soccorso, come la EFI shell.

Procurarsi la EFI-Shell (almeno v2), da qualche parte, es github o AUR.

Attenzione: alcune schede madri ce l'hanno integrata, ma potrebbe non essere completa (es schede MSI), perciò scaricarla ugualmente.

Creare una directory ESP/efishell/ in cui mettere l'eseguibile della EFI Shell shellx64_v2.efi, e avviarlo tramite il disco di rEFInd (o con la EFI shell già integrata)

Prendere un po' di dimestichezza con l'EFI-Shell. È case-sensitive, ma fa cose "alla Windows", quindi occhio:

  • Vedere i device riconosciuti:
> map
  • fs0, fs1, ecc... indicano i filesystem delle ESP trovate; potete navigarci:
> fs0:
> ls
  • blk0, blk1, ecc... indicano le partizioni trovate ma non leggibili (NTFS, EXT)

Eliminare tutto ciò che non è necessario (file di avvio di Windows e cartelle). rm funziona sia con file che con directory:

> rm filename

Mostrare la lista della sequenza d'avvio. Ad ogni entry corrisponde un numero.

> bcfg boot dump

Prima di modificare qualunque cosa, cancellare tutto ciò che non è necessario (ma occhio a non cancellare cose preziose, tipo la EFI Shell integrata). Il numero indica l'entry desiderata. Occhio perché potrebbero riordinarsi automaticamente.

> bcfg boot rm 3

Aggiungere l'entry necessaria:

> bcfg boot add 1 fs0:/EFI/arch/grubx64.efi "Arch"

Attenzione a volte la scheda madre vuole avviare per forza Windows. Facciamoglielo credere mettendo il grubx64.efi nella ESP sotto EFI/Microsoft/Boot/bootmgfw.efi (attenzione alle maiuscole, anche se è FAT).