Difference between revisions of "GRUB (Italiano)"

From ArchWiki
Jump to: navigation, search
(replaced external links, simplification and beautification of wikilinks, fixing whitespace, capitalization and section fragments (https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py (interactive)))
 
(119 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
[[Category:Boot loaders (Italiano)]]
 
[[Category:Boot loaders (Italiano)]]
 
[[ar:GRUB]]
 
[[ar:GRUB]]
[[cs:GRUB2]]
+
[[cs:GRUB]]
[[en:GRUB2]]
+
[[de:GRUB]]
[[es:GRUB2]]
+
[[el:GRUB]]
[[fr:GRUB2]]
+
[[en:GRUB]]
[[id:GRUB2]]
+
[[es:GRUB]]
[[ru:GRUB2]]
+
[[fr:GRUB]]
 +
[[he:GRUB]]
 +
[[id:GRUB]]
 +
[[ja:GRUB]]
 +
[[nl:GRUB]]
 +
[[pt:GRUB]]
 +
[[ru:GRUB]]
 
[[tr:GRUB2]]
 
[[tr:GRUB2]]
[[zh-CN:GRUB2]]
+
[[uk:GRUB]]
[[zh-TW:GRUB2]]
+
[[zh-cn:GRUB]]
{{Article summary start|Sommario}}
+
[[zh-tw:GRUB]]
{{Article summary text|Questo articolo copre vari aspetti della versione 2 del GRand Unified Bootloader (GRUB) di prossima generazione.}}
+
{{Related articles start (Italiano)}}
{{Article summary heading|Informazioni generali}}
+
{{Related|GRUB Legacy (Italiano)|GRUB Legacy}}
{{Article summary text|{{Boot process overview (Italiano)}}}}
+
{{Related|Arch boot process}}
{{Article summary heading|Articoli correlati}}
+
{{Related|Boot loaders}}
{{Article summary wiki|Burg (Italiano)}} - Burg è un boot loader di nuova concezione basato su GRUB v2. Può essere compilato su una vasta gamma di sistemi operativi e dispone di un sistema di menù altamente configurabili che funzionano sia in modalità grafica che testuale
+
{{Related|Master Boot Record (Italiano)}}
{{Article summary wiki|GRUB Legacy (Italiano)|GRUB Legacy}} - La versione precedente, deprecata.
+
{{Related|GUID Partition Table}}
{{Article summary heading|Risorse}}
+
{{Related|Unified Extensible Firmware Interface (Italiano)}}
{{Article summary wiki|GRUB EFI Examples}}
+
{{Related|GRUB EFI Examples}}
{{Article summary link|GNU GRUB -- GNU Project|http://www.gnu.org/software/grub/}}
+
{{Related articles end}}
{{Article summary end}}
+
 
 +
{{out of date|L'articolo in lingua inglese è in fase di revisione: la versione italiana verrà aggiornata non appena tale revisione sarà terminata.}}
  
 
[http://www.gnu.org/software/grub/ GRUB]  - da non confondere con [[GRUB Legacy (Italiano)|GRUB Legacy]] - è la nuova versione del GRand Unified Bootloader. GRUB deriva da [http://www.nongnu.org/pupa/ PUPA], un progetto di ricerca mirato al miglioramento di  GRUB Legacy: esso è stato infatti totalmente riscritto, ripulendo il codice assicurando al tempo stesso una maggior modularità e portabilità. [http://www.gnu.org/software/grub/grub-faq.html#q1]
 
[http://www.gnu.org/software/grub/ GRUB]  - da non confondere con [[GRUB Legacy (Italiano)|GRUB Legacy]] - è la nuova versione del GRand Unified Bootloader. GRUB deriva da [http://www.nongnu.org/pupa/ PUPA], un progetto di ricerca mirato al miglioramento di  GRUB Legacy: esso è stato infatti totalmente riscritto, ripulendo il codice assicurando al tempo stesso una maggior modularità e portabilità. [http://www.gnu.org/software/grub/grub-faq.html#q1]
Line 30: Line 37:
 
* Il nome ''GRUB'' si riferisce ufficialmente alla versione 2 del software (si veda [http://www.gnu.org/software/grub/]). Se si sta cercando l'articolo relativo alla versione Legacy, si veda [[GRUB Legacy (Italiano)|GRUB Legacy]].
 
* Il nome ''GRUB'' si riferisce ufficialmente alla versione 2 del software (si veda [http://www.gnu.org/software/grub/]). Se si sta cercando l'articolo relativo alla versione Legacy, si veda [[GRUB Legacy (Italiano)|GRUB Legacy]].
  
* E' supportato l'uso del filesystem [[Btrfs|Btrfs]] per la root (eliminando quindi la necessità di una partizione /boot separata con un filesystem diverso). Sono inoltre supportati gli algoritmi di compressione zlib o LZO.
+
* E' supportato l'uso del filesystem [[Btrfs]] per la root (eliminando quindi la necessità di una partizione /boot separata con un filesystem diverso). Sono inoltre supportati gli algoritmi di compressione zlib o LZO.
 +
 
 +
* GRUB non supporta partizioni root formattate in [[F2FS]], perciò sarà necessario creare una partizione {{ic|/boot}} separata usando un filesystem supportato.
  
 
===Note per gli utenti di GRUB Legacy===
 
===Note per gli utenti di GRUB Legacy===
  
* Aggiornare [[GRUB Legacy (Italiano)|GRUB Legacy]] a [[GRUB2 (Italiano)|GRUB]](2) è un procedimento molto simile ad un installazione ex-novo di GRUB2, argomento trattato [[GRUB2 (Italiano)#Installazione | qui]].
+
* Aggiornare [[GRUB Legacy (Italiano)|GRUB Legacy]] a [[GRUB2 (Italiano)|GRUB]](2) è un procedimento molto simile ad un installazione ex-novo di GRUB2, argomento trattato [[#Installazione|qui]].
  
 
* Vi sono differenze nei comandi di GRUB e GRUB2. Si consiglia di familiarizzare con i [http://www.gnu.org/software/grub/manual/grub.html#Commands comandi di GRUB2] prima di procedere. (ad esempio, "find" è stato rimpiazzato da "search").
 
* Vi sono differenze nei comandi di GRUB e GRUB2. Si consiglia di familiarizzare con i [http://www.gnu.org/software/grub/manual/grub.html#Commands comandi di GRUB2] prima di procedere. (ad esempio, "find" è stato rimpiazzato da "search").
 
* GRUB2 è ora ''modulare'' e non richiede più lo "stage 1.5". Di conseguenza, il bootloader dispone di capacità limitate e i moduli sono caricati dal disco rigido in caso di necessità (ad esempio, se si necessita del supporto [[LVM (Italiano)|LVM]] o RAID).
 
* GRUB2 è ora ''modulare'' e non richiede più lo "stage 1.5". Di conseguenza, il bootloader dispone di capacità limitate e i moduli sono caricati dal disco rigido in caso di necessità (ad esempio, se si necessita del supporto [[LVM (Italiano)|LVM]] o RAID).
 
* La modalità di nomenclatura dei dispositivi è cambiata da GRUB a GRUB2: gli hard disk sono ancora numerati a partire da 0, mentre le partizioni partono da 1 e sono seguite dal nome del sistema di partizionamento usato. Ad esempio, a {{ic|/dev/sda1}} corrisponde {{ic|(hd0,msdos1)}} (per sistemi che usano MBR) o {{ic|(hd0,gpt1)}} (per sistemi GPT).
 
* La modalità di nomenclatura dei dispositivi è cambiata da GRUB a GRUB2: gli hard disk sono ancora numerati a partire da 0, mentre le partizioni partono da 1 e sono seguite dal nome del sistema di partizionamento usato. Ad esempio, a {{ic|/dev/sda1}} corrisponde {{ic|(hd0,msdos1)}} (per sistemi che usano MBR) o {{ic|(hd0,gpt1)}} (per sistemi GPT).
*Se si utilizza systemd senza il pacchetto {{Pkg|systemd-sysvcompat}} e si era inserita la linea {{ic|1=init=/usr/lib/systemd/systemd}} nel proprio {{ic|menu.lst}}, il {{ic|grub.cfg}} generato automaticamente potrebbe non riportare il parametro, causando quindi l'errore ''ERROR: Root device mounted successfully, but /sbin/init does not exist''. In caso, si aggiunga {{ic|1=init=/usr/lib/systemd/systemd}} ai parametri del kernel e si [[GRUB2 (Italiano)#Argomenti aggiuntivi|renda permanente]] l'impostazione.
+
*GRUB occupa molto più spazio rispetto a GRUB Legacy (circa 13Mb di spazio occupato in {{ic|/boot}}). Se si effettua il boot da una partizione {{ic|/boot}} separata con una dimensione inferiore ai 32 Mb si avranno problemi di spazio e pacman si rifiuterà di installare eventuali nuovi kernel, ad esempio.
*GRUB occupa molto più spazio rispetto a GRUB Legacy (circa 13Mb di spazio occupato in {{ic|/boot}}). Se si effettua il boot da una partizione {{ic|/boot}} separata con una dimensione inferiore ai 32 Mb si avranno problemi di spazio e pacman si rifiuterà di installare eventuali nuovi kernel, ad esempio. Se non si desidera ripartizionare il sistema, si effettui il passaggio a [[Syslinux (Italiano)|Syslinux]], che ha dimensioni molto più ridotte (circa 1,5 Mb di spazio occupato in {{ic|/boot}}).
+
  
 
====Effetuare un backup dei dati importanti====
 
====Effetuare un backup dei dati importanti====
  
In genere, l'installazione di grub dovrebbe andare a buon fine, ma è consigliabile conservare i files di GRUB-legacy prima di installare {{Pkg|grub-bios}}.
+
In genere, l'installazione di grub dovrebbe andare a buon fine, ma è consigliabile conservare i files di GRUB-legacy prima di installare {{Pkg|grub-bios}}{{Broken package link|replaced by {{Pkg|grub}}}}.
  
 
  mv /boot/grub /boot/grub-legay
 
  mv /boot/grub /boot/grub-legay
Line 55: Line 63:
 
  # dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1
 
  # dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1
  
Se non si è stati in grado di installare GRUB2 correttamente, si veda [[GRUB2 (Italiano)#Ripristinare GRUB Legacy]]
+
Se non si è stati in grado di installare GRUB2 correttamente, si veda [[#Ripristinare GRUB Legacy]]
  
 
===Prerequisiti per GRUB2===
 
===Prerequisiti per GRUB2===
Line 63: Line 71:
 
=====Istruzioni specifiche per GUID Partition Table (GPT)=====
 
=====Istruzioni specifiche per GUID Partition Table (GPT)=====
  
Nelle accoppiate [[GPT|BIOS-GPT]], GRUB richiede una [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html#BIOS-installation partizione di boot] in cui posizionare il suo {{ic|core.img}}, a causa della mancanza del gap di 31KiB dopo il MBR nei sistemi che usano il metodo di partizionamento GPT (al suo posto si ha il GPT Primary Header e la Primary Partition Table).
+
Su sistemi [[GPT]] è necessario creare una [http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html partizione di boot BIOS] dove GRUB possa inserire il proprio {{ic|core.img}}
Questa partizione è usata da GRUB solo nelle configurazioni BIOS-GPT, e non è necessaria se si usa il metodo di partizionamento classico (MBR) oppure si è su un sistema UEFI.
+
  
Per le configurazioni BIOS-GPT, si crei una partizione da circa 1007 KiB all'inizio del disco usando gdisk, cgdisk o GNU Parted senza assegnarle un filesystem. La dimensione di 1007 KiB permetterà alla partizione di essere allineata correttamente a 1024 KiB e se necessario può essere posizionata anche in altri punti dell'unità, ma dovrebbe sempre rimanere nella regione corrispondente ai primi 2 TiB. Si assegni alla partizione il tipo {{ic|ef02}} se si sta usando (c)gdisk, mentre {{ic|<BOOT_PART_NUM> bios_grub on}} se si usa GParted.
+
{{Nota|
 +
* Prima di provare questo metodo si tenga presente che non tutti i sistemi supportano questa configurazione. Ulteriori informazioni sulle [[GUID_Partition_Table#BIOS_systems|tabelle partizioni GUID]].
 +
* La partizione in questione è necessaria solo per le combinazioni BIOS/GPT. In precedenza, su schemi di partizionamento BIOS/MBR, GRUB utilizzava il ''post-MBR gap'' per inserire il proprio {{ic|core.img}}. GRUB per GPT non utilizza tale spazio per rispettare le specifiche GPT sull'allineamento tra le partizioni (1 Mebibyte/2048 settori).
 +
* Su sistemi [[Unified Extensible Firmware Interface (Italiano)|UEFI]] tale partizione non è richiesta in quanto in questo caso non si verifica l'''embedding'' dei settori di boot.}}
  
{{Nota|È necessario creare la partizione in oggetto prima di eseguire il comando {{ic|grub-install}} o {{ic|grub-setup}}.}}
+
Si crei una partizione da un mebibyte ({{ic|1=+1MiB}} con {{ic|gdisk}}) su un disco senza filesystem e le si assegni il tipo {{ic|ef02}} (oppure {{ic|bios_grub}} se si utilizza {{ic|parted}}). Si noti che la partizione può trovare in qualsiasi posizione entro i primi 2 TiB del disco e deve essere creata prima dell'installazione.
 +
Una volta creata la aprtizione, si installi il bootloader seguendo le istruzioni sotto e assicurarsi di specificare l'opzione {{ic|1=--target=i386-pc}} (altrimentri GRUB potrebbe pensare di trovarsi su un sistema EFI-GPT).
  
{{Nota|{{ic|gdisk}} permetterà di creare la partizione in oggetto in modo da ridurre al minimo gli sprechi di spazio (settori 34-2047), dal momento che {{ic|gdisk}} allinea automaticamente le partizioni ai settori multipli di 2048.}}
+
È possibile utilizzare il ''post-MBR gap'' come partizione di boot BIOS, anche se tale operazione non rispetta le specifiche GPT sull'allineamento delle partizioni. Dal momento che il contenuto di tale partizione non verrà letto spesso è possibile ignorare l'impatto sulle prestazioni, anche se alcune utility per il partizionamento visualizzeranno un messaggio d'avvertimento. In {{ic|gdisk}} si crei una '''n'''uova partizione che inizia al settore 34 e arriva al 2047, e le si assegni il tipo. Per fare in modo che le partizioni visibili partano dall'inizio, si crei questa partizione per ultima.
  
 
=====Istruzioni specifiche per Master Boot Record (MBR)=====
 
=====Istruzioni specifiche per Master Boot Record (MBR)=====
Line 77: Line 88:
 
====Sistemi UEFI====
 
====Sistemi UEFI====
  
{{Nota|Per ulteriori informazioni su GRUB2 UEFI, è consigliabile leggere le pagine [[Unified Extensible Firmware Interface (Italiano)|UEFI]], [[GPT|GPT]] e [[UEFI_Bootloaders|UEFI_Bootloaders]] prima di proseguire con questo articolo.}}
+
{{Nota|Per ulteriori informazioni su GRUB2 UEFI, è consigliabile leggere le pagine [[Unified Extensible Firmware Interface (Italiano)|UEFI]], [[GPT]] e [[UEFI Bootloaders]] prima di proseguire con questo articolo.}}
  
=====Creazione e montaggio della partizione UEFI di sistema=====
+
=====Controllare se si sta utilizzando GPT ed una partizione EFI di sistema=====
  
Si seguano le istruzioni di creazione in [[Unified Extensible Firmware Interface (Italiano)#Creare una partizione di_sistema UEFI con Linux|Creare una partizione UEFI di sistema]]. Si proceda quindi al montaggio della partizione in {{ic|/boot/efi}}. Se si è montata tale partizione in qualche altro punto di mount, si sostituisca di conseguenza {{ic|/boot/efi}} nei comandi sottostanti.
+
È necessaria una partizione EFI di sistema (''ESP'') in ogni disco fisso dal quale si desideri effettuare il boot in modalità EFI. GPT non è strettamente necessario, ma ne è raccomandato l'utilizzo, in quanto è l'unico metodo supportato da questo articolo.
  
{{bc|
+
Se si sta installando Arch Linux su un PC con supporto EFI dove sia già stato installato un altro sistema operativo, è probabile che si disponga già di una ESP. Si controlli utilizzando {{ic|parted}} per stampare la tabella partizioni del disco dal quale si effettua il boot (nell'esempio si utilizzerà {{ic|/dev/sda}}):
# mkdir -p /boot/efi
+
# mount -t vfat <UEFI_SYSTEM_PARTITION> /boot/efi
+
}}
+
  
Si crei inoltre {{ic|/boot/efi/EFI}}
+
# parted /dev/sda print
# mkdir -p /boot/efi/EFI
+
 
 +
Se si utilizza GPT, il comando dovrebbe riportare {{ic|Partition Table: GPT}}. Per EFI, invece, individuare una piccola partizione (512 MiB o meno) con filesystem {{ic|vfat}} e il flag {{ic|boot}} attivo contenente una cartella chiamata ''EFI''. In caso i criteri di cui sopra vengano soddisfatti, ricordarsi del numero assegnato alla partizione, in quanto sarà necessario per identificare la stessa quando dovrà essere montata per l'installazione di GRUB.
 +
 
 +
=====Creazione di una partizione EFI di sistema=====
 +
 
 +
Se non si dispone di una ESP, sarà necesario crearla. Si veda [[Unified Extensible Firmware Interface#EFI System Partition]] per le istruzioni su come procedere.
  
 
==Installazione==
 
==Installazione==
 +
 +
{{Nota|Se si sta [[Installation guide (Italiano)|installando]] Arch Linux da LiveCD assicurarsi di aver effettuato il chroot nel sistema appena installato prima di installare GRUB: se si utilizzano gli script di installazione contenuti nel LiveCD potrebbe venir generato un {{ic|grub.cfg}} errato o potrebbero verificarsi altri problemi che non consentirebbero al sistema di avviarsi.}}
  
 
===Sistemi BIOS===
 
===Sistemi BIOS===
  
E' possibile [[pacman (Italiano)|installare]] GRUB attraverso il pacchetto {{Pkg|grub}}, il quale sostituirà {{Pkg|grub-legacy}}, se installato.
+
E' possibile [[pacman (Italiano)|installare]] GRUB attraverso il pacchetto {{Pkg|grub}}, il quale sostituirà {{AUR|grub-legacy}}, se installato.
  
 
{{Nota|La sola installazione del pacchetto non aggiornerà il file {{ic|/boot/grub/i386-pc/core.img}} o i moduli di GRUB2 in {{ic|/boot/grub}}. È necessario aggiornare il {{ic|core.img}} e i moduli manualmente usando {{ic|grub-install}}, come spiegato sotto.}}
 
{{Nota|La sola installazione del pacchetto non aggiornerà il file {{ic|/boot/grub/i386-pc/core.img}} o i moduli di GRUB2 in {{ic|/boot/grub}}. È necessario aggiornare il {{ic|core.img}} e i moduli manualmente usando {{ic|grub-install}}, come spiegato sotto.}}
Line 101: Line 116:
 
====Installare i file di boot====
 
====Installare i file di boot====
  
Ci sono tre modi per installare i files di boot di GRUB su sistemi BIOS
+
Ci sono quattro modi per installare i files di boot di GRUB su sistemi BIOS
  
* [[#Installazione nella partizione di boot BIOS con schema di partizionamento GPT]]
+
* [[#Installazione su disco|Installazione su disco]] (consigliata)
* [[#Installazione nella regione di 440 byte del MBR]] (consigliata)
+
* [[#Installazione su chiavetta USB|Installazione su chiavetta USB]] (per ripristino)
* [[#Installazione su una partizione o su un disco partitionless]] (sconsigliata)
+
* [[#Installazione su una partizione o su un disco partitionless|Installazione su una partizione o su un disco partitionless]] (sconsigliata)
* [[#Generazione del solo core.img]] (metodo più sicuro, ma richiede un altro bootloader come [[GRUB Legacy (Italiano)|GRUB Legacy]] o [[Syslinux]], che effettui il chainload di {{ic|/boot/grub/i386-pc/core.img}}.
+
* [[#Generazione del solo core.img|Generazione del solo core.img]] (metodo più sicuro, ma richiede un altro bootloader come [[GRUB Legacy (Italiano)|GRUB Legacy]] o [[Syslinux]], che effettui il chainload di {{ic|/boot/grub/i386-pc/core.img}}).
  
 
{{Nota|Si consulti http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html per ulteriori informazioni.}}
 
{{Nota|Si consulti http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html per ulteriori informazioni.}}
  
=====Installazione nella partizione di boot BIOS con schema di partizionamento GPT=====
+
=====Installazione su disco=====
  
Il sistema di partizionamento [[GUID Partition Table|GPT]] non prevede una "traccia di boot" riservata e sarà quindi necessario creare una Partizione di Boot BIOS (0xEF02) per contenere l'immagine di GRUB.
+
{{Nota|Questo metodo tratta l'installazione di GRUB in un disco già partizionato (con MBR o GPT), GRUB installato in {{ic|/boot/grub}} e il relativo codice installato nella regione di 440 byte del MBR (non è da confondere con la tabella partizioni MBR). Per l'installazione su dischi partitionless (super-floppy), si faccia riferimento a [[#Installazione su una partizione o su un disco partitionless]].}}
  
Utilizzando GNU Parted, è possibile assegnare tale tipo ad una partizione utilizzando un comando simile al seguente:
+
Per installare {{ic|grub}} nella regione di 440 byte relativa al boot code, chiamata anche Master Boot Record, popolare la directory {{ic|/boot/grub}}, generare il {{ic|/boot/grub/i386-pc/core.img}} e inserirlo nel gap di 31KiB (la dimensione varia a seconda dell'allineamento delle partizioni) post-MBR (o nella partizione di boot del BIOS nel caso di sistemi partizionati con GPT, identificata tramite il flag {{ic|grub_bios}} in parted e con il codice {{ic|EF02}} in gdisk) si esegua:
  
  # parted /dev/disk set partition-number bios_grub on
+
  # grub-install --target=i386-pc --recheck --debug /dev/sd''x''
 +
# grub-mkconfig -o /boot/grub/grub.cfg
  
Se si sta utilizzando {{ic|gdisk}}, assicurarsi di impostare il tipo della partizione ad '''{{ic|OxEF02}}'''. Quando si partiziona con programmi che richiedano l'impostazione diretta del GUID, quest'ultimo dovrà avere valore {{ic|‘21686148-6449-6e6f-744e656564454649’}} (oppure, {{ic|[[wikipedia:BIOS_Boot_partition|Hah!IdontNeedEFI]]}}).
+
{{Nota|L'opzione {{ic|1=--target=i386-pc}} indica a {{ic|grub-install}} di effettuare un'installazione per sistemi BIOS, ed è consigliato specificarla sempre per evitare ambiguità durante l'installazione.}}
  
{{Attenzione|Si faccia molta attenzione durante la scelta di una partizione di boot BIOS: quando GRUB ne trova una durante l'installazione, ne sovrascriverà automaticamente parte del contenuto. Assicurarsi che la partizione non contenga dati importanti prima di procedere.}}
+
Se si utilizza [[LVM (Italiano)|LVM]] per la propria partizione di {{ic|/boot}}, è possibile installare GRUB su più dischi fissi.
  
Per installare {{ic|grub}} in un disco partizionato in modalità GPT, popolare la directory {{ic|/boot/grub}}, generare il file {{ic|/boot/grub/i386-pc/core.img}} ed effettuarne l'embedding nella partizione di boot BIOS, eseguire:
+
=====Installazione su chiavetta USB=====
  
# modprobe dm-mod
+
Si assuma che la prima partizione della propria chiavetta USB sia formattata in FAT32 e che tale partizione sia {{ic|/dev/sdy1}}:
# modprobe part_gpt
+
# grub-install --target=i386-pc --recheck --debug /dev/sda
+
  
Dove {{ic|/dev/sda}} è il disco di destinazione.
+
#  mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
 +
# grub-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
 +
# grub-mkconfig -o /mnt/usb/boot/grub/grub.cfg
  
Si prosegua con [[GRUB2 (Italiano)#Generare un file di configurazione]].
+
# opzionale, backup dei file di configurazione per grub.cfg
 +
# mkdir -p /mnt/usb/etc/default
 +
# cp /etc/default/grub /mnt/usb/etc/default
 +
# cp -a /etc/grub.d /mnt/usb/etc
  
=====Installazione nella regione di 440 byte del MBR=====
+
  #  sync ; umount /mnt/usb
 
+
Per installare {{ic|grub}} nella regione di 440 byte relativa al boot code, chiamata anche Master Boot Record, popolare la directory {{ic|/boot/grub}}, generare il {{ic|/boot/grub/i386-pc/core.img}}, inserirlo nel gap di 31KiB (la dimensione varia a seconda dell'allineamento delle partizioni) post-MBR o nella partizione di boot del BIOS (GPT) e generare il file di configurazione si esegua:
+
 
+
  # modprobe dm-mod
+
  # grub-install --recheck /dev/sda
+
 
+
dove {{ic|/dev/sda}} è la partizione di destinazione (Nel caso di partizionamento MBR, si riferisce al primo disco SATA). Se si usa [[LVM (Italiano)|LVM]] per la partizione di {{ic|/boot}}, è possibile installare GRUB2 su tutti i dischi fisici.
+
 
+
{{Attenzione|Ci si assicuri di controllare il contenuto della directory {{ic|/boot}} se si usa il secondo comando. Il parametro {{ic|--boot-directory}} può talvolta creare una seconda cartella {{ic|/boot}} dentro a quella già esistente. Un'installazione errata di GRUB, avrà questo aspetto: {{ic|/boot/boot/grub}}}}
+
 
+
Si prosegua con [[GRUB2 (Italiano)#Generare un file di configurazione]].
+
  
 
=====Installazione su una partizione o su un disco partitionless=====
 
=====Installazione su una partizione o su un disco partitionless=====
Line 156: Line 164:
 
# chattr +i /boot/grub/i386-pc/core.img
 
# chattr +i /boot/grub/i386-pc/core.img
 
}}
 
}}
 +
 +
{{Nota|
 +
* {{ic|/dev/sda}} viene usato a titolo di esempio: sostituirlo con il valore corretto in caso fosse diverso.
 +
* L'opzione {{ic|1=--target=i386-pc}} indica a {{ic|grub-install}} di effettuare un'installazione per sistemi BIOS, ed è consigliato specificarla sempre per evitare ambiguità durante l'installazione.}}
  
 
Sarà necessaria l'opzione {{ic|--force}} per consentire l'uso delle blocklists, mentre non si dovrà usare {{ic|1=--grub-setup=/bin/true}}, che equivale a generare il solo {{ic|core.img}}.
 
Sarà necessaria l'opzione {{ic|--force}} per consentire l'uso delle blocklists, mentre non si dovrà usare {{ic|1=--grub-setup=/bin/true}}, che equivale a generare il solo {{ic|core.img}}.
Line 178: Line 190:
 
La soluzione proposta è quella di impostare il flag immutable al {{ic|/boot/grub/i386-pc/core.img}}, in modo che la posizione del {{ic|core.img}} sul disco non venga alterata. Tale flag deve essere impostata solo se {{ic|grub}} viene installato su una partizione o su un disco partitionless, e NON in caso di semplice installazione nel MBR o di generazione del {{ic|core.img}}.
 
La soluzione proposta è quella di impostare il flag immutable al {{ic|/boot/grub/i386-pc/core.img}}, in modo che la posizione del {{ic|core.img}} sul disco non venga alterata. Tale flag deve essere impostata solo se {{ic|grub}} viene installato su una partizione o su un disco partitionless, e NON in caso di semplice installazione nel MBR o di generazione del {{ic|core.img}}.
  
Si continui con il paragrafo [[GRUB2 (Italiano)#Generare un file di configurazione|Generare un file di configurazione]] presentato sotto.
+
Sfortunatamente il {{ic|grub.cfg}} generato non contiene gli UUID corretti, anche se non viene visualizzato nessun messaggio di errore (si veda https://bbs.archlinux.org/viewtopic.php?pid=1294604#p1294604)
 +
 
 +
Per risolvere il problema si esegua:
 +
 
 +
# mount /dev/sdxY /mnt        # Partizione root
 +
# mount /dev/sdxZ /mnt/boot  # Partizione /boot (se in uso)
 +
# arch-chroot /mnt
 +
# pacman -S linux
 +
# grub-mkconfig -o /boot/grub/grub.cfg
  
 
=====Generazione del solo core.img=====
 
=====Generazione del solo core.img=====
Line 186: Line 206:
 
  # grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda
 
  # grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda
  
Sarà quindi possibile effettuare il chainload del {{ic|core.img}} di GRUB da GRUB Legacy o da syslinux.
+
{{Nota|
 +
* {{ic|/dev/sda}} viene usato a titolo di esempio: sostituirlo con il valore corretto in caso fosse diverso.
 +
* L'opzione {{ic|1=--target=i386-pc}} indica a {{ic|grub-install}} di effettuare un'installazione per sistemi BIOS, ed è consigliato specificarla sempre per evitare ambiguità durante l'installazione.}}
  
====Generare un file di configurazione====
+
Sarà quindi possibile effettuare il chainload del {{ic|core.img}} di GRUB da GRUB Legacy o da syslinux come fosse un kernel Linux o un kernel multiboot.
  
Si generi quindi un file di configurazione per GRUB (è possibile trovare ulteriori informazioni nella sezione "Configurazione"):
+
===Sistemi UEFI===
  
  # GRUB_PREFIX="/boot/grub" grub-mkconfig -o /boot/grub/grub.cfg
+
{{Nota|I firmware UEFI non sono implementati in modo consistente tra i vari produttori di hardware. Gli esempi proposti di seguito sono pensati per funzionare con il maggior numero possibile di sistemi UEFI. Se si dovessero riscontrare problemi nonostante si siano seguiti i passaggi è consigliabile raccogliere informazioni dettagliate sulla propria configurazione hardware, specialmente quando si riesce a risolvere il problema. A questo scopo, è stata creata una pagina con [[GRUB EFI Examples|esempi per GRUB EFI]].}}
 +
 
 +
Si installino i pacchetti {{Pkg|grub}}, {{Pkg|dosfstools}} (per la manipolazione di partizioni UEFI dopo l'installazione) ed {{Pkg|efibootmgr}} (per la creazione di file {{ic|.efi}} avviabili, utilizzati dallo script di installazione di GRUB).
 +
 
 +
La semplice installazione del pacchetto non aggiornerà il file {{ic|core.efi}} e il moduli di GRUB nella partizione UEFI. Sarà necessario aggiornarli manualmente usando lo script di installazione di GRUB, come spiegato sotto.
 +
 
 +
====Metodo di installazione consigliato====
 +
 
 +
{{Nota|I comandi seguenti assumono che si stia installando GRUB su sistemi a 64 bit. ({{ic|x86_64-efi}}) Per sistemi i686 si sostituisca ogni occorrenza di {{ic|x86_64-efi}} con {{ic|i386-efi}}. Sarà inoltre necessario assicurarsi che il supporto di installazione sia stato avviato in modalità UEFI e non Legacy, altrimente l'installazione potrebbe non andare a buon fine.}}
 +
 
 +
Assicurarsi che la partizione UEFI sia stata montata (ad esempio creata come {{ic|/boot}} o {{ic|/boot/efi}}). GRUB non pone limitazioni sul punto di mount della partizione, perciò si è liberi di scegliere quello che si preferisce. Una volta montata la partizione, si esegua il comando di cui sotto per installare l'applicazione UEFI di GRUB in {{ic|$esp/EFI/grub}}, installarne i moduli in {{ic|/boot/grub/x86_64-efi}} e copiare l'immagine avviabile {{ic|grubx64.efi}} in {{ic|$esp/EFI/arch_grub}}:
 +
 
 +
  # grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=arch_grub --recheck --debug
 +
 
 +
{{Nota|
 +
* Se si riscontrano problemi nell'utilizzo di {{ic|grub-install}} e lo script ci consiglia di caricare il modulo efivars, si provi con [[Unified Extensible Firmware Interface#Switch_to_efivarfs]]
 +
* Se si sta installando GRUB in un ambiente chroot su un sistema che utilizza LVM è possibile che vengano visualizzati messaggi simili a questo: {{ic|/run/lvm/lvmetad.socket: connect failed: No such file or directory}} o {{ic|WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.}}.
 +
Questi messaggi sono causati dalla mancanza della directory {{ic|/run}} nell'ambiente di chroot ma non pregiudicano l'avvio del sistema, percui è possibile proseguire tranquillamente con l'installazione.
 +
* Se non vengono specificate le opzioni {{ic|--target}} o {{ic|--directory}}, {{ic|grub-install}} non riuscirà a determinare il tipo di firmware sul quale GRUB verrà installato, mostrando perciò il seguente messaggio d'errore: {{ic|source_dir doesn't exist. Please specify --target or --directory}}.
 +
* Le opzioni {{ic|--efi-directory}} e {{ic|--botloader-id}} sono specifiche di GRUB UEFI. {{ic|--efi-directory}} indica il punto di  mount della partizione EFI di sistema e sostituisce la vecchia opzione {{ic|--root-directory}}, deprecata. {{ic|--bootloader-id}} contiene il percorso alla directory che ospita il file {{ic|grubx64.efi}}.
 +
* Si noti l'assenza di un riferimento a qualsivoglia disco rigido (es. {{ic|/dev/sda}}) durante l'esecuzione di {{ic|grub-install}}, a differenza di quanto avviene per sistemi BIOS. Eventuali riferimenti a dischi rigidi saranno ignorati dallo script di installazione, in quanto i bootloader UEFI non utilizzano MBR o i boot sector delle partizioni.}}
 +
 
 +
A questo punto, GRUB è stato installato. Non dimenticarsi di [[#Generazione del file di configurazione principale|generare il file di configurazione principale]].
 +
 
 +
=====Workaround per alcuni firmware UEFI=====
 +
 
 +
Alcuni firmare UEFI richiedono che il file {{ic|.efi}} avviabile abbia un nome ben definito e si trovi in una posizione specifica: {{ic|$esp/EFI/boot/bootx64.efi}} (dove {{ic|$esp}} corrisponde al punto di mount della partizione UEFI). In caso non si rispettino queste regole il sistema non riuscirà ad avviarsi.
 +
Si noti che questi accorgimenti non creano problemi con altri firmware, e sono pertanto da considerarsi come il metodo di installazione ufficiale.
 +
 
 +
Creare la cartella richiesta, quindi copiare il file {{ic|.efi}} di GRUB rinominandolo nel modo corretto:
 +
 
 +
# mkdir $esp/EFI/boot
 +
# cp $esp/EFI/arch_grub/grubx64.efi  $esp/EFI/boot/bootx64.efi
 +
 
 +
=====Metodo alternativo=====
 +
 
 +
Generalmente, GRUB posiziona i propri files, compresi quelli di configurazione, in {{ic|/boot}}, a prescindere dal punto di mount della partizione EFI di sistema.
 +
 
 +
Se si desidera memorizzare tali file nella partizione EFI di sistema, si aggiunga {{ic|1=--boot-directory=$esp}} al comando {{ic|grub-install}}:
 +
 
 +
# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --boot-directory=$esp --recheck --debug
 +
 
 +
Quanto sopra include tutti i files di GRUB in {{ic|$esp/grub}}, invece di utilizzare {{ic|/boot/grub}}.
 +
Quando si utilizza questo metodo, assicurarsi che {{ic|grub-mkconfig}} generi il file di configurazione nella posizione corretta:
 +
 
 +
# grub-mkconfig -o $esp/grub/grub.cfg
 +
 
 +
Il resto della configurazione è identica.
 +
 
 +
====Creare una voce per GRUB nel Firmware Boot Manager====
 +
 
 +
Lo script {{ic|grub-install}} cerca di creare automaticamente una voce di menù nel boot manager. Se ciò non dovesse avvenire, si consulti [[UEFI#efibootmgr]] per istruzioni su come utilizzare {{ic|efibootmgr}} per creare una voce.
 +
 
 +
In ogni caso, il problema è solitamente relativo al mancato avvio dell'immagine di installazione in modalità UEFI, come descritto in [[Unified Extensible Firmware Interface (Italiano)#Creare un dispositivo USB avviabile con UEFI dalla ISO|Unified Extensible Firmware Interface#Creare un dispositivo USB avviabile con UEFI dalla ISO]].
 +
 
 +
====GRUB Standalone====
 +
 
 +
È possibile creare una applicazione EFI standalone (grubx64_standalone.efi) che comprende tutti i moduli necessari in un archivio tar al suo interno, eliminando di fatto, la necessità di avere una directory separata contenente tutti i moduli UEFI di GRUB ed altri files ad essi relativi. Per raggiungere l'obiettivo, verrà utilizzato il comando {{ic|grub-mkstandalone}}, incluso in {{Pkg|grub}}:
 +
 
 +
# echo 'configfile ${cmdpath}/grub.cfg' > /tmp/grub.cfg                                ## utilizzare apici singoli, ${cmdpath}/grub.cfg dovrebbe essere lasciato così com'è
 +
# grub-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi --modules="part_gpt part_msdos" --fonts="unicode" --locales="en@quot" --themes="" -o "$esp/EFI/grub/grubx64_standalone.efi"  "boot/grub/grub.cfg=/tmp/grub.cfg" -v
 +
 
 +
Si copi quindi il file di configurazione di GRUB in {{ic|$esp/EFI/grub/grub.cfg}} e si crei una voce nell'UEFI Boot Manager per il file {{ic|$esp/EFI/grub/grubx64_standalone.efi}} utilizzando [[Unified_Extensible_Firmware_Interface_(Italiano)#efibootmgr|efibootmgr]].
 +
 
 +
{{Nota|L'opzione {{ic|1=--modules="part_gpt part_msdos"}} (doppi apici compresi) è necessaria affinchè {{ic|${cmdpath}}} funzioni correttamente.}}
 +
 
 +
{{Attenzione|Potrebbe capitare che il file {{ic|grub.cfg}} non venga caricato a causa della mancanza dello slash finale da {{ic|${cmdpath}}} (es. {{ic|(hd1,msdos2)EFI/Boot}} invece di {{ic|(hd1,msdos2)/EFI/Boot}}), e si venga lasciati nella shell di GRUB. Se si  ha questo problema si verifichi il contenuto della variabile {{ic|${cmdpath} }} ({{ic|echo ${cmdpath} }}) e si proceda al caricamento manuale del file di configurazione (es. {{ic|configfile (hd1,msdos2)/EFI/Boot/grub.cfg}}).}}
 +
 
 +
=====GRUB Standalone - Informazioni tecniche=====
 +
 
 +
L'applicazione EFI di GRUB assume che il relativo file di configurazione si trovi in {{ic|${prefix}/grub.cfg}}. Tuttavia, nel file dell'applicazione Standalone, {{ic|${prefix} }} è contenuto all'interno di un archivio tar dentro al suddetto file (identificato nell'ambiente GRUB come {{ic|"(memdisk)"}}, senza doppi apici). L'archivio contiene tutti i files che normalmente si troverebbero sotto {{ic|/boot/grub}} nel caso di un'installazione di GRUB EFI classica.
 +
 
 +
A causa dell'embedding del contenuto di {{ic|/boot/grub}} nell'immagine standalone, essa è completamente indipendente dal contenuto di una directory {{ic|/boot/grub}} esterna. Ne consegue che per l'immagine EFI Standalone {{ic|1=${prefix}==(memdisk)/boot/grub}}, quindi il file di configurazione dovrà trovarsi in {{ic|1=${prefix}/grub.cfg==(memdisk)/boot/grub/grub.cfg}}.
 +
 
 +
Per fare in modo che l'immagine EFI Standalone legga un {{ic|grub.cfg}} esterno posizionato nella stessa directory dell'immagine (identificata  nell'ambiente GRUB come {{ic|${cmdpath} }}, verrà creato un file {{ic|/tmp/grub.cfg}} che costringe grub ad utilizzare {{ic|${cmdpath}/grub.cfg}} come file di configurazione (il comando che esegue questa operazione è {{ic|1=configfile ${cmdpath}/grub.cfg}}, contenuto in {{ic|(memdisk)/boot/grub/grub.cfg}}). Infine, si indica a {{ic|grub-mkstandalone}} di copiare il file {{ic|/tmp/grub.cfg}} in {{ic|${prefix}/grub.cfg}} (ovvero {{ic|(memdisk)/boot/grub/grub.cfg}}) utilizzando l'opzione {{ic|1="/boot/grub/grub.cfg=/tmp/grub.cfg"}}.
 +
 
 +
Così facendo, l'immagine Efi Standalone e il relativo {{ic|grub.cfg}} possono essere memorizzati in qualsiasi directory della partizione EFI di sistema (a patto che i due file si trovino nella stessa directory), rendendoli di fatto portabili.
 +
 
 +
==Generazione del file di configurazione principale==
 +
 
 +
Dopo l'installazione sarà necessario generare il file di configurazione principale {{ic|grub.cfg}}. Il processo di creazione del suddetto file può essere influenzato dalle opzioni contenute in {{ic|/etc/default/grub}} e dagli script in {{ic|/etc/grub.d}}. È possibile reperire ulteriori informazioni leggendo i paragrafi [[#Configurazione di base]] o [[#Configurazione avanzata]].
 +
 
 +
{{Nota|Si ricordi che sarà necessario rigenerare il file {{ic|grub.cfg}} dopo ogni cambiamento ad {{ic|/etc/default/grub}} o ai files in {{ic|/etc/grub.d/*}}.}}
 +
 
 +
Utilizzare il tool ''grub-mkconfig'' per generare il {{ic|grub.cfg}}:
 +
 
 +
# grub-mkconfig -o /boot/grub/grub.cfg
 +
 
 +
{{Nota|
 +
* Il percorso al file di configurazione è {{ic|/boot/grub/grub.cfg}}, e NON {{ic|/boot/grub/i386-pc/grub.cfg}}.
 +
* Se si sta cercando di effettuare questa operazione da dentro un ambiente di chroot o da un container {{ic|systemd-nspawn}}, è possibile che {{ic|grub-probe}} mostri un errore relativo all'impossibilità di ottenere il path di {{ic|/dev/sdaX}}. In questo caso si provi ad utilizzare {{ic|arch-chroot}} come spiegato in [https://bbs.archlinux.org/viewtopic.php?pid&#61;1225067#p1225067 questo] thread.
 +
* Quando si genera il file di configurazione di GRUB su un sistema LVM dall'interno di un ambiente di chroot (anche ''arch-chroot'', utilizzato durante l'installazione), è possibile che vengano visualizzati messaggi come {{ic|/run/lvm/lvmetad.socket: connect failed: No such file or directory}} o {{ic|WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.}}. Ciò è dovuto alla mancanza di {{ic|/run}} nell'ambiente di chroot. Tali messaggi non impediranno al sistema di avviarsi, a patto che tutti i passaggi siano stati completati correttamente, quindi è possibile procedere con l'installazione.
 +
}}
  
{{Nota|Il percorso esatto è {{ic|/boot/grub/grub.cfg}}, NON {{ic|/boot/grub/i386-pc/grub.cfg}}.}}
+
Di default, lo script di generazione aggiunge automaticamente le voci di menù per Arch Linux a qualsiasi configurazione venga generata, mentre ciò non accade per eventuali voci relative ad altri sistemi operativi. Su sistemi BIOS, si installi il pacchetto {{Pkg|os-prober}}, che individua i sistemi operativi installati sulla macchina e li aggiunge al {{ic|grub.cfg}} durante l'esecuzione di {{ic|grub-mkconfig}}. Si veda [[#Dual-booting]] per eventuali configurazioni avanzate.
  
Se GRUB visualizza l'errore "no suitable mode found" durante il boot, si veda [[#Correggere l'errore di GRUB "no suitable mode found"]].
+
===Conversione del file di configurazione di GRUB Legacy al nuovo formato===
  
Se {{ic|grub-mkconfig}} non va a buon fine, si converta il proprio {{ic|/boot/grub/menu.lst}} in {{ic|/boot/grub/grub.cfg}} usando:
+
Se {{ic|grub-mkconfig}} non funziona, si converta il proprio {{ic|/boot/grub/menu.lst}} nel {{ic|/boot/grub/grub.cfg}} eseguendo:
  
 
  # grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg
 
  # grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg
 +
 +
{{Nota|Questa operazione funziona solamente su sistemi BIOS.}}
  
 
Ad esempio:
 
Ad esempio:
Line 227: Line 343:
 
   legacy_kernel  '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'
 
   legacy_kernel  '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'
 
   legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'
 
   legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'
 
 
 
}
 
}
  
Line 237: Line 352:
 
</nowiki>}}
 
</nowiki>}}
  
Se si è riavviato il sistema, dimenticandosi di creare il {{ic|/boot/grub/grub.cfg}} si esegua il boot nella shell dei comandi di GRUB Command Shell e si scriva:
+
Se si è riavviato il sistema dimenticandosi di creare il {{ic|/boot/grub/grub.cfg}}, si eseguano questi comandi nella shell di GRUB che apparirà al riavvio:
  
 
  sh:grub> insmod legacycfg
 
  sh:grub> insmod legacycfg
 
  sh:grub> legacy_configfile ${prefix}/menu.lst
 
  sh:grub> legacy_configfile ${prefix}/menu.lst
  
Si effettui il boot in Arch Linux e si ricrei il {{ic|/boot/grub/grub.cfg}} in maniera adeguata.
+
Procedere quindi all'avvio di Arch Linux e si generi il file {{ic|/boot/grub/grub.cfg}}.
  
{{Note|L'opzione di cui sopra funziona solo su sistemi BIOS.}}
+
==Configurazione di base==
  
====Multiboot====
+
Questa sezione copre le sole modifiche al file {{ic|/etc/default/grub}}. Si veda [[#Configurazione avanzata]] per ulteriori approfondimenti.
  
Quanto segue funzionerà senza ulteriori interventi da parte dell'utente, a patto che {{Pkg|os-prober}} sia installato.
+
{{Nota|Ricordarsi di [[#Generazione del file di configurazione principale|rigenerare]] il file di configurazione principale dopo qualsiasi cambiamento ad {{ic|/etc/default/grub}}.}}
  
Una volta effettuata l'installazione, si esegua {{ic| grub-mkconfig -o /boot/grub/grub.conf}}.
+
==== Argomenti aggiuntivi ====
  
Se la rilevazione automatica non va a buon fine, è possibile inserire manualmente una voce di menù seguendo le istruzioni proposte sotto.
+
Se si ha la necessità di passare dei parametri particolari all'immagine del kernel, è necessario inserirli nelle variabili {{ic|GRUB_CMDLINE_LINUX}} e {{ic|GRUB_CMDLINE_LINUX_DEFAULT}} contenute nel file {{ic|/etc/default/grub}}. I valori delle due variabili vengono inseriti uno di seguito all'altro per le voci di avvio standard. Per quanto riguarda la generazione delle voci di avvio di ripristino, viene utilizzato solamente {{ic|GRUB_CMDLINE_LINUX}}.  
  
{{Note|Assicuratevi di aver montato la partizione di boot di Windows nel caso non venisse rilevato}}
+
Non è necessario utilizzarli entrambi, ma può risultare utile: ad esempio, è possibile abilitare  il resume dopo l'ibernazione tramite {{ic|1=GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sdaX quiet"}} dove {{ic|sdaX}} indica la propria partizione di swap.
  
=====Avviare Microsoft Windows su sistemi BIOS-MBR=====
+
In questo modo verrebbe generata una voce di ripristino senza il supporto al resume e senza il parametro {{ic|quiet}} che elimina i messaggi del kernel durante il boot. Di contro, la voce d'avvio standard mantiene i parametri di cui sopra.
{{Nota|GRUB supporta l'avvio diretto di {{ic|bootmgr}} e il chainload del settore di boot non è più richiesto per avviare Windows su configurazioni BIOS-MBR.}}
+
  
{{Attenzione|Si noti che {{ic|bootmgr}} è contenuto nella partizione di sistema, non in quella principale che ospita i file di sistema di Windows (C:). Quando si elencano tutti gli UUIDs con {{ic|blkid}} la partizione viene evidenziata come {{ic|LABEL&#61;"SYSTEM RESERVED"}} ed ha una dimensione inferiore ai 100 MB, similmente alla partizione di boot di Arch. Si consulti [[wikipedia:System_partition_and_boot_partition]] per ulteriori informazioni.}}
+
Per generare la voce di ripristino è necessario commentare l'opzione {{ic|1=GRUB_DISABLE_RECOVERY=true}} in {{ic|/etc/default/grub}}.
  
Per tutto il resto della sezione, si assumerà che la propria partizione di Windows sia {{ic|/dev/sda1}}. Partizioni differenti varieranno di conseguenza anche il valore di {{ic|hd0,msdos1}}. Si individui l'UUID della partizione di sistema di windows, dove bootmgr e i suoi files risiedono. Per esempio, se {{ic|bootmgr}} si trova in {{ic|/media/SYSTEM_RESERVED/bootmgr}}:
+
E' anche possibile utilizzare {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}}, dove {{ic|${swap_uuid}}} si riferisce all'[[Persistent_block_device_naming (Italiano)|uuid]] della propria partizione di swap.
  
Per Windows Vista/7/8:
+
Si veda [[Kernel parameters]] per ulteriori informazioni.
  
# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr
+
===Configurazione dell'aspetto===
69B235F6749E84CE
+
In GRUB è possibile cambiare l'aspetto del menu.
 +
Ci si assicuri di aver inizializzato il terminale grafico di GRUB (gfxterm), usando una modalità video appropriata (gfxmode). Ulteriori informazioni sono reperibili nella sezione [[#Correggere l'errore di GRUB "no suitable mode found"]]. La modalità video impostata di seguito, verrà passata al kernel via {{ic|gfxpayload}}; di conseguenza, questa sarà richiesta affinchè ogni configurazione dell'aspetto abbia effetto.
  
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr
+
====Impostare la risoluzione del framebuffer====
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
+
  
{{Nota|Se si utilizza Windows XP, si sostituisca {{ic|bootmgr}} con {{ic|ntldr}} nei comandi di cui sopra. Si noti inoltre che potrebbe non essere presente una partizione di sistema separata: si effettui la ricerca del file NTLDR sulla partizione principale di Windows.}}
+
GRUB può impostare il framebuffer sia per sé stesso che per il kernel. Il vecchio parametro {{ic|1=vga=}} è deprecato. Il metodo consigliato è modificare {{ic|/etc/default/grub}} come segue:
 
+
Si aggiunga quindi il codice sotto riportato al file {{ic|/etc/grub.d/40-custom}} o {{ic|/boot/grub/custom.cfg}} e si rigeneri il {{ic|grub.cfg}} con {{ic|grub-mkconfig}} come spiegato sopra per effettuare il chainload di Windows (XP, Vista, 7 o 8) installato in modalità BIOS-MBR:
+
 
+
Per Windows Vista/7/8:
+
  
 
{{bc|1=
 
{{bc|1=
menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" {
+
GRUB_GFXMODE=1024x768x32
    insmod part_msdos
+
GRUB_GFXPAYLOAD_LINUX=keep
    insmod ntfs
+
    insmod search_fs_uuid
+
    insmod ntldr   
+
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
+
    ntldr /bootmgr
+
}
+
 
}}
 
}}
  
Per Windows XP:
+
È possibile specificare diverse risoluzioni, incluso il valore di default {{ic|auto}}. È quindi consigliabile che la variabile {{ic|GRUB_GFXMODE}} abbia un valore simile a {{ic|1=GRUB_GFXMODE=<risoluzione desiderata>,<fallback, ad esempio 1024x768>,auto}}. Per ulteriori informazioni, consultare la [https://www.gnu.org/software/grub/manual/html_node/gfxmode.html#gfxmode documentazione di GRUB relativa a gfxmode]. L'opzione [https://www.gnu.org/software/grub/manual/html_node/gfxpayload.html#gfxpayload gfxpayload] farà si che il kernel mantenga la risoluzione.
  
{{bc|1=
+
{{Nota|È possibile utilizzare solamente le risoluzioni che la scheda grafica supporta tramite le [[wikipedia:VESA_BIOS_Extensions|estensioni VESA BIOS]]. Per ottenere un elenco delle risoluzioni supportate, si installi {{Pkg|hwinfo}} e si esegua {{ic|hwinfo --framebuffer}} come utente root. In alternativa, si entri nella riga di comando di GRUB e si esegua {{ic|vbeinfo}}.}}
menuentry "Microsoft Windows XP" {
+
    insmod part_msdos
+
    insmod ntfs
+
    insmod search_fs_uuid
+
    insmod ntldr   
+
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
+
    ntldr /ntldr
+
}
+
}}
+
  
 +
Se quanto sopra non funziona, è possibile utilizzare il vecchio parametro {{ic|1=vga=}}. Lo si aggiunga semplicemente alla variabile {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="}} in {{ic|/etc/default/grub}}: ad esempio: {{ic|1="GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"}} imposterà una risoluzione di {{ic|1024x768}}.
  
{{Nota|{{ic|nn}} dovrebbe avere un valore superiore a {{ic|06}} affinchè gli script di sistema siano eseguiti per primi.}}
+
====Hack 915resolution====
  
{{Nota|In alcuni casi (ad esempio se GRUB viene installato prima di Windows 8), potrebbe verificarsi un errore riguardante {{ic|\boot\bcd}} (codice errore {{ic|0xC000000F}}) durante l'avvio di Windows. È possibile risolvere il problema avviando la console di ripristino di Windows (si utilizzi il suo disco di installazione) ed eseguendo:
+
Se si stanno utilizzando schede grafiche Intel, può accadere che nè {{ic|# hwinfo --framebuffer}} {{ic|vbeinfo}} mostrino la risoluzione desiderata. In questo caso, è possibile utilizzare l'hack proposto, che modificherà temporaneamente il BIOS della scheda video aggiungendo la risoluzione richiesta. Si veda la home page di [http://915resolution.mango-lang.org/ 915resolution].
  
x:\>bootrec.exe /fixboot
+
Innanzitutto è necessario scegliere una modalità video da modificare più tardi. Si avvii quindi {{ic|915resolution}} nella shell di GRUB:
x:\>bootrec.exe /rebuildbcd
+
  
{{Attenzione|Non utilizzare {{ic|bootrec.exe /Fixmbr}}, poichè cancellerebbe GRUB.}}}}
+
{{hc|sh:grub> 915resolution -l|
 +
Intel 800/900 Series VBIOS Hack : version 0.5.3
 +
[...]
 +
Mode 30 : 640x480, 8 bits/pixel
 +
[...]
 +
}}
  
Il file {{ic|/etc/grub.d/40_custom}} può essere utilizzato come template per creare {{ic|/etc/grub.d/nn_custom}}, dove il numero {{ic|nn}} definisce l'ordine in cui gli script sono eseguiti, determinando di conseguenza il posizionamento delle voci nel menu di GRUB.
+
L'obiettivo è quello di sovrascrivere la modalità 30 con la risoluzione {{ic|1440x900}}:
  
===Sistemi UEFI===
+
{{hc|/etc/grub/00_header|
 +
[...]
 +
'''915resolution 30 1440 900 # linea aggiunta'''
 +
set gfxmode&#61;${GRUB_GFXMODE}
 +
[...]
 +
}}
  
{{Nota|È ben noto come i produttori di schede madri implementino UEFI in modo differente. Gli utenti che dovessero avere problemi a far funzionare GRUB/EFI sono incoraggiati a descrivere i passaggi compiuti durante l'installazione, qualora questi differiscano da quanto riportato sotto.
+
Sarà ora necessario impostare il valore di {{ic|GRUB_GFXMODE}}, come spiegato in precedenza e rigenerare il file di configurazione di GRUB:
Poichè si sta cercando di manterere questo articolo il più chiaro possibile, consultare la pagina relativa agli [[GRUB EFI Examples|esempi per GRUB EFI]] per ulteriori informazioni.}}
+
  
Innanzitutto si installi il pacchetto {{Pkg|grub}}, quindi si seguano le istruzioni sotto riportate.
+
# grub-mkconfig -o /boot/grub/grub.cfg
 +
# reboot
  
Tenendo conto di questa informazione, si installi il pacchetto adeguato.
+
====Immagine di sfondo e caratteri bitmap====
 +
GRUB supporta le immagini di sfondo e i caratteri bitmap nel formato {{ic|pf2}}. Il font unifont è incluso nel pacchetto {{Pkg|grub}} con nome {{ic|unicode.pf2}} oppure, in soli caratteri ASCII con nome {{ic|ascii.pf2}}.
  
* Per firmware UEFI a 64 bit si install il pacchetto {{Pkg|grub-efi-x86_64}}.
+
I formati di immagine supportati includono tga, png e jpeg, a patto che i rispettivi moduli siano caricati. La risoluzione massima applicabile dipende dall'hardware in uso.
  
* Per firmware UEFI a 32bit si installi il pacchetto {{Pkg|grub-efi-i386}}.
+
Prima di procedere, seguire quanto indicato in [[#Impostare la risoluzione del framebuffer]].
  
{{Nota|La semplice installazione del pacchetto non aggiornerà il file {{ic|core.efi}} e il moduli di GRUB nella partizione di sistema UEFI. Sarà necessario aggiornarli manualmente usando {{ic|grub-install}}, come spiegato sotto.}}
+
Si modifichi quindi il file {{ic|/etc/default/grub}} come segue:
  
====Installare i files di boot di grub-uefi====
+
GRUB_BACKGROUND="/boot/grub/miaimmagine"
 +
#GRUB_THEME="/path/to/gfxtheme"
 +
GRUB_FONT="/path/to/font.pf2"
  
=====Installazione nella partizione UEFI di sistema=====
+
{{Nota|Se si è installato GRUB in una partizione separata, {{ic|/boot/grub/miaimmagine}} diventa {{ic|/grub/miaimmagine}}.}}
  
{{Nota|
+
Per applicare le modifiche al {{ic|grub.cfg}}, si esegua:
* I comandi seguenti assumono che si stia installando GRUB per architetture {{ic|x86_64-efi}} (per {{ic|IA32-efi}} si sostituisca ogni occorrenza di {{ic|x86_64}} con {{ic|i386}}).
+
* Affinchè tutto funzioni è necessario effettuare il boot in modalità UEFI e non tramite BIOS. Se si è effettuato il boot semplicemente copiando l'ISO di installazione su una chiavetta USB, sarà necessario seguire [[Unified Extensible Firmware Interface (Italiano)#Creare un dispositivo USB avviabile con UEFI dalla ISO|questa guida]] o {{ic|grub-install}} visualizzerà degli errori.}}
+
  
La partizione UEFI di sistema dovrà essere montata in {{ic|/boot/efi}} affinchè lo script di installazione di GRUB la riconosca:
+
grub-mkconfig -o /boot/grub/grub.cfg
  
# mkdir -p /boot/efi
+
Se l'inserimento dell'immagine è avvenuto con successo, dovrebbe essere visualizzato il messaggio {{ic|Found background image...}}, durante l'esecuzione del precedente comando. Se questo non accade, significa che l'immagine non è stata incorporata nel grub.cfg.
# mount -t vfat /dev/sdXY /boot/efi
+
  
Si installino quindi l'applicazione UEFI di GRUB e i relativi moduli in {{ic|/boot/grub/x86_64-efi}} (raccomandato)  usando:
+
In tal caso, si controlli che:
 +
* il percorso e il nome dell'immagine in {{ic|/etc/default/grub}} siano corretti
 +
* l'immagine abbia dimensioni e formato adeguati (tga, png, png a 8 bit)
 +
* l'immagine sia stata salvata in modalità RGB e non sia indicizzata
 +
* la modalità console non sia stata abilitata in /etc/default/grub
 +
* il comando {{ic|grub-mkconfig}} sia stato eseguito per inserire le informazioni relative allo sfondo nell file {{ic|/boot/grub/grub.cfg}}.
  
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug
+
====Temi====
  
{{Nota|Se non vengono specificate le opzioni {{ic|--target}} o {{ic|--directory}}, {{ic|grub-install}} non riuscirà a determinare il tipo di firmware sul quale GRUB verrà installato, mostrando perciò il seguente messaggio d'errore: {{ic|source_dir doesn't exist. Please specify --target or --directory}}.}}
+
Di seguito viene proposto un esempio per la configurazione di GRUB con il tema Starfield, incluso nel pacchetto fornito con Arch.
  
Se si desidera installare i moduli di GRUB e il {{ic|grub.cfg}} nella directory {{ic|/boot/efi/EFI/grub}} e l'applicazione {{ic|grubx64.efi}} in {{ic|/boot/efi/EFI/arch_grub}}, si utilizzi:
+
Si modifichi {{ic|/etc/default/grub}}:
  
  # modprobe dm-mod
+
  GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug
+
  
L'opzione {{ic|--efi-directory}} indica il punto di mount della partizione UEFI di sistema, {{ic|--bootloader-id}} indica il nome della directory dove verrà installata l'applicazione {{ic|grubx64.efi}}, e {{ic|--boot-directory}} contiente il percorso alla directory di installazione dei moduli (e sarà quindi la sede del file di configurazione {{ic|grub.cfg}}).
+
Si applichino le modifiche:
  
I path effettivi sono:
+
grub-mkconfig -o /boot/grub/grub.cfg
  
<efi-directory>/<efi o EFI>/<bootloader-id>/grubx64.efi
+
Se il tema è stato applicato correttamente, apparirà a video il messaggio {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}}.
<boot-directory>/grub/x86_64-efi/<tutti i moduli, grub.efi, core.efi, grub.cfg>
+
  
{{Nota|{{ic|--bootloader-id}} non cambia il percorso {{ic|<boot-directory>/grub}}. Ad esempio, non si potranno  installare i moduli in {{ic|<boot-directory>/<bootloader-id>}}, in quanto il path è hardcoded a {{ic|<boot-directory>/grub}}.}}
+
====Colori del Menù====
 +
In GRUB è possibile cambiare i colori del menù. L'elenco dei colori disponibili è reperibile [http://www.gnu.org/software/grub/manual/html_node/Theme-file-format.html#Theme-file-format qui]. Di seguito, un esempio:
  
Se {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub</nowiki>}}
+
Si modifichi {{ic|/etc/default/grub}} come segue:
 +
{{bc|1=
 +
GRUB_COLOR_NORMAL="light-blue/black"
 +
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
 +
}}
  
  <efi-directory>/<efi o EFI>/<bootloader-id> == <boot-directory>/grub == /boot/efi/EFI/grub
+
Per rendere effettivi i cambiamenti si esegua:
 +
  grub-mkconfig -o /boot/grub/grub.cfg
  
Se {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=arch</nowiki>}}
+
====Menù nascosto====
 +
Una delle caratteristiche proprie di GRUB è la possibilità di nascondere il menù e renderlo visibile attraverso la pressione del tasto {{ic|Esc}}, se necessario. È anche possibile decidere se visualizzare o meno il countdown.
  
<efi-directory>/<efi o EFI>/<bootloader-id> == /boot/efi/EFI/arch_grub
+
Si modifichi {{ic|/etc/default/grub}}. Nell'esempio che segue, il countdown è stato impostato a 5 secondi e reso visibile all'utente:
<boot-directory>/grub == /boot/efi/EFI/grub
+
  
Se {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=arch</nowiki>}}
+
{{bc|1=
 +
GRUB_TIMEOUT=0
 +
GRUB_HIDDEN_TIMEOUT=5
 +
GRUB_HIDDEN_TIMEOUT_QUIET=false
 +
}}
  
<efi-directory>/<efi o EFI>/<bootloader-id> == /boot/efi/EFI/arch_grub
+
La variabile {{ic|GRUB_HIDDEN_TIMEOUT}} specifica quanti secondi aspettare prima di mostrare il menu. Sarà necessario impostare {{ic|1=GRUB_TIMEOUT=0}} se lo si vuole nascondere.
<boot-directory>/grub == /boot/grub
+
  
Se {{ic|<nowiki>--efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub</nowiki>}}
+
Si esegua:
 +
# grub-mkconfig -o /boot/grub/grub.cfg
  
<efi-directory>/<efi o EFI>/<bootloader-id> == /boot/efi/EFI/grub
+
====Disabilitare il framebuffer====
<boot-directory>/grub == /boot/grub
+
  
Il file {{ic|<efi-directory>/<efi or EFI>/<bootloader-id>/grubx64.efi}} è una copia esatta di {{ic|<boot-directory>/grub/x86_64-efi/core.efi}}.
+
Se si usano i driver proprietari NVIDIA, potrebbe essere necessario disabilitare il framebuffer di GRUB, poichè potrebbe interferire con il driver.
  
{{Nota|
+
Per disabilitarlo, si modifichi {{ic|/etc/default/grub}} decommentando la seguente linea:
* A partire da GRUB 2.00, l'opzione {{ic|--efi-directory}} di {{ic|grub-install}} sostituisce la vecchia {{ic|--root-directory}}, che è deprecata.
+
* Le opzioni {{ic|--efi-directory}} e {{ic|--bootloader-id}} sono specifiche di GRUB UEFI.}}
+
  
In tutti i casi, la partizione UEFI di sistema dovrà essere montata affinchè {{ic|grub-install}} possa installarvi il {{ic|grubx64.efi}}, che sarà poi lanciato dal firmware (usando la voce creata con efibootmgr, su sistemi non Mac).
+
GRUB_TERMINAL_OUTPUT=console
  
Se si controlla attentamente, si noterà l'assenza di un'opzione che specifichi il device su cui installare il bootloader (ad esempio {{ic|/dev/sda}}). Tali opzioni verranno ignorate dallo script di installazione, poichè i bootloaders UEFI non usano l'MBR delle partizioni.
+
Si esegua poi:
  
Si sarà ora in grado di effettuare il boot tramite UEFI creando un {{ic|grub.cfg}} seguendo [[#Generare un file di configurazione per GRUB UEFI]] e copiando {{ic|/boot/efi/EFI/grub/grubx64.efi}} in {{ic|/boot/efi/EFI/boot/bootx64.efi}}.
+
grub-mkconfig -o /boot/grub/grub.cfg
  
====Generare un file di configurazione====
+
Se si vuole comunque avviare GRUB in framebuffer è possibile tornare in modalità testuale prima dell'avvio del kernel. A tal proposito si modifichi la relativa variabile in {{ic|/etc/default/grub}}:
Si generi un file di configurazione per GRUB usando il seguente comando:
+
  
  # grub-mkconfig -o <boot-directory>/grub/grub.cfg
+
  GRUB_GFXPAYLOAD_LINUX=text
  
{{Nota|Il percorso esatto è {{ic|<boot-directory>/grub/grub.cfg}}, NON {{ic|<boot-directory>/grub/x86_64-efi/grub.cfg}}.}}
+
Si rigeneri quindi il file di configurazione come visto sopra.
  
Se si è usato {{ic|<nowiki>--boot-directory=/boot</nowiki>}} :
+
===Nomenclatura permanente dei dispositivi a blocchi===
  
# grub-mkconfig -o /boot/grub/grub.cfg
+
Un modo per identificare con una [[Persistent block device naming (Italiano)|nomenclatura persistente i dispositivi a blocchi]] è quello di utilizzare degli UUID univoci per le partizioni, invece dei vecchi valori {{ic|/dev/sd*}}. I vantaggi sono spiegati nel link fornito sopra.  
  
Se invece si è usato {ic|<nowiki>--boot-directory=/boot/efi/EFI</nowiki>}}:
+
GRUB utilizza di default gli UUID dei filesystems per identificare in modo permanente i dispositivi a blocchi.
  
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
+
{{Nota|È necessario rigenerare il file {{ic|/boot/grub/grub.cfg}} affinchè vengano aggiornati gli UUID ogni volta che una partizione viene ridimensionata o formattata. Si tenga a mente questo particolare ogni volta che si modificano le partizioni con un LiveCD.}}
  
I percorsi di cui sopra sono indipendenti dal valore dell'opzione {{ic|--bootloader-id}}.
+
L'uso degli UUID è controllato da un'opzione in {{ic|/etc/default/grub}}:
  
Se grub-uefi mostra l'errore "no suitable mode found", si legga [[#Correggere l'errore di GRUB "no suitable mode found"]].
+
# GRUB_DISABLE_LINUX_UUID=true
  
====Creare una voce per GRUB nel Firmware Boot Manager====
+
In ogni caso, ci si ricordi di applicare i cambiamenti:
  
Lo script {{ic|grub-install}} cerca di creare autometicamente una voce di menù nel boot manager. Se ciò non dovesse avvenire, si consulti [[Beginners' Guide (Italiano)#GRUB|Beginners' Guide#GRUB]] per istruzioni su come utilizzare {{ic|efibootmgr}} per creare una voce.
+
# grub-mkconfig -o /boot/grub/grub.cfg
  
In ogni caso, il problema è solitamente relativo al mancato avvio dell'immagine di installazione in modalità UEFI, come descritto in [[Unified Extensible Firmware Interface (Italiano)#Creare un dispositivo USB avviabile con UEFI dalla ISO|Unified Extensible Firmware Interface#Creare un dispositivo USB avviabile con UEFI dalla ISO]].
+
===Richiamare l'ultimo sistema avviato===
 +
GRUB è in grado di ricordarsi l'ultimo sistema avviato ed usarlo come default la prossima volta che si eseguirà il boot. Questa funzionalità è utile se si dispone di kernel multipli (ad esempio il kernel corrente di Arch e il LTS come fallback) o più sistemi operativi. Si modifichi {{ic|/etc/default/grub}} e si cambi il valore di {{ic|GRUB_DEFAULT}}:
  
====Generare un'applicazione UEFI standalone per GRUB====
+
GRUB_DEFAULT=saved
  
È possibile creare una applicazione UEFI standalone (grubx64_standalone.efi) che comprende tutti i moduli necessari in un memdisk al suo interno, eliminando di fatto, la necessità di avere una directory separata contenente tutti i moduli UEFI di GRUB ed altri files ad essi relativi. Per raggiungere l'obiettivo, verrà utilizzato il comando {{ic|grub-mkstandalone}}, incluso in {{Pkg|grub}}.
+
Ciò consentirà a GRUB di avviare il sistema operativo salvato. Per abilibare il salvataggio, si aggiunga la linea seguente ad {{ic|/etc/default/grub}}:
  
Il modo più semplice per farlo, è attraverso il comando install menzionato sopra, avendo cura però di specificare i moduli da includere. Ad esempio:
+
GRUB_SAVEDEFAULT=true
  
# grub-mkstandalone --directory="/usr/lib/grub-x86_64-efi" --format="x86_64-efi" --compression="xz" --output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" <files aggiuntivi che si desiderano includere>
+
{{Nota|Le voci di menù aggiunte manualmente in {{ic|/etc/grub.d/40_custom}} o {{ic|/boot/grub/custom.cfg}} (ad esempio Windows), richiederanno l'opzione {{ic|savedefault}}.}}
  
Il file {{ic|grubx64_standalone.efi}} assume che il {{ic|grub.cfg}} si trovi nel suo $prefix, ovvero {{ic|(memdisk)/boot/grub}}. Il memdisk verrà poi incluso nell'applicazione efi.
+
Ci si ricordi di [[#Generare un file di configurazione|rigenerare]] il file di configurazione di GRUB.
  
Lo script grub-mkstandalone permette di specificare i files da includere nel memdisk come argomenti dello script.
+
===Cambiare la voce di menu predefinita===
  
Se, ad esempio, il vostro {{ic|grub.cfg}} risiede in {{ic|/home/utente/Desktop/grub.cfg}}, si crei una directory temporanea {{ic|/home/utente/Desktop/boot/grub}} e si copi il file {{ic|/home/utente/Desktop/grub.cfg}} in {{ic|/home/utente/Desktop/boot/grub/grub.cfg}}; infine, ci si posizioni in {{ic|/home/utente/Desktop/boot/grub}} con il comando {{ic|cd}} e si esegua:
+
Per cambiare la voce selezionata in modo predefinito, si modifichi la variabile {{ic|GRUB_DEFAULT}} in {{ic|/etc/default/grub}}:
  
# grub-mkstandalone --directory="/usr/lib/grub-x86_64-efi" --format="x86_64-efi" --compression="xz" \
+
Utilizzando numeri progressivi:
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" "boot/grub/grub.cfg"
+
  
Una piccola precisazione: ci si è posizionati in {{ic|/home/utente/Desktop/boot/grub}} e si è passato il path del grub.cfg come {{ic|boot/grub/grub.cfg}} (si noti l'assenza dello slash iniziale - boot/ vs. /boot/) poichè, ad esempio, un ipotetico file {{ic|dir1/dir2/file}} viene incluso come {{ic|(memdisk)/dir1/dir2/file}} dallo script grub-mkstandalone. Se si passa come argomento {{ic|/home/utente/Desktop/boot/grub/grub.cfg}}, il file verrà incluso come {{ic|(memdisk)/home/utente/Desktop/boot/grub/grub.cfg}}, con tutte le conseguenze del caso.
+
GRUB_DEFAULT=0
  
Sarà ora necessario creare un voce con {{ic|efibootmgr}} per {{ic|/boot/efi/EFI/arch_grub/grubx64_standalone.efi. È possibile usare grub.efi invece di sostituire l'immagine originale, oppure usare la shell UEFI per provare l'immagine prima di effettuare le modifiche. Si veda [[#Creare una voce per GRUB nel Firmware Boot Manager]].
+
GRUB enumera le voci che appaiono nel menu partendo da zero, il che significa che 0 selezionerà la prima voce, 1 la seconda e così via.
  
====Multiboot====
+
Oppure utilizzando i titoli delle voci:
  
=====Microsoft Windows installato in modalità UEFI GPT=====
+
GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'
  
Si trovi l'UUID del filesystem FAT32 nella partizione UEFI di sistema, dove i files del Bootloader UEFI di Windows risiedono. Ad esempio, se il file {{ic|bootmgfw.efi}} si trova in {{ic|/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi}} (Si ignorino le differenze tra lettere maiuscole e minuscole, poichè sono irrilevanti su un filesystem FAT), si esegua:
+
{{Nota|Ricordarsi di [[#Generare un file di configurazione|rigenerare]] il file di configurazione di GRUB.}}
  
{{bc|1=
+
===Disabilitare il sottomenu===
# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
+
1ce5-7f28
+
}}
+
  
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1
+
Se si hanno più kernel installati (ad esempio linux e linux-lts), {{ic|grub-mkconfig}} li raggrupperà in un sottomenù.
  
Si aggiunga quindi il codice seguente a {{ic|/etc/grub.d/40_custom}} per effettuare il chainload di Windows su sistemi UEFI-GPT:
+
Se non si desidera utilizzare questa funzionalità si aggiunga la seguente linea al file {{ic|/etc/default/grub}}:
  
{{bc|1=
+
GRUB_DISABLE_SUBMENU=y
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
+
    insmod part_gpt
+
    insmod fat
+
    insmod search_fs_uuid
+
    insmod chain
+
    search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
+
    chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
+
}
+
}}
+
  
Una volta fatto, si rigeneri il {{ic|/boot/grub/grub.cfg}}:
+
===Cifratura della partizione root===
  
# grub-mkconfig -o /boot/grub/grub.cfg
+
Per far sì che GRUB passi automaticamente al kernel i parametri necessari per la cifratura della root, si aggiunga {{ic|1=cryptdevice=/dev/device:etichetta}} a {{ic|GRUB_CMDLINE_LINUX}} in {{ic|/etc/default/grub}}.
  
==Configurazione==
+
Si veda inoltre [[Dm-crypt/System configuration#Boot loader]] per ulteriori informazioni.
E' possibile generare il {{ic|grub.cfg}} in maniera automatica o modificarlo manualmente.
+
  
{{Nota|
+
{{Suggerimento|Se si sta effettuando l'aggiornamento da GRUB Legacy, si controlli il file {{ic|/boot/grub/menu.lst.pacsave}} per l'identificativo dispositivo o l'etichetta corretta da inserire. Si cerchi dopo la riga {{ic|kernel /vmlinuz-linux}}.}}
* Se GRUB è stato installato con l'opzione {{ic|--boot-directory}} attiva, il {{ic|grub.cfg}} dovrà essere posizionato nella stessa directory di {{ic|grubx64.efi}}. In caso contrario, il {{ic|grub.cfg}} andrà posizionato in {{ic|/boot/grub}}, come accade per la versione BIOS di GRUB.
+
* Di seguito viene proposta una [http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html guida completa] alla configurazione di GRUB.}}
+
  
===Generazione automatica usando grub-mkconfig===
+
Un esempio con la root mappata su {{ic|/dev/mapper/root}}:
  
L'equivalente del vecchio {{ic|menu.lst}} è rappresentato dai files {{ic|/etc/default/grub}} e {{ic|/etc/grub.d/*}}. Questi files sono generalmente usati da {{ic|grub-mkconfig}} per generare il {{ic|/boot/grub/grub.cfg}}. Per generare un {{ic|grub.cfg}} si usi il seguente comando:
+
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"
  
# grub-mkconfig -o /boot/grub/grub.cfg
+
 +
{{Accuracy|1=Il passaggio che segue è stato aggiunto qui: The following step was added with [https://wiki.archlinux.org/index.php?title=GRUB&diff=184194&oldid=183020], ma non è chiara la ragione per la quale sia necessario disabilitare l'utilizzo degli UUID per il filesystem root.}}
  
{{ic|/etc/grub.d/10_linux}} è impostato per l'aggiunta automatica di voci di menu per Arch linux che funzionano out-of-the-box, su qualsiasi configurazione. Altri sistemi operativi potrebbero dover essere aggiunti a {{ic|/etc/grub.d/40_custom}} o {{ic|/boot/grub/custom.cfg}}.
+
Se si riscontrano problemi nell'effettuare il boot con {{ic|dm-crypt}} su sistemi UEFI-GPT Si disabiliti l'uso degli UUID per il file system di root:
  
{{Nota|Se si sta cercando di effettuare questa operazione da dentro un ambiente di chroot o da un container {{ic|systemd-nspawn}}, è possibile che {{ic|grub-probe}} mostri un errore relativo all'impossibilità di ottenere il path di {{ic|/dev/sdaX}}. In questo caso si provi ad utilizzare {{ic|arch-chroot}} come spiegato in [https://bbs.archlinux.org/viewtopic.php?pid&#61;1225067#p1225067 questo] thread.}}
+
GRUB_DISABLE_LINUX_UUID=true
  
==== Argomenti aggiuntivi ====
+
Ed assicurarsi di non utilizzare riferimenti agli UUID (ad esempio, utilizzare {{ic|/dev/sdb3}} al posto di {{ic|1=/dev/disk/by-uuid/42d934c7-6199-4f11-9e01-807530111df6 o UUID=42d934c7-6199-4f11-9e01-807530111df6}}).
  
Se si ha la necessità di passare dei parametri particolari all'immagine del kernel, è necessario inserirli nella variabile {{ic|GRUB_CMDLINE_LINUX}} contenuta nel file {{ic|/etc/default/grub}}.
+
Rigenerare quindi il file di configurazione di GRUB.
  
Ad esempio, per abilitare  il resume dopo l'ibernazione, si utilizzi {{ic|1=GRUB_CMDLINE_LINUX="resume=/dev/sdaX"}} dove {{ic|sdaX}} indica la propria partizione di swap.
+
===Effettuare il boot di una voce non default per una sola volta===
  
E' anche possibile utilizzare {{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}"</nowiki>}}, dove {{ic|${swap_uuid}}} si riferisce all'[[Persistent_block_device_naming (Italiano)|uuid]] della propria partizione di swap.
+
Il comando {{ic|grub-reboot}} è molto utile per avviare una voce diversa da quella di default. GRUB caricherà la voce specificata come primo argomento del comando e il sistema operativo corrispondente verrà avviato al prossimo avvio.
 +
Si noti che GRUB effettuerà il boot della scelta di default per tutti i riavvii successivi a quello effettuato subito dopo l'esecuzione del comando.
 +
Non è necessario modificare il file di configurazione di GRUB o scegliere una voce nel menù di avvio.
  
Se si ha la necessità di passare più di un parametro, lo si separi con uno spazio dal successivo: ad esempio, se si desidera utilizare la funzione di resume e systemd, si avrà:
+
{{Nota|Quanto sopra richiede l'opzione {{ic|1=GRUB_DEFAULT=saved}} in {{ic|/etc/default/grub}} (e successiva rigenerazione del {{ic|grub.cfg}}) o, in caso di un {{ic|grub.cfg}} scritto manualmente, la linea {{ic|1=set default="${saved_entry}"}}.}}
  
{{ic|<nowiki>GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/bin/systemd"</nowiki>}}
+
==Configurazione avanzata==
  
Si veda [[Kernel parameters|Kernel parameters]] per ulteriori informazioni.
+
Questa sezione si occupa delle modifiche manuali al {{ic|grub.cfg}}, della scrittura di script personalizzati in {{ic|/etc/grub.d}} e di altre impostazioni avanzate.
  
 
===Creazione manuale del grub.cfg===
 
===Creazione manuale del grub.cfg===
Line 546: Line 648:
 
}}
 
}}
  
===Dual Booting===
+
===Dual-booting===
{{Nota|Se si desidera che GRUB ricerchi automaticamente i sistemi operativi installati, è necessario scaricare {{Pkg|os-prober}}.}}
+
 
 +
{{Suggerimento|Se si desidera che GRUB ricerchi automaticamente i sistemi operativi installati, è necessario installare {{Pkg|os-prober}}.}}
 +
 
 +
====Generazione automatica utilizzando il file /etc/grub.d/40_custom e grub-mkconfig====
  
====Usando grub-mkconfig====
 
 
Il modo migliore per aggiungere altre voci è modificare il file {{ic|/etc/grub.d/40_custom}} oppure {{ic|/boot/grub/custom.cfg}}, in modo che esse vengano automaticamente aggiunte al {{ic|grub.cfg}} quando si lancia {{ic|grub-mkconfig}}. Dopo aver effettuato le modifiche, si esegua:
 
Il modo migliore per aggiungere altre voci è modificare il file {{ic|/etc/grub.d/40_custom}} oppure {{ic|/boot/grub/custom.cfg}}, in modo che esse vengano automaticamente aggiunte al {{ic|grub.cfg}} quando si lancia {{ic|grub-mkconfig}}. Dopo aver effettuato le modifiche, si esegua:
  
# grub-mkconfig -o /boot/grub/grub.cfg  
+
{{bc|<nowiki># grub-mkconfig -o /boot/grub/grub.cfg</nowiki>}}
 +
 
 +
Oppure, per sistemi UEFI-GPT (come descritto nel metodo alternativo):
 +
 
 +
{{bc|<nowiki># grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg</nowiki>}}
  
 
Per generare un {{ic|grub.cfg}} aggiornato.
 
Per generare un {{ic|grub.cfg}} aggiornato.
  
=====Con GNU/Linux=====
+
Un file {{ic|/etc/grub.d/40_custom}} generico potrebbe avere una struttura simile a quello postato sotto, creato per un [http://h10025.www1.hp.com/ewfrf/wc/product?cc=us&destPage=product&lc=en&product=5402703&tmp_docname= HP Pavilion 15-e056sl notebook] con Windows 8 preinstallato. Ogni voce {{ic|menuentry}} dovrebbe mantenere una struttura simile a quanto segue.
 +
 
 +
Si noti inoltre che la partizione {{ic|/dev/sda2}} viene identificata da GRUB come {{ic|hd0,gpt2}} e {{ic|ahci0,gpt2}}. Si consulti [[GRUB#Voce di menù per Windows installato in modalità UEFI-GPT]] per ulteriori informazioni.
 +
 
 +
{{hc|/etc/grub.d/40_custom|<nowiki>#!/bin/sh
 +
exec tail -n +3 $0
 +
# This file provides an easy way to add custom menu entries.  Simply type the
 +
# menu entries you want to add after this comment.  Be careful not to change
 +
# the 'exec tail' line above.
 +
 
 +
menuentry "HP / Microsoft Windows 8" {
 +
echo "Sto avviando HP / Microsoft Windows 8..."
 +
insmod part_gpt
 +
insmod fat
 +
insmod search_fs_uuid
 +
insmod chain
 +
search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 763A-9CB6
 +
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
 +
}
 +
 
 +
menuentry "Centro di controllo HP / Microsoft" {
 +
echo "Sto avviando Centro di controllo HP / Microsoft..."
 +
insmod part_gpt
 +
insmod fat
 +
insmod search_fs_uuid
 +
insmod chain
 +
search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 763A-9CB6
 +
chainloader (${root})/EFI/HP/boot/bootmgfw.efi
 +
}
 +
 
 +
menuentry "Spegnimento del computer" {
 +
echo "Sto spegnendo il computer..."
 +
halt
 +
}
 +
 
 +
menuentry "Riavvio del computer" {
 +
echo "Sto riavvinado il computer..."
 +
reboot
 +
}</nowiki>}}
 +
 
 +
=====Voce di menù per GNU/Linux=====
 
Se l'altra distro è in {{ic|/dev/sda2}}:
 
Se l'altra distro è in {{ic|/dev/sda2}}:
 
{{bc|1=
 
{{bc|1=
 
menuentry "Other Linux" {
 
menuentry "Other Linux" {
set root=(hd0,2)
+
set root=(hd0,2)
linux /boot/vmlinuz (si aggiungano altre opzioni da passare al kernel, se richieste)
+
linux /boot/vmlinuz (si aggiungano altre opzioni da passare al kernel, se richieste)
initrd /boot/initrd.img (se il kernel lo richiede)
+
initrd /boot/initrd.img (se il kernel lo richiede)
 
}
 
}
 
}}
 
}}
  
=====Con FreeBSD=====
+
=====Voce di menù per FreeBSD=====
 
Richiede che FreeBSD sia installato su una singola partizione formattata come UFS. Se FreeBSD risiede su {{ic|sda4}}:
 
Richiede che FreeBSD sia installato su una singola partizione formattata come UFS. Se FreeBSD risiede su {{ic|sda4}}:
  
 
{{bc|1=
 
{{bc|1=
 
menuentry "FreeBSD" {
 
menuentry "FreeBSD" {
set root=(hd0,4)
+
set root=(hd0,4)
chainloader +1
+
chainloader +1
 
}
 
}
 
}}
 
}}
  
=====Con Windows=====
+
=====Voce di menù per Windows XP=====
 
Se windows è installato in {{ic|/dev/sda3}}:
 
Se windows è installato in {{ic|/dev/sda3}}:
 
{{Nota|Si ricordi che è necessario puntare i comandi {{ic|set root}} e {{ic|chainloader}} alla partizione riservata di sistema, ossia quella che crea Windows durante l'installazione, e non alla partizione sulla quale risiede effettivamente Windows.
 
{{Nota|Si ricordi che è necessario puntare i comandi {{ic|set root}} e {{ic|chainloader}} alla partizione riservata di sistema, ossia quella che crea Windows durante l'installazione, e non alla partizione sulla quale risiede effettivamente Windows.
Line 582: Line 730:
  
 
{{bc|1=
 
{{bc|1=
# (2) Windows XP
 
 
menuentry "Windows XP" {
 
menuentry "Windows XP" {
    set root="(hd0,3)"
+
set root="(hd0,3)"
    chainloader +1
+
chainloader +1
 
}
 
}
 
}}
 
}}
Line 591: Line 738:
 
Se il bootloader di Windows è su un disco rigido differente da quello di GRUB, potrebbe essere necessario ingannare Windows per fargli credere di risiedere nel primo drive. Ciò era possibile utilizzando {{ic|drivemap}}. Assumendo che GRUB si trovi su {{ic|hd0}} e Windows su  {{ic|hd2}}, sarà necessario aggiungere la seguente riga dopo {{ic|set root}}:
 
Se il bootloader di Windows è su un disco rigido differente da quello di GRUB, potrebbe essere necessario ingannare Windows per fargli credere di risiedere nel primo drive. Ciò era possibile utilizzando {{ic|drivemap}}. Assumendo che GRUB si trovi su {{ic|hd0}} e Windows su  {{ic|hd2}}, sarà necessario aggiungere la seguente riga dopo {{ic|set root}}:
  
drivemap -s hd0 hd2
+
{{bc|<nowiki>drivemap -s hd0 hd2</nowiki>}}
  
====Con Windows usando EasyBCD e NeoGRUB====
+
=====Voce di menù per Windows installato in modalità UEFI-GPT=====
Poichè NeoGRUB non capisce il nuovo formato dei menu di GRUB, sarà necessario effettuare il chainload di GRUB, sostituendo il contenuto del vostro {{ic|C:\NST\menu.lst}} con:
+
  
{{bc|
+
{{Nota|Questa voce funzionerà solo se il sistema viene avviato in modalità UEFI e solo se la "bitness" di Windows corrisponde a quella di UEFI. Si noti che tale voce NON funzionerà su GRUB per sistemi BIOS. A tal proposito si legga [[Windows_and_Arch_Dual_Boot#Windows_UEFI_vs_BIOS_limitations|qui]] e [[Windows_and_Arch_Dual_Boot#Bootloader_UEFI_vs_BIOS_limitations|qui]] per ulteriori informazioni.}}
default 0
+
timeout 1
+
}}
+
  
{{bc|
+
{{bc|<nowiki>
title      Chainload into GRUB v2
+
if [ "${grub_platform}" == "efi" ]; then
root        (hd0,7)
+
menuentry "Microsoft Windows Vista/7/8/8.1 x86_64 UEFI-GPT" {
kernel      /boot/grub/i386-pc/core.img
+
insmod part_gpt
}}
+
insmod fat
 +
insmod search_fs_uuid
 +
insmod chain
 +
search --fs-uuid --set=root $hints_string $fs_uuid
 +
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
 +
}
 +
fi
 +
</nowiki>}}
  
===Configurazione dell'aspetto===
+
Il valore delle variabili {{ic|$hints_string}} e {{ic|$fs_uuid}} si ottiene con i seguenti comandi:
In GRUB è possibile cambiare l'aspetto del menu.
+
Per {{ic|$fs_uuid}}:
Ci si assicuri di aver inizializzato il terminale grafico di GRUB (gfxterm), usando una modalità video appropriata (gfxmode). Ulteriori informazioni sono reperibili nella sezione [[#Correggere l'errore di GRUB "no suitable mode found"]]. La modalità video impostata di seguito, verrà passata al kernel via {{ic|gfxpayload}}; di conseguenza, questa sarà richiesta affinchè ogni configurazione dell'aspetto abbia effetto.
+
  
====Impostare la risoluzione del framebuffer====
+
{{bc|<nowiki># grub-probe --target=fs_uuid $esp/EFI/Microsoft/Boot/bootmgfw.efi
 +
1ce5-7f28</nowiki>}}
  
GRUB può impostare il framebuffer sia per sé stesso che per il kernel. Il vecchio parametro {{ic|1=vga=}} è deprecato. Il metodo consigliato è modificare {{ic|/etc/default/grub}} come segue:
+
Per {{ic|$hints_string}}:
  
{{bc|1=
+
{{bc|<nowiki># grub-probe --target=hints_string $esp/EFI/Microsoft/Boot/bootmgfw.efi
GRUB_GFXMODE=1024x768x32
+
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1</nowiki>}}
GRUB_GFXPAYLOAD_LINUX=keep
+
}}
+
  
Per rendere effettivi i cambiamenti, si esegua:
+
I due comandi di cui sopra assumono che la ESP di Windows sia montata in {{ic|$esp}}. Si noti che potrebbero esserci differenze tra lettere maiuscole e minuscole nel percorso che identifica la posizione del file EFI di Windows.
grub-mkconfig -o /boot/grub/grub.cfg
+
  
L'opzione {{ic|gfxpayload}} si assicurerà che la risoluzione venga mantenuta e passata al kernel.
+
=====Voce di menù per lo spegnimento del sistema=====
  
{{Nota|
+
{{bc|<nowiki>menuentry "System shutdown" {
* Se questo esempio non funziona, si provi a sostituire {{ic|1=gfxmode="1024x768x32"}} con {{ic|1=vbemode="0x105"}}.
+
echo "System shutting down..."
* Per elencare tutte le modalità video disponibili è sufficiente lanciare il comando {{ic|hwinfo --framebuffer}} (hwinfo è disponibile in [community], mentre dal prompt di GRUB si usi {{ic|vbeinfo}} (è necessario caricare il modulo vbe prima).}}
+
halt
 +
}</nowiki>}}
  
Se questo metodo non funziona, la vecchia opzione {{ic|1=vga=}} è ancora valida. Si aggiunga {{ic|1=vga=}} all'opzione {{ic|1=GRUB_CMDLINE_LINUX_DEFAULT}} in {{ic|/etc/default/grub}}. Ad esempio:
+
=====Voce di menù per il riavvio del sistema=====
  
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"  
+
{{bc|<nowiki>menuentry "System restart" {
 +
echo "System rebooting..."
 +
reboot
 +
}</nowiki>}}
  
imposterà una risoluzione di 1024x768.
+
=====Windows installato in modalità BIOS-MBR=====
  
È possibile scegliere tra le seguenti risoluzioni: {{ic|640×480}}, {{ic|800×600}}, {{ic|1024×768}}, {{ic|1280×1024}}, {{ic|1600×1200}}, {{ic|1920x1200}}.
+
{{Poor writing|Sezione non affine al contenuto delle altre; dovrebbe inoltre essere accorciata.}}
  
====Hack 915resolution====
+
{{Nota|GRUB supporta l'avvio diretto di {{ic|bootmgr}} e il chainload del settore di boot non è più richiesto per avviare Windows su configurazioni BIOS-MBR.}}
  
Se si stanno utilizzando schede grafiche Intel, può accadere che {{ic|# hwinfo --framebuffer}} {{ic|vbeinfo}} mostrino la risoluzione desiderata. In questo caso, è possibile utilizzare l'hack proposto, che modificherà temporaneamente il BIOS della scheda video aggiungendo la risoluzione richiesta. Si veda la home page di [http://915resolution.mango-lang.org/ 915resolution].
+
{{Attenzione|Si noti che {{ic|bootmgr}} è contenuto nella partizione di sistema, non in quella principale che ospita i file di sistema di Windows (C:). Quando si elencano tutti gli UUIDs con {{ic|blkid}} la partizione viene evidenziata come {{ic|LABEL&#61;"SYSTEM RESERVED"}} o {{ic|LABEL&#61;"SYSTEM"}} ed ha una dimensione che varia dai 100 ai 200 MB, similmente alla partizione di boot di Arch. Si consulti [[wikipedia:System_partition_and_boot_partition]] per ulteriori informazioni.}}
  
Innanzitutto è necessario scegliere una modalità video da modificare più tardi. Si avvii quindi {{ic|915resolution}} nella shell di GRUB:
+
Per tutto il resto della sezione, si assumerà che la propria partizione di Windows sia {{ic|/dev/sda1}}. Partizioni differenti varieranno di conseguenza anche il valore di {{ic|hd0,msdos1}}. Si individui l'UUID della partizione di sistema di windows, dove bootmgr e i suoi files risiedono. Per esempio, se {{ic|bootmgr}} si trova in {{ic|/media/SYSTEM_RESERVED/bootmgr}}:
  
{{hc|sh:grub> 915resolution -l|
+
Per Windows Vista/7/8/8.1:
Intel 800/900 Series VBIOS Hack : version 0.5.3
+
[...]
+
Mode 30 : 640x480, 8 bits/pixel
+
[...]
+
}}
+
  
L'obiettivo è quello di sovrascrivere la modalità 30 con la risoluzione {{ic|1440x900}}:
+
# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr
 +
69B235F6749E84CE
  
{{hc|/etc/grub/00_header|
+
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr
[...]
+
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
'''915resolution 30 1440 900 # linea aggiunta'''
+
set gfxmode&#61;${GRUB_GFXMODE}
+
[...]
+
}}
+
  
Sarà ora necessario impostare il valore di {{ic|GRUB_GFXMODE}}, come spiegato in precedenza e rigenerare il file di configurazione di GRUB:
+
{{Nota|Se si utilizza Windows XP, si sostituisca {{ic|bootmgr}} con {{ic|ntldr}} nei comandi di cui sopra. Si noti inoltre che potrebbe non essere presente una partizione di sistema separata: si effettui la ricerca del file NTLDR sulla partizione principale di Windows.}}
  
# grub-mkconfig -o /boot/grub/grub.cfg
+
Si aggiunga quindi il codice sotto riportato al file {{ic|/etc/grub.d/40-custom}} o {{ic|/boot/grub/custom.cfg}} e si rigeneri il {{ic|grub.cfg}} con {{ic|grub-mkconfig}} come spiegato sopra per effettuare il chainload di Windows (XP, Vista, 7 o 8) installato in modalità BIOS-MBR:
# reboot
+
  
====Immagine di sfondo e caratteri bitmap====
+
{{Nota|Le voci sotto riportate NON funzioneranno su GRUB per sistemi BIOS. A tal proposito si legga [[Windows_and_Arch_Dual_Boot#Windows_UEFI_vs_BIOS_limitations|qui]] e [[Windows_and_Arch_Dual_Boot#Bootloader_UEFI_vs_BIOS_limitations|qui]] per ulteriori informazioni.}}
GRUB supporta le immagini di sfondo e i caratteri bitmap nel formato {{ic|pf2}}. Il font unifont è incluso nel pacchetto {{Pkg|grub}} con nome {{ic|unicode.pf2}} oppure, in soli caratteri ASCII con nome {{ic|ascii.pf2}}.
+
  
I formati di immagine supportati includono tga, png e jpeg, a patto che i rispettivi moduli siano caricati. La risoluzione massima applicabile dipende dall'hardware in uso.
 
  
Prima di procedere, seguire quanto indicato in [[#Impostare la risoluzione del framebuffer]].
+
Per Windows Vista/7/8/8.1:
  
Si modifichi quindi il file {{ic|/etc/default/grub}} come segue:
+
{{bc|1=
 +
if [ "${grub_platform}" == "pc" ]; then
 +
  menuentry "Microsoft Windows Vista/7/8/8.1 BIOS-MBR" {
 +
    insmod part_msdos
 +
    insmod ntfs
 +
    insmod search_fs_uuid
 +
    insmod ntldr   
 +
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
 +
    ntldr /bootmgr
 +
  }
 +
fi}}
  
GRUB_BACKGROUND="/boot/grub/miaimmagine"
+
Per Windows XP:
#GRUB_THEME="/path/to/gfxtheme"
+
GRUB_FONT="/path/to/font.pf2"
+
  
{{Nota|Se si è installato GRUB in una partizione separata, {{ic|/boot/grub/miaimmagine}} diventa {{ic|/grub/miaimmagine}}.}}
+
{{bc|1=
 +
if [ "${grub_platform}" == "pc" ]; then
 +
  menuentry "Microsoft Windows XP" {
 +
    insmod part_msdos
 +
    insmod ntfs
 +
    insmod search_fs_uuid
 +
    insmod ntldr   
 +
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
 +
    ntldr /bootmgr
 +
  }
 +
fi}}
  
Per applicare le modifiche al {{ic|grub.cfg}}, si esegua:
 
  
grub-mkconfig -o /boot/grub/grub.cfg
+
{{Nota|{{ic|nn}} dovrebbe avere un valore superiore a {{ic|06}} affinchè gli script di sistema siano eseguiti per primi.}}
  
Se l'inserimento dell'immagine è avvenuto con successo, dovrebbe essere visualizzato il messaggio {{ic|Found background image...}}, durante l'esecuzione del precedente comando. Se questo non accade, significa che l'immagine non è stata incorporata nel grub.cfg.
+
{{Nota|In alcuni casi (ad esempio se GRUB viene installato prima di Windows 8), potrebbe verificarsi un errore riguardante {{ic|\boot\bcd}} (codice errore {{ic|0xC000000F}}) durante l'avvio di Windows. È possibile risolvere il problema avviando la console di ripristino di Windows (si utilizzi il suo disco di installazione) ed eseguendo:
  
In tal caso, si controlli che:
+
x:\>bootrec.exe /fixboot
* il percorso e il nome dell'immagine in {{ic|/etc/default/grub}} siano corretti
+
x:\>bootrec.exe /rebuildbcd
* l'immagine abbia dimensioni e formato adeguati (tga, png, png a 8 bit)
+
* l'immagine sia stata salvata in modalità RGB e non sia indicizzata
+
* la modalità console non sia stata abilitata in /etc/default/grub
+
* il comando {{ic|grub-mkconfig}} sia stato eseguito per inserire le informazioni relative allo sfondo nell file {{ic|/boot/grub/grub.cfg}}.
+
  
====Temi====
+
{{Attenzione|Non utilizzare {{ic|bootrec.exe /Fixmbr}}, poichè cancellerebbe GRUB.}}}}
  
Di seguito viene proposto un esempio per la configurazione di GRUB con il tema Starfield, incluso nel pacchetto fornito con Arch.
+
Il file {{ic|/etc/grub.d/40_custom}} può essere utilizzato come template per creare {{ic|/etc/grub.d/nn_custom}}, dove il numero {{ic|nn}} definisce l'ordine in cui gli script sono eseguiti, determinando di conseguenza il posizionamento delle voci nel menu di GRUB.
  
Si modifichi {{ic|/etc/default/grub}}:
+
{{Nota|Il numero {{ic|nn}} dovrebbe avere un valore maggiore di 6, affinchè vengano prima eseguiti altri script necessari.}}
  
GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"
+
====Con Windows usando EasyBCD e NeoGRUB====
 +
Poichè NeoGRUB non capisce il nuovo formato dei menu di GRUB, sarà necessario effettuare il chainload di GRUB, sostituendo il contenuto del vostro {{ic|C:\NST\menu.lst}} con:
  
Si applichino le modifiche:
+
{{bc|
 
+
default 0
grub-mkconfig -o /boot/grub/grub.cfg
+
timeout 1
 
+
Se il tema è stato applicato correttamente, apparirà a video il messaggio {{ic|Found theme: /usr/share/grub/themes/starfield/theme.txt}}.
+
 
+
====Colori del Menù====
+
In GRUB è possibile cambiare i colori del menù. L'elenco dei colori disponibili è reperibile [http://www.gnu.org/software/grub/manual/html_node/Theme-file-format.html#Theme-file-format qui]. Di seguito, un esempio:
+
 
+
Si modifichi {{ic|/etc/default/grub}} come segue:
+
{{bc|1=
+
GRUB_COLOR_NORMAL="light-blue/black"
+
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+
 
}}
 
}}
  
Per rendere effettivi i cambiamenti si esegua:
+
{{bc|
grub-mkconfig -o /boot/grub/grub.cfg
+
title      Chainload into GRUB v2
 
+
root        (hd0,7)
====Menù nascosto====
+
kernel      /boot/grub/i386-pc/core.img
Una delle caratteristiche proprie di GRUB è la possibilità di nascondere il menù e renderlo visibile attraverso la pressione del tasto {{ic|Esc}}, se necessario. È anche possibile decidere se visualizzare o meno il countdown.
+
 
+
Si modifichi {{ic|/etc/default/grub}}. Nell'esempio che segue, il countdown è stato impostato a 5 secondi e reso visibile all'utente:
+
 
+
{{bc|1=
+
GRUB_HIDDEN_TIMEOUT=5
+
GRUB_HIDDEN_TIMEOUT_QUIET=false
+
 
}}
 
}}
  
Si esegua:
+
===Avviare un'immagine ISO9660 direttamente da GRUB===
# grub-mkconfig -o /boot/grub/grub.cfg
+
  
====Disabilitare il framebuffer====
+
GRUB supporta l'avvio di immagini ISO attraveso l'utilizzo di dispositivi di loopback. Si veda a tal proposito [[Multiboot USB drive#Using GRUB and loopback devices]].
  
Se si usano i driver proprietari NVIDIA, potrebbe essere necessario disabilitare il framebuffer di GRUB, poichè potrebbe interferire con il driver.
+
===LVM===
 
+
Per disabilitarlo, si modifichi {{ic|/etc/default/grub}} decommentando la seguente linea:
+
 
+
GRUB_TERMINAL_OUTPUT=console
+
 
+
Si esegua poi:
+
 
+
grub-mkconfig -o /boot/grub/grub.cfg
+
 
+
Se si vuole comunque avviare GRUB in framebuffer è possibile tornare in modalità testuale prima dell'avvio del kernel. A tal proposito si modifichi la relativa variabile in {{ic|/etc/default/grub}}:
+
 
+
GRUB_GFXPAYLOAD_LINUX=text
+
 
+
Si rigeneri quindi il file di configurazione come visto sopra.
+
 
+
===Altre opzioni===
+
====LVM====
+
  
 
Se si usa [[LVM (Italiano)|LVM]] per la propria {{ic|/boot}}, si aggiunga la seguente linea prima delle varie voci:
 
Se si usa [[LVM (Italiano)|LVM]] per la propria {{ic|/boot}}, si aggiunga la seguente linea prima delle varie voci:
Line 769: Line 888:
 
}}
 
}}
  
====RAID====
+
===RAID===
  
 
GRUB permette di trattare i volumi in configurazione RAID in modo semplice. Si aggiunga {{ic|insmod mdraid}} al {{ic|grub.cfg}} che consentirà di riferirsi al volume in modo nativo. Ad esempio, {{ic|/dev/md0}} diventa:
 
GRUB permette di trattare i volumi in configurazione RAID in modo semplice. Si aggiunga {{ic|insmod mdraid}} al {{ic|grub.cfg}} che consentirà di riferirsi al volume in modo nativo. Ad esempio, {{ic|/dev/md0}} diventa:
  set root=(md0)
+
  set root=(md/0)
 
mentre un volume RAID partizionato (es. {{ic|/dev/md0p1}} diventa:
 
mentre un volume RAID partizionato (es. {{ic|/dev/md0p1}} diventa:
  set root=(md0,1)
+
  set root=(md/0,1)
  
 
Per installare GRUB su una partizione {{ic|/boot}} in RAID1 (o comunque se {{ic|/boot}} si trova su una partizione root in RAID1) su sistemi con GPT e partizione di boot BIOS ef02, si esegua {{ic|grub-install}} su ciascuna unità.
 
Per installare GRUB su una partizione {{ic|/boot}} in RAID1 (o comunque se {{ic|/boot}} si trova su una partizione root in RAID1) su sistemi con GPT e partizione di boot BIOS ef02, si esegua {{ic|grub-install}} su ciascuna unità.
Line 780: Line 899:
 
Ad esempio:
 
Ad esempio:
  
  # grub-install --recheck --debug /dev/sda && grub-install --recheck --debug /dev/sdb
+
  # grub-install --target=i386-pc --recheck --debug /dev/sda && grub-install --target=i386-pc --recheck --debug /dev/sdb
  
 
Dove l'array RAID1 che ospita la partizione {{ic|/boot}} è formato da {{ic|/dev/sda}} e {{ic|/dev/sdb}}.
 
Dove l'array RAID1 che ospita la partizione {{ic|/boot}} è formato da {{ic|/dev/sda}} e {{ic|/dev/sdb}}.
  
====Nomenclatura permanente dei dispositivi a blocchi====
+
===Usare le etichette===
 
+
Un modo per identificare con una [[Persistent block device naming (Italiano)|nomenclatura persistente i dispositivi a blocchi]] è quello di utilizzare degli UUID univoci per le partizioni, invece dei vecchi valori {{ic|/dev/sd*}}. I vantaggi sono spiegati nel link fornito sopra.
+
 
+
GRUB utilizza di default gli UUID dei filesystems per identificare in modo permanente i dispositivi a blocchi.
+
 
+
{{Nota|È necessario rigenerare il file {{ic|/boot/grub/grub.cfg}} affinchè vengano aggiornati gli UUID ogni volta che una partizione viene ridimensionata o formattata. Si tenga a mente questo particolare ogni volta che si modificano le partizioni con un LiveCD.}}
+
 
+
L'uso degli UUID è controllato da un'opzione in {{ic|/etc/default/grub}}:
+
 
+
# GRUB_DISABLE_LINUX_UUID=true
+
 
+
In ogni caso, ci si ricordi di applicare i cambiamenti:
+
 
+
# grub-mkconfig -o /boot/grub/grub.cfg
+
 
+
====Usare le etichette====
+
 
È possibile usare le etichette (stringhe che identificano le partizioni in una maniera leggibile dall'utente), usando l'opzione {{ic|--label}} del comando {{ic|search}}. Innanzitutto, si apponga un'etichetta alle proprie partizioni:
 
È possibile usare le etichette (stringhe che identificano le partizioni in una maniera leggibile dall'utente), usando l'opzione {{ic|--label}} del comando {{ic|search}}. Innanzitutto, si apponga un'etichetta alle proprie partizioni:
  
  # tune2fs -L <ETICHETTA> <PARTIZIONE>
+
  # tune2fs -L ''ETICHETTA'' ''PARTIZIONE''
  
 
Poi si aggiunga una voce usando le etichette:
 
Poi si aggiunga una voce usando le etichette:
Line 815: Line 918:
 
}}
 
}}
  
====Richiamare l'ultimo sistema avviato====
+
===Proteggere con una password il menu di GRUB===
GRUB è in grado di ricordarsi l'ultimo sistema avviato ed usarlo come default la prossima volta che si eseguirà il boot. Questa funzionalità è utile se si dispone di kernel multipli (ad esempio il kernel corrente di Arch e il LTS come fallback) o più sistemi operativi. Si modifichi {{ic|/etc/default/grub}} e si cambi il valore di {{ic|GRUB_DEFAULT}}:
+
 
+
GRUB_DEFAULT=saved
+
 
+
Ciò consentirà a GRUB di avviare il sistema operativo salvato. Per abilibare il salvataggio, si aggiunga la linea seguente ad {{ic|/etc/default/grub}}:
+
 
+
GRUB_SAVEDEFAULT=true
+
 
+
{{Nota|Le voci di menù aggiunte manualmente in {{ic|/etc/grub.d/40_custom}} o {{ic|/boot/grub/custom.cfg}} (ad esempio Windows), richiederanno l'opzione {{ic|savedefault}}.}}
+
 
+
Ci si ricordi di [[GRUB2 (Italiano)#Generare un file di configurazione|rigenerare]] il file di configurazione di GRUB.
+
 
+
====Cambiare la voce di menu predefinita====
+
 
+
Per cambiare la voce selezionata in modo predefinito, si modifichi la variabile {{ic|GRUB_DEFAULT}} in {{ic|/etc/default/grub}}:
+
 
+
Utilizzando numeri progressivi:
+
 
+
GRUB_DEFAULT=0
+
 
+
GRUB enumera le voci che appaiono nel menu partendo da zero, il che significa che 0 selezionerà la prima voce, 1 la seconda e così via
+
 
+
Oppure utilizzando i titoli delle voci:
+
 
+
GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'
+
 
+
{{Nota|Ricordarsi di [[GRUB2 (Italiano)#Generare un file di configurazione|rigenerare]] il file di configurazione di GRUB.}}
+
 
+
====Sicurezza====
+
 
Se si desidera rendere più sicuro GRUB e fare in modo che nessuno possa cambiare i parametri di boot od usare la riga di comando, è possibile aggiungere un nome utente e password ai files di configurazione di GRUB. A tal fine, si esegua {{ic|grub-mkpasswd_pbkdf2}}. Si inserisca una password e la si confermi.
 
Se si desidera rendere più sicuro GRUB e fare in modo che nessuno possa cambiare i parametri di boot od usare la riga di comando, è possibile aggiungere un nome utente e password ai files di configurazione di GRUB. A tal fine, si esegua {{ic|grub-mkpasswd_pbkdf2}}. Si inserisca una password e la si confermi.
  
Line 851: Line 925:
 
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A}}
 
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A}}
  
Si aggiungano le seguenti stringhe a {{ic|/etc/grub.d/00_header}}:
+
Si aggiungano le seguenti stringhe a {{ic|/etc/grub.d/40_custom}}:
  
{{hc|/etc/grub.d/00_header|<nowiki>
+
{{hc|/etc/grub.d/40_custom|2=
set superusers='''username'''
+
set superusers<nowiki>=</nowiki>"'''username'''"
 
password_pbkdf2 '''username''' '''<password>'''
 
password_pbkdf2 '''username''' '''<password>'''
</nowiki>}}
+
}}
  
 
Dove a <password> corrisponde la stringa generata con {{ic|grub-mkpasswd_pbkdf2}}.
 
Dove a <password> corrisponde la stringa generata con {{ic|grub-mkpasswd_pbkdf2}}.
Line 864: Line 938:
 
Le impostazioni di cui sopra possono essere rese meno restrittive e personalizzate aggiungendo più utenti, come spiegato nel capitolo "Security" del [https://www.gnu.org/software/grub/manual/grub.html#Security manuale di GRUB].
 
Le impostazioni di cui sopra possono essere rese meno restrittive e personalizzate aggiungendo più utenti, come spiegato nel capitolo "Security" del [https://www.gnu.org/software/grub/manual/grub.html#Security manuale di GRUB].
  
====Cifratura della partizione root====
+
===Nascondere il menu di GRUB e farlo apparire alla pressione del tasto Shift===
 
+
Per far sì che GRUB passi automaticamente al kernel i parametri necessari per la cifratura della root, si aggiunga {{ic|1=cryptdevice=/dev/device:etichetta}} a {{ic|GRUB_CMDLINE_LINUX}} in {{ic|/etc/default/grub}}.
+
 
+
{{Suggerimento|Se si sta effettuando l'aggiornamento da GRUB Legacy, si controlli il file {{ic|/boot/grub/menu.lst.pacsave}} per l'identificativo dispositivo o l'etichetta corretta da inserire. Si cerchi dopo la riga {{ic|kernel /vmlinuz-linux}}.}}
+
 
+
Un esempio con la root mappata su {{ic|/dev/mapper/root}}:
+
 
+
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"
+
 
+
Si disabiliti inoltre l'uso degli UUID per il file system di root:
+
 
+
GRUB_DISABLE_LINUX_UUID=true
+
 
+
Si rigeneri quindi il file di configurazione di grub.
+
 
+
====Effettuare il boot di una voce non default per una sola volta====
+
 
+
Il comando {{ic|grub-reboot}} è molto utile per avviare una voce diversa da quella di default. GRUB caricherà la voce specificata come primo argomento del comando e il sistema operativo corrispondente verrà avviato al prossimo avvio.
+
Si noti che GRUB effettuerà il boot della scelta di default per tutti i riavvii successivi a quello effettuato subito dopo l'esecuzione del comando.
+
Non è necessario modificare il file di configurazione di GRUB o scegliere una voce nel menù di avvio.
+
 
+
{{Nota|Quanto sopra richiede l'opzione {{ic|1=GRUB_DEFAULT=saved}} in {{ic|/etc/default/grub}} (e successiva rigenerazione del {{ic|grub.cfg}}) o, in caso di un {{ic|grub.cfg}} scritto manualmente, la linea {{ic|1=set default="${saved_entry}"}}.}}
+
 
+
====Nascondere il menu di GRUB e farlo apparire alla pressione del tasto Shift====
+
  
 
Per ridurre al minimo i tempi di boot è possibile nascondere il menu di GRUB, invece di aspettare lo scadere del timeout. È possibile nascondere il menu di default e farlo apparire solo qualora venga premuto il tasto {{ic|Shift}} durante l'avvio di GRUB.
 
Per ridurre al minimo i tempi di boot è possibile nascondere il menu di GRUB, invece di aspettare lo scadere del timeout. È possibile nascondere il menu di default e farlo apparire solo qualora venga premuto il tasto {{ic|Shift}} durante l'avvio di GRUB.
Line 896: Line 946:
 
  GRUB_FORCE_HIDDEN_MENU="true"
 
  GRUB_FORCE_HIDDEN_MENU="true"
  
Sarà inoltre necessario creare il seguente file:
+
Sarà inoltre necessario creare e rendere eseguibile il seguente file:
  
 
{{hc|/etc/grub.d/31_hold_shift|<nowiki>
 
{{hc|/etc/grub.d/31_hold_shift|<nowiki>
Line 925: Line 975:
 
export TEXTDOMAINDIR="${datarootdir}/locale"
 
export TEXTDOMAINDIR="${datarootdir}/locale"
  
. "${datarootdir}/grub/grub-mkconfig_lib"
+
source "${datarootdir}/grub/grub-mkconfig_lib"
  
 
found_other_os=
 
found_other_os=
Line 1,001: Line 1,051:
 
</nowiki>}}
 
</nowiki>}}
  
===Avviare un'immagine ISO direttamente da GRUB===
+
Si renda eseguibile lo script e si rigeneri il file di configurazione di GRUB:
  
Si modifichi {{ic|/etc/grub.d/40_custom}} o {{ic|/boot/grub/custom.cfg}} aggiungendo una voce per il boot dell'ISO che si desidera avviare. Una volta fatto, si aggiorni il menu di GRUB con il solito {{ic|grub-mkconfig -o /boot/grub/grub.cfg}} (dato da root).
+
# chmod a+x /etc/grub.d/31_hold_shift
 +
# grub-mkconfig -o /boot/grub/grub.cfg
  
====ISO di Arch Linux====
+
==Combinare UUID e scripting==
 
+
Se si vogliono usare gli UUID per sopperire al mapping inaffidabile dei dispositivi effettuato dal BIOS, oppure si stanno avendo difficoltà con la sintassi di GRUB, ecco un esempio che usa gli UUID e un piccolo script per far puntare GRUB alle giuste partizioni. Tutto ciò che si dovrà fare, sarà sostituire gli UUID dell'esempio con quelli corretti per il proprio sistema (L'esempio si applica a sistemi con una partizione di boot separata e va modificato di conseguenza in caso di partizioni aggiuntive).
{{Nota|L'esempio assume che la ISO si trovi nella cartella {{ic|/archives}} su {{ic|hd0,6}}.}}
+
 
+
{{Suggerimento|Se si sta usando una penna USB si utilizzi [[Persistent block device naming (Italiano)|la nomenclatura persistente dei dispositivi a blocchi]] per definire il valore del parametro {{ic|img_dev}}. (esempio: {{ic|1=img_dev=/dev/disk/by-label/CORSAIR}})}}
+
 
+
=====x86_64=====
+
  
  menuentry "Archlinux-2013.05.01-dual.iso" --class iso {
+
{{bc|1=
  set isofile="/archives/archlinux-2013.05.01-dual.iso"
+
  menuentry "Arch Linux 64" {
  set partition="6"
+
    # Si impostino gli UUID delle proprie partizioni di boot e root
  loopback loop (hd0,$partition)/$isofile
+
    set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07 
  linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop
+
    set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a
  initrd (loop)/arch/boot/x86_64/archiso.img
+
 
 +
    # (Nota: In caso non si disponga di una partizione di boot separata, i due UUID saranno uguali)
 +
 
 +
    # Otteniamo gli identificativi dei dispositivi contenenti le partizioni di boot/root e li impostiamo nelle variabili "grub_boot" e "root"
 +
    search --fs-uuid $the_root_uuid --set=root     
 +
    search --fs-uuid $the_boot_uuid --set=grub_boot
 +
 
 +
    # Controllo per verificare che boot e root siano uguali
 +
    # Se lo sono, allora aggiungo "/boot" a $grub_root, dal momento che $grub_root è effettivamente la partizione di root
 +
    if [ $the_boot_uuid == $the_root_uuid] ; then
 +
        set grub_boot=$grub_boot/boot
 +
    else
 +
        set grub_boot=($grub_boot)
 +
    fi
 +
 
 +
    # $grub_boot indica ora il dispositivo corretto e i seguenti comandi saranno in grado di trovare il kernel e l'immagine initrd senza problemi
 +
    linux ($grub_boot)/vmlinuz-linux root=/dev/disk/by-uuid/$uuid_os_root ro
 +
    initrd ($grub_boot)/initramfs-linux.img
 
  }
 
  }
 
+
}}
=====i686=====
+
 
+
menuentry "Archlinux-2013.05.01-dual.iso" --class iso {
+
  set isofile="/archives/archlinux-2013.05.01-dual.iso"
+
  set partition="6"
+
  loopback loop (hd0,$partition)/$isofile
+
  linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop
+
  initrd (loop)/arch/boot/i686/archiso.img
+
}
+
 
+
====ISO di Ubuntu====
+
 
+
{{Nota|L'esempio assume che la ISO si trovi nella cartella {{ic|/archives}} su {{ic|hd0,6}}. Sarà quindi necessario modificare tutti i riferimenti ad HDD e partizioni per adattarli al proprio sistema.}}
+
 
+
menuentry "ubuntu-13.04-desktop-amd64.iso" {
+
    set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"
+
    loopback loop (hd0,6)/$isofile
+
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --
+
    initrd (loop)/casper/initrd.lz
+
}
+
 
+
menuentry "ubuntu-12.04-desktop-amd64.iso" {
+
    set isofile="/archives/ubuntu-12.04-desktop-amd64.iso"
+
    loopback loop (hd0,6)/$isofile
+
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --
+
    initrd (loop)/casper/initrd.lz
+
}
+
 
+
==== Altre ISO ====
+
 
+
Altre configurazioni funzionanti sono reperibili a [http://askubuntu.com/questions/141940/how-to-boot-live-iso-images questo indirizzo].
+
 
+
  
 
==Usare la shell==
 
==Usare la shell==
Line 1,077: Line 1,108:
  
 
  sh:grub> set pager=1
 
  sh:grub> set pager=1
 +
 +
===Utilizzare la shell dei comanti per avviare altri sistemi operativi===
 +
 +
grub>
 +
 +
È possibile utilizzare la shell di GRUB per avviare altri sistemi operativi, come ad esempio sistemi Windows o Linux installati su partizione e avviarli tramite '''chainloading'''.
 +
 +
Il ''chainloading'' consiste nell'avviare un bootloader, che può trovarsi all'inizio del disco (per sistemi MBR) o all'inizio di una partizione, tramite un altro bootloader.
 +
 +
====Effettuare il chainloading di una partizione====
 +
 +
set root=(hdX,Y)
 +
chainloader +1
 +
boot
 +
 +
Dove {{ic|X}} indica il disco fisso da cui avviare l'altro bootloader ed ha valori che partono da 0, mentre {{ic|Y}} identifica il numero della partizione che ci interessa.
 +
 +
L'esempio seguente mostra come avviare un'installazione di Windows situata nella prima partizione del primo hard disk:
 +
 +
set root=(hd0,1)
 +
chainloader +1
 +
boot
 +
 +
È inoltre possibile avviare un'installazione di GRUB in una partizione utilizzando lo stesso metodo di cui sopra.
 +
 +
====Effettuare il chainloading di un disco/drive====
 +
 +
set root=hdX
 +
chainloader +1
 +
boot
 +
 +
====Effettuare il chainloading di sistemi Windows/Linux installati in modalità UEFI====
 +
 +
{{bc|<nowiki>
 +
insmod ntfs
 +
set root=(hd0,gpt4)
 +
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
 +
boot
 +
</nowiki>}}
 +
 +
{{ic|insmod ntfs}} viene utilizzato per caricare il modulo NTFS necessario al caricamento di Windows.
 +
 +
{{ic|(hd0,gpt4)}} o {{ic|/dev/sda4}} identifica la partizione EFI di sistema (ESP).
 +
 +
Il percorso che segue la voce {{ic|chainloader}} identifica il file .efi del quale si vuole fare il chainloading.
 +
 +
====Avvio normale====
 +
 +
Si vedano gli esempi in [[#Usare la console di emergenza]].
  
 
==Tools grafici per la configurazione==
 
==Tools grafici per la configurazione==
Line 1,083: Line 1,163:
  
 
* {{App|grub-customizer|Consente di personalizzare il bootloader (GRUB o BURG)|https://launchpad.net/grub-customizer|{{AUR|grub-customizer}}}}
 
* {{App|grub-customizer|Consente di personalizzare il bootloader (GRUB o BURG)|https://launchpad.net/grub-customizer|{{AUR|grub-customizer}}}}
* {{App|grub2-editor|Control module di KDE4 per configurare GRUB|http://kde-apps.org/content/show.php?content&#61;139643|{{AUR|grub2-editor}}}}
+
* {{App|grub2-editor|Control module di KDE4 per configurare GRUB|http://kde-apps.org/content/show.php?content&#61;139643|{{AUR|grub2-editor}}{{Broken package link|{{aur-mirror|grub2-editor}}}}}}
* {{App|kcm-grub2|Questo modulo KCM consente di gestire le impostazioni più comuni di GRUB|http://kde-apps.org/content/show.php?content&#61;137886|{{AUR|kcm-grub2}}}}
+
 
* {{App|startupmanager|Applicazione grafica per cambiare le impostazioni di GRUB Legacy, GRUB, Usplash e Splashy ([https://launchpad.net/startup-manager/+announcement/8300 abbandonato])|http://sourceforge.net/projects/startup-manager/|{{AUR|startupmanager}}}}
 
* {{App|startupmanager|Applicazione grafica per cambiare le impostazioni di GRUB Legacy, GRUB, Usplash e Splashy ([https://launchpad.net/startup-manager/+announcement/8300 abbandonato])|http://sourceforge.net/projects/startup-manager/|{{AUR|startupmanager}}}}
  
Line 1,111: Line 1,190:
 
Per espandere le funzionalità della console, si inserisca il modulo {{ic|linux}}.
 
Per espandere le funzionalità della console, si inserisca il modulo {{ic|linux}}.
  
  grub rescue> insmod (hdX,Y)/boot/grub/linux.mod
+
  grub rescue> insmod i386-pc/linux.mod
  
{{Nota|Se si sta usando una partizione di boot separata, si ometta {{ic|/boot}} dal percorso. (esempio: {{ic|1=set prefix=(hdX,Y)/grub and insmod (hdX,Y)/grub/linux.mod}}).}}
+
{{Nota|Se si sta usando una partizione di boot separata, si ometta {{ic|/boot}} dal percorso. (esempio: {{ic|1=set prefix=(hdX,Y)/grub}}).}}
  
Ciò rende disponibili i comandi {{ic|linux}} ed {{ic|initrd}}, che dovrebbero essere familiari (si veda [[#Configurazione]]).
+
Ciò rende disponibili i comandi {{ic|linux}} ed {{ic|initrd}}, che dovrebbero essere familiari (si veda [[#Configurazione avanzata]]).
  
 
Un esempio, avvio di Arch Linux:
 
Un esempio, avvio di Arch Linux:
Line 1,132: Line 1,211:
 
boot
 
boot
 
}}
 
}}
 +
 +
{{Nota|Se si riscontra l'errore {{ic|error: premature end of file /NOME_KERNEL}} durante l'esecuzione del comando {{ic|linux}} è possibile provare ad utilizzare il comando {{ic|linux16}} al suo posto.}}
  
 
Dopo aver avviato con successo l'installazione di Arch Linux, è possibile correggere {{ic|grub.cfg}} e procedere con la reinstallazione di GRUB.
 
Dopo aver avviato con successo l'installazione di Arch Linux, è possibile correggere {{ic|grub.cfg}} e procedere con la reinstallazione di GRUB.
  
Per reinstallare GRUB nel MBR, cambiando {{ic|/dev/sda}} secondo le proprie esigenze. Si veda [[#Installazione del Bootloader]] per i dettagli.
+
Per reinstallare GRUB nel MBR, cambiando {{ic|/dev/sda}} secondo le proprie esigenze. Si veda [[#Installazione]] per i dettagli.
 
+
==Combinare UUID e scripting==
+
Se si vogliono usare gli UUID per sopperire al mapping inaffidabile dei dispositivi effettuato dal BIOS, oppure si stanno avendo difficoltà con la sintassi di GRUB, ecco un esempio che usa gli UUID e un piccolo script per far puntare GRUB alle giuste partizioni. Tutto ciò che si dovrà fare, sarà sostituire gli UUID dell'esempio con quelli corretti per il proprio sistema (L'esempio si applica a sistemi con una partizione di boot separata e va modificato di conseguenza in caso di partizioni aggiuntive).
+
 
+
{{bc|1=
+
menuentry "Arch Linux 64" {
+
    # Si impostino gli UUID delle proprie partizioni di boot e root
+
    set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07 
+
    set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a
+
 
+
    # (Nota: In caso non si disponga di una partizione di boot separata, i due UUID saranno uguali)
+
 
+
    # Otteniamo gli identificativi dei dispositivi contenenti le partizioni di boot/root e li impostiamo nelle variabili "grub_boot" e "root"
+
    search --fs-uuid $the_root_uuid --set=root     
+
    search --fs-uuid $the_boot_uuid --set=grub_boot
+
 
+
    # Controllo per verificare che boot e root siano uguali
+
    # Se lo sono, allora aggiungo "/boot" a $grub_root, dal momento che $grub_root è effettivamente la partizione di root
+
    if [ $the_boot_uuid == $the_root_uuid] ; then
+
        set grub_boot=$grub_boot/boot
+
    else
+
        set grub_boot=($grub_boot)
+
    fi
+
 
+
    # $grub_boot indica ora il dispositivo corretto e i seguenti comandi saranno in grado di trovare il kernel e l'immagine initrd senza problemi
+
    linux ($grub_boot)/vmlinuz-linux root=/dev/disk/by-uuid/$uuid_os_root ro
+
    initrd ($grub_boot)/initramfs-linux.img
+
}
+
}}
+
  
 
==Risoluzione dei problemi==
 
==Risoluzione dei problemi==
  
 
===Sistemi con BIOS Intel non effettuano il boot da partizioni GPT===
 
===Sistemi con BIOS Intel non effettuano il boot da partizioni GPT===
 +
 +
====MBR====
  
 
Alcuni BIOS Intel richiedono la presenza al boot di una partizione MBR contrassegnata come "avviabile", cosa che rende di fatto inusabili configurazioni basate su GPT.
 
Alcuni BIOS Intel richiedono la presenza al boot di una partizione MBR contrassegnata come "avviabile", cosa che rende di fatto inusabili configurazioni basate su GPT.
Line 1,177: Line 1,231:
  
 
Ulteriori informazioni sono disponibili a  [http://www.rodsbooks.com/gdisk/bios.html questo] indirizzo.
 
Ulteriori informazioni sono disponibili a  [http://www.rodsbooks.com/gdisk/bios.html questo] indirizzo.
 +
 +
====EFI====
 +
 +
Alcuni firmware UEFI richiedono la presenza di un'immagine avviabile in un percorso specifico prima di poter mostrare le voci di avvio. Se si rientra in questa categoria {{ic|grub-install}} segnalerà che {{ic|efibootmgr}} ha agiunto una voce per l'avvio di GRUB, ma quest'ultima non verrà poi visualizzata all'interno del menu di VisualBIOS per la scelta dell'ordine di boot.
 +
La soluzione consiste nel posizionare un'ìmmagine in uno dei percorsi in questione.
 +
Assumendo che la propria partizione EFI sia in {{ic|/boot/efi}}, i seguenti comandi risolveranno il problema:
 +
 +
mkdir /boot/efi/EFI/boot
 +
cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
 +
 +
La soluzione proposta ha funzionato su una scheda madre Intel DH87MC con firmware datato Gennaio 2014.
  
 
===Abilitare i messaggi di debug in GRUB===
 
===Abilitare i messaggi di debug in GRUB===
Line 1,195: Line 1,260:
 
Sui sistemi UEFI, se la modalità video di GRUB non viene inizializzata, non verranno visualizzati i messaggi di boot del kernel (almeno fino all'attivazione del KMS).
 
Sui sistemi UEFI, se la modalità video di GRUB non viene inizializzata, non verranno visualizzati i messaggi di boot del kernel (almeno fino all'attivazione del KMS).
  
Si copi {{ic|/usr/share/grub/unicode.pf2}} in {{ic|1=${GRUB_PREFIX_DIR}}} ({{ic|/boot/grub}} su sistemi BIOS e UEFI. Se GRUB UEFI è stato installato con l'opzione {{ic|--boot-directory}} abilitata, allora il percorso è {{ic|/boot/efi/EFI/grub}}).
+
Si copi {{ic|/usr/share/grub/unicode.pf2}} in {{ic|1=${GRUB_PREFIX_DIR}}} ({{ic|/boot/grub}} su sistemi BIOS e UEFI. Se GRUB UEFI è stato installato con l'opzione {{ic|1=--boot-directory=$esp/EFI}} abilitata, allora il percorso sarà {{ic|$esp/EFI/grub}}).
  
 
  # cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}
 
  # cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}
Line 1,240: Line 1,305:
 
Questo problema si verifica quando si tenta di installare GRUB in VMWare. Ulteriori informazioni [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 qui]. Si spera in un fix in tempi brevi.
 
Questo problema si verifica quando si tenta di installare GRUB in VMWare. Ulteriori informazioni [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 qui]. Si spera in un fix in tempi brevi.
  
Può anche verificarsi quando la partizione inizia subito dopo l'MBR (blocco 63), senza lasciare uno spazio di circa 1MB (2048 blocchi) prima dell'inizio della prima partizione. Si veda [[GRUB2 (Italiano)#Istruzioni specifiche per Master Boot Record (MBR)]]
+
Può anche verificarsi quando la partizione inizia subito dopo l'MBR (blocco 63), senza lasciare uno spazio di circa 1MB (2048 blocchi) prima dell'inizio della prima partizione. Si veda [[#Istruzioni specifiche per Master Boot Record (MBR)]]
  
 
===GRUB UEFI torna alla shell===
 
===GRUB UEFI torna alla shell===
Line 1,274: Line 1,339:
  
 
{{ic|grub-mkconfig}} dovrebbe ora mostrare tutte le opzioni di boot, incluso Windows. Se il problema è risolto, si rimuova {{ic|/boot/grub/device.map-old}}.
 
{{ic|grub-mkconfig}} dovrebbe ora mostrare tutte le opzioni di boot, incluso Windows. Se il problema è risolto, si rimuova {{ic|/boot/grub/device.map-old}}.
 
===Errore "No such device" all'avvio dopo l'installazione===
 
 
Alcuni computer identificano come primo disco il dispositivo removibile usato per l'installazione, causando l'inserimento del relativo UUID in {{ic|/boot/grub/grub.cfg}} che genera il seguente errore al riavvio:
 
 
error: no such device: [UUID inserito nel grub.cfg]
 
 
Per risolvere il problema è necessario avviare il supporto d'installazione e identificare l'UUID corretto:
 
 
$ ls -l /dev/disk/by-uuid
 
 
Una volta trovato, lo si sostiuisca a quello sbagliato nel {{ic|grub.cfg}}. È anche possibile risolvere il problema costringendo GRUB ad identificare i dischi fissi come {{ic|1=root=/dev/xxx}} al posto del classico {{ic|1=root=/dev/disk/by-uuid/xxx}}. Si noti tuttavia che questa opzione non è stata testata e potrebbe richiedere la modifica manuale del {{ic|grub.cfg}}.
 
  
 
===Freeze al boot===
 
===Freeze al boot===
Line 1,307: Line 1,360:
 
===Arch non rilevata da altre distribuzioni===
 
===Arch non rilevata da altre distribuzioni===
  
Alcuni utenti hanno riportato che altre distribuzioni hanno problemi a rilevare Arch Linux automaticamente tramite {{ic|os-prober}}. È possibile mitigare la situazione attraverso la creazione del file {{ic|/etc/lsb-release}}: il file in questione e relativo tool per l'aggiornamento dello stesso sono disponibili nel pacchetto {{Pkg|lsb-release}}, disponibile nei [[Official Repositories (Italiano)|repository ufficiali]].
+
Alcuni utenti hanno riportato che altre distribuzioni hanno problemi a rilevare Arch Linux automaticamente tramite {{ic|os-prober}}. È possibile mitigare la situazione attraverso la creazione del file {{ic|/etc/lsb-release}}: il file in questione e relativo tool per l'aggiornamento dello stesso sono disponibili nel pacchetto {{Pkg|lsb-release}}, disponibile nei [[Official repositories (Italiano)|repository ufficiali]].
  
 
==Riferimenti==
 
==Riferimenti==
Line 1,314: Line 1,367:
 
# Pagina del wiki di GRUB che spiega come compilarlo per sistemi UEFI - http://help.ubuntu.com/community/UEFIBooting
 
# Pagina del wiki di GRUB che spiega come compilarlo per sistemi UEFI - http://help.ubuntu.com/community/UEFIBooting
 
# La pagina di Wikipedia relativa alla [[Wikipedia:BIOS Boot partition|partizione di Boot del BIOS]].
 
# La pagina di Wikipedia relativa alla [[Wikipedia:BIOS Boot partition|partizione di Boot del BIOS]].
 
==Link esterni==
 
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_bios.sh Uno script Bash per compilare ed installare GRUB per BIOS da BZR]
 
# [https://github.com/the-ridikulus-rat/My_Shell_Scripts/blob/master/grub/grub_uefi.sh Uno script Bash per compilare ed installare GRUB per UEFI da BZR]
 

Latest revision as of 11:49, 28 February 2016

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: L'articolo in lingua inglese è in fase di revisione: la versione italiana verrà aggiornata non appena tale revisione sarà terminata. (Discuss in Talk:GRUB (Italiano)#)

GRUB - da non confondere con GRUB Legacy - è la nuova versione del GRand Unified Bootloader. GRUB deriva da PUPA, un progetto di ricerca mirato al miglioramento di GRUB Legacy: esso è stato infatti totalmente riscritto, ripulendo il codice assicurando al tempo stesso una maggior modularità e portabilità. [1]

In sintesi, il bootloader è il primo programma ad essere eseguito quando il computer si avvia. Ha il compito di caricare e trasferire il controllo al Kernel Linux, il quale, di contro, inizializza il resto del sistema operativo.

Contents

Prefazione

  • Il nome GRUB si riferisce ufficialmente alla versione 2 del software (si veda [2]). Se si sta cercando l'articolo relativo alla versione Legacy, si veda GRUB Legacy.
  • E' supportato l'uso del filesystem Btrfs per la root (eliminando quindi la necessità di una partizione /boot separata con un filesystem diverso). Sono inoltre supportati gli algoritmi di compressione zlib o LZO.
  • GRUB non supporta partizioni root formattate in F2FS, perciò sarà necessario creare una partizione /boot separata usando un filesystem supportato.

Note per gli utenti di GRUB Legacy

  • Aggiornare GRUB Legacy a GRUB(2) è un procedimento molto simile ad un installazione ex-novo di GRUB2, argomento trattato qui.
  • Vi sono differenze nei comandi di GRUB e GRUB2. Si consiglia di familiarizzare con i comandi di GRUB2 prima di procedere. (ad esempio, "find" è stato rimpiazzato da "search").
  • GRUB2 è ora modulare e non richiede più lo "stage 1.5". Di conseguenza, il bootloader dispone di capacità limitate e i moduli sono caricati dal disco rigido in caso di necessità (ad esempio, se si necessita del supporto LVM o RAID).
  • La modalità di nomenclatura dei dispositivi è cambiata da GRUB a GRUB2: gli hard disk sono ancora numerati a partire da 0, mentre le partizioni partono da 1 e sono seguite dal nome del sistema di partizionamento usato. Ad esempio, a /dev/sda1 corrisponde (hd0,msdos1) (per sistemi che usano MBR) o (hd0,gpt1) (per sistemi GPT).
  • GRUB occupa molto più spazio rispetto a GRUB Legacy (circa 13Mb di spazio occupato in /boot). Se si effettua il boot da una partizione /boot separata con una dimensione inferiore ai 32 Mb si avranno problemi di spazio e pacman si rifiuterà di installare eventuali nuovi kernel, ad esempio.

Effetuare un backup dei dati importanti

In genere, l'installazione di grub dovrebbe andare a buon fine, ma è consigliabile conservare i files di GRUB-legacy prima di installare grub-bios[broken link: replaced by grub].

mv /boot/grub /boot/grub-legay

Effettuare il backup del MBR che contiene il boot code e la tabella partizioni (Si sostituisca /dev/sdX con l'identificativo del proprio disco):

# dd if=/dev/sdX of=/path/to/backup/mbr_backup bs=512 count=1

Solamente i primi 446 bytes del MBR contengono il boot code, mentre i restanti 64 sono dedicati alla tabella delle partizioni. Se non si desidera sovrascriverla durante un eventuale ripristino, è fortemente consigliato effettuare il backup del solo boot code:

# dd if=/dev/sdX of=/path/to/backup/bootcode_backup bs=446 count=1

Se non si è stati in grado di installare GRUB2 correttamente, si veda #Ripristinare GRUB Legacy

Prerequisiti per GRUB2

Sistemi BIOS

Istruzioni specifiche per GUID Partition Table (GPT)

Su sistemi GPT è necessario creare una partizione di boot BIOS dove GRUB possa inserire il proprio core.img

Nota:
  • Prima di provare questo metodo si tenga presente che non tutti i sistemi supportano questa configurazione. Ulteriori informazioni sulle tabelle partizioni GUID.
  • La partizione in questione è necessaria solo per le combinazioni BIOS/GPT. In precedenza, su schemi di partizionamento BIOS/MBR, GRUB utilizzava il post-MBR gap per inserire il proprio core.img. GRUB per GPT non utilizza tale spazio per rispettare le specifiche GPT sull'allineamento tra le partizioni (1 Mebibyte/2048 settori).
  • Su sistemi UEFI tale partizione non è richiesta in quanto in questo caso non si verifica l'embedding dei settori di boot.

Si crei una partizione da un mebibyte (+1MiB con gdisk) su un disco senza filesystem e le si assegni il tipo ef02 (oppure bios_grub se si utilizza parted). Si noti che la partizione può trovare in qualsiasi posizione entro i primi 2 TiB del disco e deve essere creata prima dell'installazione. Una volta creata la aprtizione, si installi il bootloader seguendo le istruzioni sotto e assicurarsi di specificare l'opzione --target=i386-pc (altrimentri GRUB potrebbe pensare di trovarsi su un sistema EFI-GPT).

È possibile utilizzare il post-MBR gap come partizione di boot BIOS, anche se tale operazione non rispetta le specifiche GPT sull'allineamento delle partizioni. Dal momento che il contenuto di tale partizione non verrà letto spesso è possibile ignorare l'impatto sulle prestazioni, anche se alcune utility per il partizionamento visualizzeranno un messaggio d'avvertimento. In gdisk si crei una nuova partizione che inizia al settore 34 e arriva al 2047, e le si assegni il tipo. Per fare in modo che le partizioni visibili partano dall'inizio, si crei questa partizione per ultima.

Istruzioni specifiche per Master Boot Record (MBR)

Solitamente, il gap dopo il MBR (dopo i 512 byte ad esso dedicati, e prima dell'inizio della prima partizione), è di 31 KiB, quando eventuali problemi di allineamento dei cilindri sono risolti nella tabella partizioni. Tuttavia, è consigliato mantenere un gap di circa 1 MiB per fornire sufficiente spazio al core.img di GRUB. (FS#24103). È consigliabile usare un tool di partizionamento che supporti l'allineamento partizioni di 1 MiB dopo l'MBR per ottenere lo spazio necessario, e risolvere di conseguenza altri problemi, comunque non relativi all'embedding di core.img.

Sistemi UEFI

Nota: Per ulteriori informazioni su GRUB2 UEFI, è consigliabile leggere le pagine UEFI, GPT e UEFI Bootloaders prima di proseguire con questo articolo.
Controllare se si sta utilizzando GPT ed una partizione EFI di sistema

È necessaria una partizione EFI di sistema (ESP) in ogni disco fisso dal quale si desideri effettuare il boot in modalità EFI. GPT non è strettamente necessario, ma ne è raccomandato l'utilizzo, in quanto è l'unico metodo supportato da questo articolo.

Se si sta installando Arch Linux su un PC con supporto EFI dove sia già stato installato un altro sistema operativo, è probabile che si disponga già di una ESP. Si controlli utilizzando parted per stampare la tabella partizioni del disco dal quale si effettua il boot (nell'esempio si utilizzerà /dev/sda):

# parted /dev/sda print

Se si utilizza GPT, il comando dovrebbe riportare Partition Table: GPT. Per EFI, invece, individuare una piccola partizione (512 MiB o meno) con filesystem vfat e il flag boot attivo contenente una cartella chiamata EFI. In caso i criteri di cui sopra vengano soddisfatti, ricordarsi del numero assegnato alla partizione, in quanto sarà necessario per identificare la stessa quando dovrà essere montata per l'installazione di GRUB.

Creazione di una partizione EFI di sistema

Se non si dispone di una ESP, sarà necesario crearla. Si veda Unified Extensible Firmware Interface#EFI System Partition per le istruzioni su come procedere.

Installazione

Nota: Se si sta installando Arch Linux da LiveCD assicurarsi di aver effettuato il chroot nel sistema appena installato prima di installare GRUB: se si utilizzano gli script di installazione contenuti nel LiveCD potrebbe venir generato un grub.cfg errato o potrebbero verificarsi altri problemi che non consentirebbero al sistema di avviarsi.

Sistemi BIOS

E' possibile installare GRUB attraverso il pacchetto grub, il quale sostituirà grub-legacyAUR, se installato.

Nota: La sola installazione del pacchetto non aggiornerà il file /boot/grub/i386-pc/core.img o i moduli di GRUB2 in /boot/grub. È necessario aggiornare il core.img e i moduli manualmente usando grub-install, come spiegato sotto.

Installare i file di boot

Ci sono quattro modi per installare i files di boot di GRUB su sistemi BIOS

Installazione su disco
Nota: Questo metodo tratta l'installazione di GRUB in un disco già partizionato (con MBR o GPT), GRUB installato in /boot/grub e il relativo codice installato nella regione di 440 byte del MBR (non è da confondere con la tabella partizioni MBR). Per l'installazione su dischi partitionless (super-floppy), si faccia riferimento a #Installazione su una partizione o su un disco partitionless.

Per installare grub nella regione di 440 byte relativa al boot code, chiamata anche Master Boot Record, popolare la directory /boot/grub, generare il /boot/grub/i386-pc/core.img e inserirlo nel gap di 31KiB (la dimensione varia a seconda dell'allineamento delle partizioni) post-MBR (o nella partizione di boot del BIOS nel caso di sistemi partizionati con GPT, identificata tramite il flag grub_bios in parted e con il codice EF02 in gdisk) si esegua:

# grub-install --target=i386-pc --recheck --debug /dev/sdx
# grub-mkconfig -o /boot/grub/grub.cfg
Nota: L'opzione --target=i386-pc indica a grub-install di effettuare un'installazione per sistemi BIOS, ed è consigliato specificarla sempre per evitare ambiguità durante l'installazione.

Se si utilizza LVM per la propria partizione di /boot, è possibile installare GRUB su più dischi fissi.

Installazione su chiavetta USB

Si assuma che la prima partizione della propria chiavetta USB sia formattata in FAT32 e che tale partizione sia /dev/sdy1:

#  mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb 
# grub-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub-mkconfig -o /mnt/usb/boot/grub/grub.cfg
# opzionale, backup dei file di configurazione per grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc
#  sync ; umount /mnt/usb
Installazione su una partizione o su un disco partitionless
Nota: GRUB non incoraggia gli utenti ad effettuare l'installazione nel boot sector di una partizione o su un disco partitionless, al contrario di quanto fanno GRUB Legacy o syslinux. Questa opzione non è consigliata nemmeno dagli sviluppatori di Arch Linux.

Per installare GRUB nel boot sector di una partizione o su un disco senza partizioni (es. superfloppy), si esegua (si assume che il dispositivo sia /dev/sdaX e che corrisponda alla partizione di /boot):

# chattr -i /boot/grub/i386-pc/core.img
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX
# chattr +i /boot/grub/i386-pc/core.img
Nota:
  • /dev/sda viene usato a titolo di esempio: sostituirlo con il valore corretto in caso fosse diverso.
  • L'opzione --target=i386-pc indica a grub-install di effettuare un'installazione per sistemi BIOS, ed è consigliato specificarla sempre per evitare ambiguità durante l'installazione.

Sarà necessaria l'opzione --force per consentire l'uso delle blocklists, mentre non si dovrà usare --grub-setup=/bin/true, che equivale a generare il solo core.img.

Si riceveranno dei messaggi d'avvertimento che servono a spiegare i rischi di questo approccio:

/sbin/grub-setup: warn: Attempting to install GRUB to a partitionless disk or to a partition.  This is a BAD idea.
/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists. 
However, blocklists are UNRELIABLE and their use is discouraged.

Senza l'opzione --force, si riceverà il esguente errore e grub-setup non installerà il proprio codice nel MBR.

/sbin/grub-setup: error: will not proceed with blocklists

Specificando --force, invece, si dovrebbe ottenere:

Installation finished. No error reported.

grub-setup non effettua automaticamente questa operazione in caso di installazione del boot loader su una partizione, oppure su un disco partitionless, poichè lo stesso fa affidamento sulle embedded blocklists nel settore di boot della partizione per individuare il /boot/grub/i386-pc/core.img e il percorso della directory /boot/grub. I settori contenenti i files sopra menzionati potrebbero cambiare in caso di alterazione della partizione (in caso di copia o eliminazione di files, eccetera). Per ulteriori informazioni si veda https://bugzilla.redhat.com/show_bug.cgi?id=728742.

La soluzione proposta è quella di impostare il flag immutable al /boot/grub/i386-pc/core.img, in modo che la posizione del core.img sul disco non venga alterata. Tale flag deve essere impostata solo se grub viene installato su una partizione o su un disco partitionless, e NON in caso di semplice installazione nel MBR o di generazione del core.img.

Sfortunatamente il grub.cfg generato non contiene gli UUID corretti, anche se non viene visualizzato nessun messaggio di errore (si veda https://bbs.archlinux.org/viewtopic.php?pid=1294604#p1294604)

Per risolvere il problema si esegua:

# mount /dev/sdxY /mnt        # Partizione root
# mount /dev/sdxZ /mnt/boot  # Partizione /boot (se in uso)
# arch-chroot /mnt
# pacman -S linux
# grub-mkconfig -o /boot/grub/grub.cfg
Generazione del solo core.img

Per popolare la directory /boot/grub e generare un /boot/grub/i386-pc/core.img SENZA installare GRUB nel MBR, si aggiunga --grub-setup=/bin/true a grub-install:

# modprobe dm-mod
# grub-install --target=i386-pc --grub-setup=/bin/true --recheck --debug /dev/sda
Nota:
  • /dev/sda viene usato a titolo di esempio: sostituirlo con il valore corretto in caso fosse diverso.
  • L'opzione --target=i386-pc indica a grub-install di effettuare un'installazione per sistemi BIOS, ed è consigliato specificarla sempre per evitare ambiguità durante l'installazione.

Sarà quindi possibile effettuare il chainload del core.img di GRUB da GRUB Legacy o da syslinux come fosse un kernel Linux o un kernel multiboot.

Sistemi UEFI

Nota: I firmware UEFI non sono implementati in modo consistente tra i vari produttori di hardware. Gli esempi proposti di seguito sono pensati per funzionare con il maggior numero possibile di sistemi UEFI. Se si dovessero riscontrare problemi nonostante si siano seguiti i passaggi è consigliabile raccogliere informazioni dettagliate sulla propria configurazione hardware, specialmente quando si riesce a risolvere il problema. A questo scopo, è stata creata una pagina con esempi per GRUB EFI.

Si installino i pacchetti grub, dosfstools (per la manipolazione di partizioni UEFI dopo l'installazione) ed efibootmgr (per la creazione di file .efi avviabili, utilizzati dallo script di installazione di GRUB).

La semplice installazione del pacchetto non aggiornerà il file core.efi e il moduli di GRUB nella partizione UEFI. Sarà necessario aggiornarli manualmente usando lo script di installazione di GRUB, come spiegato sotto.

Metodo di installazione consigliato

Nota: I comandi seguenti assumono che si stia installando GRUB su sistemi a 64 bit. (x86_64-efi) Per sistemi i686 si sostituisca ogni occorrenza di x86_64-efi con i386-efi. Sarà inoltre necessario assicurarsi che il supporto di installazione sia stato avviato in modalità UEFI e non Legacy, altrimente l'installazione potrebbe non andare a buon fine.

Assicurarsi che la partizione UEFI sia stata montata (ad esempio creata come /boot o /boot/efi). GRUB non pone limitazioni sul punto di mount della partizione, perciò si è liberi di scegliere quello che si preferisce. Una volta montata la partizione, si esegua il comando di cui sotto per installare l'applicazione UEFI di GRUB in $esp/EFI/grub, installarne i moduli in /boot/grub/x86_64-efi e copiare l'immagine avviabile grubx64.efi in $esp/EFI/arch_grub:

# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=arch_grub --recheck --debug
Nota:
  • Se si riscontrano problemi nell'utilizzo di grub-install e lo script ci consiglia di caricare il modulo efivars, si provi con Unified Extensible Firmware Interface#Switch_to_efivarfs
  • Se si sta installando GRUB in un ambiente chroot su un sistema che utilizza LVM è possibile che vengano visualizzati messaggi simili a questo: /run/lvm/lvmetad.socket: connect failed: No such file or directory o WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning..

Questi messaggi sono causati dalla mancanza della directory /run nell'ambiente di chroot ma non pregiudicano l'avvio del sistema, percui è possibile proseguire tranquillamente con l'installazione.

  • Se non vengono specificate le opzioni --target o --directory, grub-install non riuscirà a determinare il tipo di firmware sul quale GRUB verrà installato, mostrando perciò il seguente messaggio d'errore: source_dir doesn't exist. Please specify --target or --directory.
  • Le opzioni --efi-directory e --botloader-id sono specifiche di GRUB UEFI. --efi-directory indica il punto di mount della partizione EFI di sistema e sostituisce la vecchia opzione --root-directory, deprecata. --bootloader-id contiene il percorso alla directory che ospita il file grubx64.efi.
  • Si noti l'assenza di un riferimento a qualsivoglia disco rigido (es. /dev/sda) durante l'esecuzione di grub-install, a differenza di quanto avviene per sistemi BIOS. Eventuali riferimenti a dischi rigidi saranno ignorati dallo script di installazione, in quanto i bootloader UEFI non utilizzano MBR o i boot sector delle partizioni.

A questo punto, GRUB è stato installato. Non dimenticarsi di generare il file di configurazione principale.

Workaround per alcuni firmware UEFI

Alcuni firmare UEFI richiedono che il file .efi avviabile abbia un nome ben definito e si trovi in una posizione specifica: $esp/EFI/boot/bootx64.efi (dove $esp corrisponde al punto di mount della partizione UEFI). In caso non si rispettino queste regole il sistema non riuscirà ad avviarsi. Si noti che questi accorgimenti non creano problemi con altri firmware, e sono pertanto da considerarsi come il metodo di installazione ufficiale.

Creare la cartella richiesta, quindi copiare il file .efi di GRUB rinominandolo nel modo corretto:

# mkdir $esp/EFI/boot
# cp $esp/EFI/arch_grub/grubx64.efi  $esp/EFI/boot/bootx64.efi
Metodo alternativo

Generalmente, GRUB posiziona i propri files, compresi quelli di configurazione, in /boot, a prescindere dal punto di mount della partizione EFI di sistema.

Se si desidera memorizzare tali file nella partizione EFI di sistema, si aggiunga --boot-directory=$esp al comando grub-install:

# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=grub --boot-directory=$esp --recheck --debug

Quanto sopra include tutti i files di GRUB in $esp/grub, invece di utilizzare /boot/grub. Quando si utilizza questo metodo, assicurarsi che grub-mkconfig generi il file di configurazione nella posizione corretta:

# grub-mkconfig -o $esp/grub/grub.cfg

Il resto della configurazione è identica.

Creare una voce per GRUB nel Firmware Boot Manager

Lo script grub-install cerca di creare automaticamente una voce di menù nel boot manager. Se ciò non dovesse avvenire, si consulti UEFI#efibootmgr per istruzioni su come utilizzare efibootmgr per creare una voce.

In ogni caso, il problema è solitamente relativo al mancato avvio dell'immagine di installazione in modalità UEFI, come descritto in Unified Extensible Firmware Interface#Creare un dispositivo USB avviabile con UEFI dalla ISO.

GRUB Standalone

È possibile creare una applicazione EFI standalone (grubx64_standalone.efi) che comprende tutti i moduli necessari in un archivio tar al suo interno, eliminando di fatto, la necessità di avere una directory separata contenente tutti i moduli UEFI di GRUB ed altri files ad essi relativi. Per raggiungere l'obiettivo, verrà utilizzato il comando grub-mkstandalone, incluso in grub:

# echo 'configfile ${cmdpath}/grub.cfg' > /tmp/grub.cfg                                ## utilizzare apici singoli, ${cmdpath}/grub.cfg dovrebbe essere lasciato così com'è
# grub-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi --modules="part_gpt part_msdos" --fonts="unicode" --locales="en@quot" --themes="" -o "$esp/EFI/grub/grubx64_standalone.efi"  "boot/grub/grub.cfg=/tmp/grub.cfg" -v

Si copi quindi il file di configurazione di GRUB in $esp/EFI/grub/grub.cfg e si crei una voce nell'UEFI Boot Manager per il file $esp/EFI/grub/grubx64_standalone.efi utilizzando efibootmgr.

Nota: L'opzione --modules="part_gpt part_msdos" (doppi apici compresi) è necessaria affinchè ${cmdpath} funzioni correttamente.
Attenzione: Potrebbe capitare che il file grub.cfg non venga caricato a causa della mancanza dello slash finale da ${cmdpath} (es. (hd1,msdos2)EFI/Boot invece di (hd1,msdos2)/EFI/Boot), e si venga lasciati nella shell di GRUB. Se si ha questo problema si verifichi il contenuto della variabile ${cmdpath} (echo ${cmdpath} ) e si proceda al caricamento manuale del file di configurazione (es. configfile (hd1,msdos2)/EFI/Boot/grub.cfg).
GRUB Standalone - Informazioni tecniche

L'applicazione EFI di GRUB assume che il relativo file di configurazione si trovi in ${prefix}/grub.cfg. Tuttavia, nel file dell'applicazione Standalone, ${prefix} è contenuto all'interno di un archivio tar dentro al suddetto file (identificato nell'ambiente GRUB come "(memdisk)", senza doppi apici). L'archivio contiene tutti i files che normalmente si troverebbero sotto /boot/grub nel caso di un'installazione di GRUB EFI classica.

A causa dell'embedding del contenuto di /boot/grub nell'immagine standalone, essa è completamente indipendente dal contenuto di una directory /boot/grub esterna. Ne consegue che per l'immagine EFI Standalone ${prefix}==(memdisk)/boot/grub, quindi il file di configurazione dovrà trovarsi in ${prefix}/grub.cfg==(memdisk)/boot/grub/grub.cfg.

Per fare in modo che l'immagine EFI Standalone legga un grub.cfg esterno posizionato nella stessa directory dell'immagine (identificata nell'ambiente GRUB come ${cmdpath} , verrà creato un file /tmp/grub.cfg che costringe grub ad utilizzare ${cmdpath}/grub.cfg come file di configurazione (il comando che esegue questa operazione è configfile ${cmdpath}/grub.cfg, contenuto in (memdisk)/boot/grub/grub.cfg). Infine, si indica a grub-mkstandalone di copiare il file /tmp/grub.cfg in ${prefix}/grub.cfg (ovvero (memdisk)/boot/grub/grub.cfg) utilizzando l'opzione "/boot/grub/grub.cfg=/tmp/grub.cfg".

Così facendo, l'immagine Efi Standalone e il relativo grub.cfg possono essere memorizzati in qualsiasi directory della partizione EFI di sistema (a patto che i due file si trovino nella stessa directory), rendendoli di fatto portabili.

Generazione del file di configurazione principale

Dopo l'installazione sarà necessario generare il file di configurazione principale grub.cfg. Il processo di creazione del suddetto file può essere influenzato dalle opzioni contenute in /etc/default/grub e dagli script in /etc/grub.d. È possibile reperire ulteriori informazioni leggendo i paragrafi #Configurazione di base o #Configurazione avanzata.

Nota: Si ricordi che sarà necessario rigenerare il file grub.cfg dopo ogni cambiamento ad /etc/default/grub o ai files in /etc/grub.d/*.

Utilizzare il tool grub-mkconfig per generare il grub.cfg:

# grub-mkconfig -o /boot/grub/grub.cfg
Nota:
  • Il percorso al file di configurazione è /boot/grub/grub.cfg, e NON /boot/grub/i386-pc/grub.cfg.
  • Se si sta cercando di effettuare questa operazione da dentro un ambiente di chroot o da un container systemd-nspawn, è possibile che grub-probe mostri un errore relativo all'impossibilità di ottenere il path di /dev/sdaX. In questo caso si provi ad utilizzare arch-chroot come spiegato in questo thread.
  • Quando si genera il file di configurazione di GRUB su un sistema LVM dall'interno di un ambiente di chroot (anche arch-chroot, utilizzato durante l'installazione), è possibile che vengano visualizzati messaggi come /run/lvm/lvmetad.socket: connect failed: No such file or directory o WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.. Ciò è dovuto alla mancanza di /run nell'ambiente di chroot. Tali messaggi non impediranno al sistema di avviarsi, a patto che tutti i passaggi siano stati completati correttamente, quindi è possibile procedere con l'installazione.

Di default, lo script di generazione aggiunge automaticamente le voci di menù per Arch Linux a qualsiasi configurazione venga generata, mentre ciò non accade per eventuali voci relative ad altri sistemi operativi. Su sistemi BIOS, si installi il pacchetto os-prober, che individua i sistemi operativi installati sulla macchina e li aggiunge al grub.cfg durante l'esecuzione di grub-mkconfig. Si veda #Dual-booting per eventuali configurazioni avanzate.

Conversione del file di configurazione di GRUB Legacy al nuovo formato

Se grub-mkconfig non funziona, si converta il proprio /boot/grub/menu.lst nel /boot/grub/grub.cfg eseguendo:

# grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg
Nota: Questa operazione funziona solamente su sistemi BIOS.

Ad esempio:

/boot/grub/menu.lst
default=0
timeout=5

title  Arch Linux Stock Kernel
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda2 ro
initrd /initramfs-linux.img

title  Arch Linux Stock Kernel Fallback
root   (hd0,0)
kernel /vmlinuz-linux root=/dev/sda2 ro
initrd /initramfs-linux-fallback.img
/boot/grub/grub.cfg
set default='0'; if [ x"$default" = xsaved ]; then load_env; set default="$saved_entry"; fi
set timeout=5

menuentry 'Arch Linux Stock Kernel' {
  set root='(hd0,1)'; set legacy_hdbias='0'
  legacy_kernel   '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'
  legacy_initrd '/initramfs-linux.img' '/initramfs-linux.img'
}

menuentry 'Arch Linux Stock Kernel Fallback' {
  set root='(hd0,1)'; set legacy_hdbias='0'
  legacy_kernel   '/vmlinuz-linux' '/vmlinuz-linux' 'root=/dev/sda2' 'ro'
  legacy_initrd '/initramfs-linux-fallback.img' '/initramfs-linux-fallback.img'
}

Se si è riavviato il sistema dimenticandosi di creare il /boot/grub/grub.cfg, si eseguano questi comandi nella shell di GRUB che apparirà al riavvio:

sh:grub> insmod legacycfg
sh:grub> legacy_configfile ${prefix}/menu.lst

Procedere quindi all'avvio di Arch Linux e si generi il file /boot/grub/grub.cfg.

Configurazione di base

Questa sezione copre le sole modifiche al file /etc/default/grub. Si veda #Configurazione avanzata per ulteriori approfondimenti.

Nota: Ricordarsi di rigenerare il file di configurazione principale dopo qualsiasi cambiamento ad /etc/default/grub.

Argomenti aggiuntivi

Se si ha la necessità di passare dei parametri particolari all'immagine del kernel, è necessario inserirli nelle variabili GRUB_CMDLINE_LINUX e GRUB_CMDLINE_LINUX_DEFAULT contenute nel file /etc/default/grub. I valori delle due variabili vengono inseriti uno di seguito all'altro per le voci di avvio standard. Per quanto riguarda la generazione delle voci di avvio di ripristino, viene utilizzato solamente GRUB_CMDLINE_LINUX.

Non è necessario utilizzarli entrambi, ma può risultare utile: ad esempio, è possibile abilitare il resume dopo l'ibernazione tramite GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sdaX quiet" dove sdaX indica la propria partizione di swap.

In questo modo verrebbe generata una voce di ripristino senza il supporto al resume e senza il parametro quiet che elimina i messaggi del kernel durante il boot. Di contro, la voce d'avvio standard mantiene i parametri di cui sopra.

Per generare la voce di ripristino è necessario commentare l'opzione GRUB_DISABLE_RECOVERY=true in /etc/default/grub.

E' anche possibile utilizzare GRUB_CMDLINE_LINUX="resume=/dev/disk/by-uuid/${swap_uuid}", dove ${swap_uuid} si riferisce all'uuid della propria partizione di swap.

Si veda Kernel parameters per ulteriori informazioni.

Configurazione dell'aspetto

In GRUB è possibile cambiare l'aspetto del menu. Ci si assicuri di aver inizializzato il terminale grafico di GRUB (gfxterm), usando una modalità video appropriata (gfxmode). Ulteriori informazioni sono reperibili nella sezione #Correggere l'errore di GRUB "no suitable mode found". La modalità video impostata di seguito, verrà passata al kernel via gfxpayload; di conseguenza, questa sarà richiesta affinchè ogni configurazione dell'aspetto abbia effetto.

Impostare la risoluzione del framebuffer

GRUB può impostare il framebuffer sia per sé stesso che per il kernel. Il vecchio parametro vga= è deprecato. Il metodo consigliato è modificare /etc/default/grub come segue:

GRUB_GFXMODE=1024x768x32
GRUB_GFXPAYLOAD_LINUX=keep

È possibile specificare diverse risoluzioni, incluso il valore di default auto. È quindi consigliabile che la variabile GRUB_GFXMODE abbia un valore simile a GRUB_GFXMODE=<risoluzione desiderata>,<fallback, ad esempio 1024x768>,auto. Per ulteriori informazioni, consultare la documentazione di GRUB relativa a gfxmode. L'opzione gfxpayload farà si che il kernel mantenga la risoluzione.

Nota: È possibile utilizzare solamente le risoluzioni che la scheda grafica supporta tramite le estensioni VESA BIOS. Per ottenere un elenco delle risoluzioni supportate, si installi hwinfo e si esegua hwinfo --framebuffer come utente root. In alternativa, si entri nella riga di comando di GRUB e si esegua vbeinfo.

Se quanto sopra non funziona, è possibile utilizzare il vecchio parametro vga=. Lo si aggiunga semplicemente alla variabile "GRUB_CMDLINE_LINUX_DEFAULT=" in /etc/default/grub: ad esempio: "GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792" imposterà una risoluzione di 1024x768.

Hack 915resolution

Se si stanno utilizzando schede grafiche Intel, può accadere che nè # hwinfo --framebuffervbeinfo mostrino la risoluzione desiderata. In questo caso, è possibile utilizzare l'hack proposto, che modificherà temporaneamente il BIOS della scheda video aggiungendo la risoluzione richiesta. Si veda la home page di 915resolution.

Innanzitutto è necessario scegliere una modalità video da modificare più tardi. Si avvii quindi 915resolution nella shell di GRUB:

sh:grub> 915resolution -l
Intel 800/900 Series VBIOS Hack : version 0.5.3
[...]
Mode 30 : 640x480, 8 bits/pixel
[...]

L'obiettivo è quello di sovrascrivere la modalità 30 con la risoluzione 1440x900:

/etc/grub/00_header
[...]
915resolution 30 1440 900 # linea aggiunta
set gfxmode=${GRUB_GFXMODE}
[...]

Sarà ora necessario impostare il valore di GRUB_GFXMODE, come spiegato in precedenza e rigenerare il file di configurazione di GRUB:

# grub-mkconfig -o /boot/grub/grub.cfg
# reboot

Immagine di sfondo e caratteri bitmap

GRUB supporta le immagini di sfondo e i caratteri bitmap nel formato pf2. Il font unifont è incluso nel pacchetto grub con nome unicode.pf2 oppure, in soli caratteri ASCII con nome ascii.pf2.

I formati di immagine supportati includono tga, png e jpeg, a patto che i rispettivi moduli siano caricati. La risoluzione massima applicabile dipende dall'hardware in uso.

Prima di procedere, seguire quanto indicato in #Impostare la risoluzione del framebuffer.

Si modifichi quindi il file /etc/default/grub come segue:

GRUB_BACKGROUND="/boot/grub/miaimmagine"
#GRUB_THEME="/path/to/gfxtheme"
GRUB_FONT="/path/to/font.pf2"
Nota: Se si è installato GRUB in una partizione separata, /boot/grub/miaimmagine diventa /grub/miaimmagine.

Per applicare le modifiche al grub.cfg, si esegua:

grub-mkconfig -o /boot/grub/grub.cfg

Se l'inserimento dell'immagine è avvenuto con successo, dovrebbe essere visualizzato il messaggio Found background image..., durante l'esecuzione del precedente comando. Se questo non accade, significa che l'immagine non è stata incorporata nel grub.cfg.

In tal caso, si controlli che:

  • il percorso e il nome dell'immagine in /etc/default/grub siano corretti
  • l'immagine abbia dimensioni e formato adeguati (tga, png, png a 8 bit)
  • l'immagine sia stata salvata in modalità RGB e non sia indicizzata
  • la modalità console non sia stata abilitata in /etc/default/grub
  • il comando grub-mkconfig sia stato eseguito per inserire le informazioni relative allo sfondo nell file /boot/grub/grub.cfg.

Temi

Di seguito viene proposto un esempio per la configurazione di GRUB con il tema Starfield, incluso nel pacchetto fornito con Arch.

Si modifichi /etc/default/grub:

GRUB_THEME="/usr/share/grub/themes/starfield/theme.txt"

Si applichino le modifiche:

grub-mkconfig -o /boot/grub/grub.cfg

Se il tema è stato applicato correttamente, apparirà a video il messaggio Found theme: /usr/share/grub/themes/starfield/theme.txt.

Colori del Menù

In GRUB è possibile cambiare i colori del menù. L'elenco dei colori disponibili è reperibile qui. Di seguito, un esempio:

Si modifichi /etc/default/grub come segue:

GRUB_COLOR_NORMAL="light-blue/black"
GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

Per rendere effettivi i cambiamenti si esegua:

grub-mkconfig -o /boot/grub/grub.cfg

Menù nascosto

Una delle caratteristiche proprie di GRUB è la possibilità di nascondere il menù e renderlo visibile attraverso la pressione del tasto Esc, se necessario. È anche possibile decidere se visualizzare o meno il countdown.

Si modifichi /etc/default/grub. Nell'esempio che segue, il countdown è stato impostato a 5 secondi e reso visibile all'utente:

GRUB_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT=5
GRUB_HIDDEN_TIMEOUT_QUIET=false

La variabile GRUB_HIDDEN_TIMEOUT specifica quanti secondi aspettare prima di mostrare il menu. Sarà necessario impostare GRUB_TIMEOUT=0 se lo si vuole nascondere.

Si esegua:

# grub-mkconfig -o /boot/grub/grub.cfg

Disabilitare il framebuffer

Se si usano i driver proprietari NVIDIA, potrebbe essere necessario disabilitare il framebuffer di GRUB, poichè potrebbe interferire con il driver.

Per disabilitarlo, si modifichi /etc/default/grub decommentando la seguente linea:

GRUB_TERMINAL_OUTPUT=console

Si esegua poi:

grub-mkconfig -o /boot/grub/grub.cfg

Se si vuole comunque avviare GRUB in framebuffer è possibile tornare in modalità testuale prima dell'avvio del kernel. A tal proposito si modifichi la relativa variabile in /etc/default/grub:

GRUB_GFXPAYLOAD_LINUX=text

Si rigeneri quindi il file di configurazione come visto sopra.

Nomenclatura permanente dei dispositivi a blocchi

Un modo per identificare con una nomenclatura persistente i dispositivi a blocchi è quello di utilizzare degli UUID univoci per le partizioni, invece dei vecchi valori /dev/sd*. I vantaggi sono spiegati nel link fornito sopra.

GRUB utilizza di default gli UUID dei filesystems per identificare in modo permanente i dispositivi a blocchi.

Nota: È necessario rigenerare il file /boot/grub/grub.cfg affinchè vengano aggiornati gli UUID ogni volta che una partizione viene ridimensionata o formattata. Si tenga a mente questo particolare ogni volta che si modificano le partizioni con un LiveCD.

L'uso degli UUID è controllato da un'opzione in /etc/default/grub:

# GRUB_DISABLE_LINUX_UUID=true

In ogni caso, ci si ricordi di applicare i cambiamenti:

# grub-mkconfig -o /boot/grub/grub.cfg

Richiamare l'ultimo sistema avviato

GRUB è in grado di ricordarsi l'ultimo sistema avviato ed usarlo come default la prossima volta che si eseguirà il boot. Questa funzionalità è utile se si dispone di kernel multipli (ad esempio il kernel corrente di Arch e il LTS come fallback) o più sistemi operativi. Si modifichi /etc/default/grub e si cambi il valore di GRUB_DEFAULT:

GRUB_DEFAULT=saved

Ciò consentirà a GRUB di avviare il sistema operativo salvato. Per abilibare il salvataggio, si aggiunga la linea seguente ad /etc/default/grub:

GRUB_SAVEDEFAULT=true
Nota: Le voci di menù aggiunte manualmente in /etc/grub.d/40_custom o /boot/grub/custom.cfg (ad esempio Windows), richiederanno l'opzione savedefault.

Ci si ricordi di rigenerare il file di configurazione di GRUB.

Cambiare la voce di menu predefinita

Per cambiare la voce selezionata in modo predefinito, si modifichi la variabile GRUB_DEFAULT in /etc/default/grub:

Utilizzando numeri progressivi:

GRUB_DEFAULT=0

GRUB enumera le voci che appaiono nel menu partendo da zero, il che significa che 0 selezionerà la prima voce, 1 la seconda e così via.

Oppure utilizzando i titoli delle voci:

GRUB_DEFAULT='Arch Linux, with Linux core repo kernel'
Nota: Ricordarsi di rigenerare il file di configurazione di GRUB.

Disabilitare il sottomenu

Se si hanno più kernel installati (ad esempio linux e linux-lts), grub-mkconfig li raggrupperà in un sottomenù.

Se non si desidera utilizzare questa funzionalità si aggiunga la seguente linea al file /etc/default/grub:

GRUB_DISABLE_SUBMENU=y

Cifratura della partizione root

Per far sì che GRUB passi automaticamente al kernel i parametri necessari per la cifratura della root, si aggiunga cryptdevice=/dev/device:etichetta a GRUB_CMDLINE_LINUX in /etc/default/grub.

Si veda inoltre Dm-crypt/System configuration#Boot loader per ulteriori informazioni.

Suggerimento: Se si sta effettuando l'aggiornamento da GRUB Legacy, si controlli il file /boot/grub/menu.lst.pacsave per l'identificativo dispositivo o l'etichetta corretta da inserire. Si cerchi dopo la riga kernel /vmlinuz-linux.

Un esempio con la root mappata su /dev/mapper/root:

GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:root"


Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: Il passaggio che segue è stato aggiunto qui: The following step was added with [3], ma non è chiara la ragione per la quale sia necessario disabilitare l'utilizzo degli UUID per il filesystem root. (Discuss in Talk:GRUB (Italiano)#)

Se si riscontrano problemi nell'effettuare il boot con dm-crypt su sistemi UEFI-GPT Si disabiliti l'uso degli UUID per il file system di root:

GRUB_DISABLE_LINUX_UUID=true

Ed assicurarsi di non utilizzare riferimenti agli UUID (ad esempio, utilizzare /dev/sdb3 al posto di /dev/disk/by-uuid/42d934c7-6199-4f11-9e01-807530111df6 o UUID=42d934c7-6199-4f11-9e01-807530111df6).

Rigenerare quindi il file di configurazione di GRUB.

Effettuare il boot di una voce non default per una sola volta

Il comando grub-reboot è molto utile per avviare una voce diversa da quella di default. GRUB caricherà la voce specificata come primo argomento del comando e il sistema operativo corrispondente verrà avviato al prossimo avvio. Si noti che GRUB effettuerà il boot della scelta di default per tutti i riavvii successivi a quello effettuato subito dopo l'esecuzione del comando. Non è necessario modificare il file di configurazione di GRUB o scegliere una voce nel menù di avvio.

Nota: Quanto sopra richiede l'opzione GRUB_DEFAULT=saved in /etc/default/grub (e successiva rigenerazione del grub.cfg) o, in caso di un grub.cfg scritto manualmente, la linea set default="${saved_entry}".

Configurazione avanzata

Questa sezione si occupa delle modifiche manuali al grub.cfg, della scrittura di script personalizzati in /etc/grub.d e di altre impostazioni avanzate.

Creazione manuale del grub.cfg

Attenzione: La modifica manuale di questo file è fortemente sconsigliata. Il grub.cfg è generato dal comando grub-mkconfig, ed è preferibile modificare il file /etc/default/grub o uno degli script contenuti nella cartella /etc/grub.d.

Un grub.cfg di base contiene le seguenti opzioni:

  • (hdX,Y) indica la partizione Y sul disco X. La numerazione delle partizioni parte da 1, mentre quella dei dischi da 0
  • set default=N permette di scegliere quale entry avviare in modo predefinito
  • set timeout=N indica il limite di tempo in secondi prima che la scelta predefinita venga avviata
  • menuentry "title" {opzioni} è un'entry di nome title
  • set root=(hdX,Y) imposta la partizione di boot, ossia quella contenente il kernel e i moduli di GRUB (non è necessario disporre di una partizione separata: /boot può essere contenuta all'interno della partizione di root).

Una configurazione d'esempio:

/boot/grub/grub.cfg
# Config file for GRUB - The GNU GRand Unified Bootloader
# /boot/grub/grub.cfg

# DEVICE NAME CONVERSIONS
#
#  Linux           Grub
# -------------------------
#  /dev/fd0        (fd0)
#  /dev/sda        (hd0)
#  /dev/sdb2       (hd1,2)
#  /dev/sda3       (hd0,3)
#

# Timeout for menu
set timeout=5

# Set default boot entry as Entry 0
set default=0

# (0) Arch Linux
menuentry "Arch Linux" {
set root=(hd0,1)
linux /vmlinuz-linux root=/dev/sda3 ro
initrd /initramfs-linux.img
}

## (1) Windows
#menuentry "Windows" {
#set root=(hd0,3)
#chainloader +1
#}

Dual-booting

Suggerimento: Se si desidera che GRUB ricerchi automaticamente i sistemi operativi installati, è necessario installare os-prober.

Generazione automatica utilizzando il file /etc/grub.d/40_custom e grub-mkconfig

Il modo migliore per aggiungere altre voci è modificare il file /etc/grub.d/40_custom oppure /boot/grub/custom.cfg, in modo che esse vengano automaticamente aggiunte al grub.cfg quando si lancia grub-mkconfig. Dopo aver effettuato le modifiche, si esegua:

# grub-mkconfig -o /boot/grub/grub.cfg

Oppure, per sistemi UEFI-GPT (come descritto nel metodo alternativo):

# grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg

Per generare un grub.cfg aggiornato.

Un file /etc/grub.d/40_custom generico potrebbe avere una struttura simile a quello postato sotto, creato per un HP Pavilion 15-e056sl notebook con Windows 8 preinstallato. Ogni voce menuentry dovrebbe mantenere una struttura simile a quanto segue.

Si noti inoltre che la partizione /dev/sda2 viene identificata da GRUB come hd0,gpt2 e ahci0,gpt2. Si consulti GRUB#Voce di menù per Windows installato in modalità UEFI-GPT per ulteriori informazioni.

/etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "HP / Microsoft Windows 8" {
	echo "Sto avviando HP / Microsoft Windows 8..."
	insmod part_gpt
	insmod fat
	insmod search_fs_uuid
	insmod chain
	search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 763A-9CB6
	chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Centro di controllo HP / Microsoft" {
	echo "Sto avviando Centro di controllo HP / Microsoft..."
	insmod part_gpt
	insmod fat
	insmod search_fs_uuid
	insmod chain
	search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 763A-9CB6
	chainloader (${root})/EFI/HP/boot/bootmgfw.efi
}

menuentry "Spegnimento del computer" {
	echo "Sto spegnendo il computer..."
	halt
}

menuentry "Riavvio del computer" {
	echo "Sto riavvinado il computer..."
	reboot
}
Voce di menù per GNU/Linux

Se l'altra distro è in /dev/sda2:

menuentry "Other Linux" {
	set root=(hd0,2)
	linux /boot/vmlinuz (si aggiungano altre opzioni da passare al kernel, se richieste)
	initrd /boot/initrd.img (se il kernel lo richiede)
}
Voce di menù per FreeBSD

Richiede che FreeBSD sia installato su una singola partizione formattata come UFS. Se FreeBSD risiede su sda4:

menuentry "FreeBSD" {
	set root=(hd0,4)
	chainloader +1
}
Voce di menù per Windows XP

Se windows è installato in /dev/sda3:

Nota: Si ricordi che è necessario puntare i comandi set root e chainloader alla partizione riservata di sistema, ossia quella che crea Windows durante l'installazione, e non alla partizione sulla quale risiede effettivamente Windows. L'esempio trattato sotto funziona se la vostra partizione riservata è sda3.
menuentry "Windows XP" {
	set root="(hd0,3)"
	chainloader +1
}

Se il bootloader di Windows è su un disco rigido differente da quello di GRUB, potrebbe essere necessario ingannare Windows per fargli credere di risiedere nel primo drive. Ciò era possibile utilizzando drivemap. Assumendo che GRUB si trovi su hd0 e Windows su hd2, sarà necessario aggiungere la seguente riga dopo set root:

drivemap -s hd0 hd2
Voce di menù per Windows installato in modalità UEFI-GPT
Nota: Questa voce funzionerà solo se il sistema viene avviato in modalità UEFI e solo se la "bitness" di Windows corrisponde a quella di UEFI. Si noti che tale voce NON funzionerà su GRUB per sistemi BIOS. A tal proposito si legga qui e qui per ulteriori informazioni.
if [ "${grub_platform}" == "efi" ]; then
	menuentry "Microsoft Windows Vista/7/8/8.1 x86_64 UEFI-GPT" {
		insmod part_gpt
		insmod fat
		insmod search_fs_uuid
		insmod chain
		search --fs-uuid --set=root $hints_string $fs_uuid
		chainloader /EFI/Microsoft/Boot/bootmgfw.efi
	}
fi

Il valore delle variabili $hints_string e $fs_uuid si ottiene con i seguenti comandi: Per $fs_uuid:

# grub-probe --target=fs_uuid $esp/EFI/Microsoft/Boot/bootmgfw.efi
1ce5-7f28

Per $hints_string:

# grub-probe --target=hints_string $esp/EFI/Microsoft/Boot/bootmgfw.efi
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

I due comandi di cui sopra assumono che la ESP di Windows sia montata in $esp. Si noti che potrebbero esserci differenze tra lettere maiuscole e minuscole nel percorso che identifica la posizione del file EFI di Windows.

Voce di menù per lo spegnimento del sistema
menuentry "System shutdown" {
	echo "System shutting down..."
	halt
}
Voce di menù per il riavvio del sistema
menuentry "System restart" {
	echo "System rebooting..."
	reboot
}
Windows installato in modalità BIOS-MBR

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements.Tango-edit-clear.png

Reason: Sezione non affine al contenuto delle altre; dovrebbe inoltre essere accorciata. (Discuss in Talk:GRUB (Italiano)#)
Nota: GRUB supporta l'avvio diretto di bootmgr e il chainload del settore di boot non è più richiesto per avviare Windows su configurazioni BIOS-MBR.
Attenzione: Si noti che bootmgr è contenuto nella partizione di sistema, non in quella principale che ospita i file di sistema di Windows (C:). Quando si elencano tutti gli UUIDs con blkid la partizione viene evidenziata come LABEL="SYSTEM RESERVED" o LABEL="SYSTEM" ed ha una dimensione che varia dai 100 ai 200 MB, similmente alla partizione di boot di Arch. Si consulti wikipedia:System_partition_and_boot_partition per ulteriori informazioni.

Per tutto il resto della sezione, si assumerà che la propria partizione di Windows sia /dev/sda1. Partizioni differenti varieranno di conseguenza anche il valore di hd0,msdos1. Si individui l'UUID della partizione di sistema di windows, dove bootmgr e i suoi files risiedono. Per esempio, se bootmgr si trova in /media/SYSTEM_RESERVED/bootmgr:

Per Windows Vista/7/8/8.1:

# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr
69B235F6749E84CE
# grub-probe --target=hints_string /media/SYSTEM_RESERVED/bootmgr
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
Nota: Se si utilizza Windows XP, si sostituisca bootmgr con ntldr nei comandi di cui sopra. Si noti inoltre che potrebbe non essere presente una partizione di sistema separata: si effettui la ricerca del file NTLDR sulla partizione principale di Windows.

Si aggiunga quindi il codice sotto riportato al file /etc/grub.d/40-custom o /boot/grub/custom.cfg e si rigeneri il grub.cfg con grub-mkconfig come spiegato sopra per effettuare il chainload di Windows (XP, Vista, 7 o 8) installato in modalità BIOS-MBR:

Nota: Le voci sotto riportate NON funzioneranno su GRUB per sistemi BIOS. A tal proposito si legga qui e qui per ulteriori informazioni.


Per Windows Vista/7/8/8.1:

if [ "${grub_platform}" == "pc" ]; then
  menuentry "Microsoft Windows Vista/7/8/8.1 BIOS-MBR" {
    insmod part_msdos
    insmod ntfs
    insmod search_fs_uuid
    insmod ntldr     
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
    ntldr /bootmgr
  }
fi

Per Windows XP:

if [ "${grub_platform}" == "pc" ]; then
  menuentry "Microsoft Windows XP" {
    insmod part_msdos
    insmod ntfs
    insmod search_fs_uuid
    insmod ntldr     
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 69B235F6749E84CE
    ntldr /bootmgr
  }
fi


Nota: nn dovrebbe avere un valore superiore a 06 affinchè gli script di sistema siano eseguiti per primi.
Nota: In alcuni casi (ad esempio se GRUB viene installato prima di Windows 8), potrebbe verificarsi un errore riguardante \boot\bcd (codice errore 0xC000000F) durante l'avvio di Windows. È possibile risolvere il problema avviando la console di ripristino di Windows (si utilizzi il suo disco di installazione) ed eseguendo:
x:\>bootrec.exe /fixboot
x:\>bootrec.exe /rebuildbcd
Attenzione: Non utilizzare bootrec.exe /Fixmbr, poichè cancellerebbe GRUB.

Il file /etc/grub.d/40_custom può essere utilizzato come template per creare /etc/grub.d/nn_custom, dove il numero nn definisce l'ordine in cui gli script sono eseguiti, determinando di conseguenza il posizionamento delle voci nel menu di GRUB.

Nota: Il numero nn dovrebbe avere un valore maggiore di 6, affinchè vengano prima eseguiti altri script necessari.

Con Windows usando EasyBCD e NeoGRUB

Poichè NeoGRUB non capisce il nuovo formato dei menu di GRUB, sarà necessario effettuare il chainload di GRUB, sostituendo il contenuto del vostro C:\NST\menu.lst con:

default 0
timeout 1
title       Chainload into GRUB v2
root        (hd0,7)
kernel      /boot/grub/i386-pc/core.img

Avviare un'immagine ISO9660 direttamente da GRUB

GRUB supporta l'avvio di immagini ISO attraveso l'utilizzo di dispositivi di loopback. Si veda a tal proposito Multiboot USB drive#Using GRUB and loopback devices.

LVM

Se si usa LVM per la propria /boot, si aggiunga la seguente linea prima delle varie voci:

insmod lvm

e si specifichi la propria root nella menuentry in questo modo:

set root=lvm/"nome_gruppo_lvm"-"nome_partizione_logica_di_boot_lvm"

Esempio:

# (0) Arch Linux
menuentry "Arch Linux" {
insmod lvm
set root=lvm/VolumeGroup-lv_boot
# you can only set following two lines
linux /vmlinuz-linux root=/dev/mapper/VolumeGroup-root ro
initrd /initramfs-linux.img
}

RAID

GRUB permette di trattare i volumi in configurazione RAID in modo semplice. Si aggiunga insmod mdraid al grub.cfg che consentirà di riferirsi al volume in modo nativo. Ad esempio, /dev/md0 diventa:

set root=(md/0)

mentre un volume RAID partizionato (es. /dev/md0p1 diventa:

set root=(md/0,1)

Per installare GRUB su una partizione /boot in RAID1 (o comunque se /boot si trova su una partizione root in RAID1) su sistemi con GPT e partizione di boot BIOS ef02, si esegua grub-install su ciascuna unità.

Ad esempio:

# grub-install --target=i386-pc --recheck --debug /dev/sda && grub-install --target=i386-pc --recheck --debug /dev/sdb

Dove l'array RAID1 che ospita la partizione /boot è formato da /dev/sda e /dev/sdb.

Usare le etichette

È possibile usare le etichette (stringhe che identificano le partizioni in una maniera leggibile dall'utente), usando l'opzione --label del comando search. Innanzitutto, si apponga un'etichetta alle proprie partizioni:

# tune2fs -L ETICHETTA PARTIZIONE

Poi si aggiunga una voce usando le etichette:

menuentry "Arch Linux, session texte" {
    search --label --set=root archroot
    linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro
    initrd /boot/initramfs-linux.img
}

Proteggere con una password il menu di GRUB

Se si desidera rendere più sicuro GRUB e fare in modo che nessuno possa cambiare i parametri di boot od usare la riga di comando, è possibile aggiungere un nome utente e password ai files di configurazione di GRUB. A tal fine, si esegua grub-mkpasswd_pbkdf2. Si inserisca una password e la si confermi.

grub-mkpasswd-pbkdf2
[...]
Your PBKDF2 is grub.pbkdf2.sha512.10000.C8ABD3E93C4DFC83138B0C7A3D719BC650E6234310DA069E6FDB0DD4156313DA3D0D9BFFC2846C21D5A2DDA515114CF6378F8A064C94198D0618E70D23717E82.509BFA8A4217EAD0B33C87432524C0B6B64B34FBAD22D3E6E6874D9B101996C5F98AB1746FE7C7199147ECF4ABD8661C222EEEDB7D14A843261FFF2C07B1269A

Si aggiungano le seguenti stringhe a /etc/grub.d/40_custom:

/etc/grub.d/40_custom
set superusers="username"
password_pbkdf2 username <password>

Dove a <password> corrisponde la stringa generata con grub-mkpasswd_pbkdf2.

Si rigeneri il file di configurazione. La riga di comando e i parametri di boot di GRUB sono ora protetti.

Le impostazioni di cui sopra possono essere rese meno restrittive e personalizzate aggiungendo più utenti, come spiegato nel capitolo "Security" del manuale di GRUB.

Nascondere il menu di GRUB e farlo apparire alla pressione del tasto Shift

Per ridurre al minimo i tempi di boot è possibile nascondere il menu di GRUB, invece di aspettare lo scadere del timeout. È possibile nascondere il menu di default e farlo apparire solo qualora venga premuto il tasto Shift durante l'avvio di GRUB.

Per ottenere questo risultato, aggiungere quanto segue al proprio /etc/default/grub:

GRUB_FORCE_HIDDEN_MENU="true"

Sarà inoltre necessario creare e rendere eseguibile il seguente file:

/etc/grub.d/31_hold_shift
#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

source "${datarootdir}/grub/grub-mkconfig_lib"

found_other_os=

make_timeout () {

  if [ "x${GRUB_FORCE_HIDDEN_MENU}" = "xtrue" ] ; then 
    if [ "x${1}" != "x" ] ; then
      if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
    verbose=
      else
    verbose=" --verbose"
      fi

      if [ "x${1}" = "x0" ] ; then
    cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
    cat << EOF
if [ "x\${timeout}" != "x-1" ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  fi
}

adjust_timeout () {
  if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
    make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
    echo else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
    echo fi
  else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
  fi
}

  adjust_timeout

    cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF

Si renda eseguibile lo script e si rigeneri il file di configurazione di GRUB:

# chmod a+x /etc/grub.d/31_hold_shift
# grub-mkconfig -o /boot/grub/grub.cfg

Combinare UUID e scripting

Se si vogliono usare gli UUID per sopperire al mapping inaffidabile dei dispositivi effettuato dal BIOS, oppure si stanno avendo difficoltà con la sintassi di GRUB, ecco un esempio che usa gli UUID e un piccolo script per far puntare GRUB alle giuste partizioni. Tutto ciò che si dovrà fare, sarà sostituire gli UUID dell'esempio con quelli corretti per il proprio sistema (L'esempio si applica a sistemi con una partizione di boot separata e va modificato di conseguenza in caso di partizioni aggiuntive).

menuentry "Arch Linux 64" {
     # Si impostino gli UUID delle proprie partizioni di boot e root
     set the_boot_uuid=ece0448f-bb08-486d-9864-ac3271bd8d07   
     set the_root_uuid=c55da16f-e2af-4603-9e0b-03f5f565ec4a
   
     # (Nota: In caso non si disponga di una partizione di boot separata, i due UUID saranno uguali)
   
     # Otteniamo gli identificativi dei dispositivi contenenti le partizioni di boot/root e li impostiamo nelle variabili "grub_boot" e "root"
     search --fs-uuid $the_root_uuid --set=root       
     search --fs-uuid $the_boot_uuid --set=grub_boot
   
     # Controllo per verificare che boot e root siano uguali
     # Se lo sono, allora aggiungo "/boot" a $grub_root, dal momento che $grub_root è effettivamente la partizione di root
     if [ $the_boot_uuid == $the_root_uuid] ; then
         set grub_boot=$grub_boot/boot
     else
         set grub_boot=($grub_boot)
     fi
   
     # $grub_boot indica ora il dispositivo corretto e i seguenti comandi saranno in grado di trovare il kernel e l'immagine initrd senza problemi
     linux ($grub_boot)/vmlinuz-linux root=/dev/disk/by-uuid/$uuid_os_root ro
     initrd ($grub_boot)/initramfs-linux.img
 }

Usare la shell

Poichè l'MBR è troppo piccolo per contenere tutti i moduli di GRUB, solo il menù e i comandi fondamentali risiedono lì. La maggior parte delle funzionalità di GRUB è contenuta nei moduli in /boot/grub, che sono caricati quando necessario. In caso di errori (ad esempio se viene alterata la tabella delle partizioni), GRUB potrebbe non riuscire ad effettuare il boot, ed avviare una shell al posto del menù classico.

GRUB offre diversi tipi di shell. Se vi sono problemi nella lettura del menu, ma il bootloader è comunque in grado di trovare il disco dove GRUB risiede, è probabile che si sarà lasciati nella shell "normale":

sh:grub>

In caso di problemi più seri (GRUB non riesce a trovare i files richiesti), potrebbe venir visualizzata la shell di emergenza:

grub rescue>

La shell di emergenza è una versione ridotta di quella normale, ed offre di conseguenza, un numero ridotto di funzionalità. Si provi a caricare il modulo normal, e poi ad avviare la shell classica:

grub rescue> set prefix=(hdX,Y)/boot/grub
grub rescue> insmod (hdX,Y)/boot/grub/normal.mod
rescue:grub> normal

Supporto al Pager

GRUB supporta il pager per rendere agevole la lettura di output lunghi. Si noti che questa funzionalità è disponibile solamente nella shell normale, e non in quella d'emergenza. Per attivarla, si scriva:

sh:grub> set pager=1

Utilizzare la shell dei comanti per avviare altri sistemi operativi

grub>

È possibile utilizzare la shell di GRUB per avviare altri sistemi operativi, come ad esempio sistemi Windows o Linux installati su partizione e avviarli tramite chainloading.

Il chainloading consiste nell'avviare un bootloader, che può trovarsi all'inizio del disco (per sistemi MBR) o all'inizio di una partizione, tramite un altro bootloader.

Effettuare il chainloading di una partizione

set root=(hdX,Y)
chainloader +1
boot

Dove X indica il disco fisso da cui avviare l'altro bootloader ed ha valori che partono da 0, mentre Y identifica il numero della partizione che ci interessa.

L'esempio seguente mostra come avviare un'installazione di Windows situata nella prima partizione del primo hard disk:

set root=(hd0,1)
chainloader +1
boot

È inoltre possibile avviare un'installazione di GRUB in una partizione utilizzando lo stesso metodo di cui sopra.

Effettuare il chainloading di un disco/drive

set root=hdX
chainloader +1
boot

Effettuare il chainloading di sistemi Windows/Linux installati in modalità UEFI

insmod ntfs
set root=(hd0,gpt4)
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
boot

insmod ntfs viene utilizzato per caricare il modulo NTFS necessario al caricamento di Windows.

(hd0,gpt4) o /dev/sda4 identifica la partizione EFI di sistema (ESP).

Il percorso che segue la voce chainloader identifica il file .efi del quale si vuole fare il chainloading.

Avvio normale

Si vedano gli esempi in #Usare la console di emergenza.

Tools grafici per la configurazione

È possibile installare i seguenti pacchetti:

  • grub-customizer — Consente di personalizzare il bootloader (GRUB o BURG)
https://launchpad.net/grub-customizer || grub-customizerAUR
  • grub2-editor — Control module di KDE4 per configurare GRUB
http://kde-apps.org/content/show.php?content=139643 || grub2-editorAUR[broken link: archived in aur-mirror]
  • startupmanager — Applicazione grafica per cambiare le impostazioni di GRUB Legacy, GRUB, Usplash e Splashy (abbandonato)
http://sourceforge.net/projects/startup-manager/ || startupmanagerAUR

parttool per hide/unhide

Se si hanno sistemi Windows 9x installati con dischi C:\ nascosti, GRUB dispone delle opzioni hide/unhide attraverso parttool. Ad esempio, per effettuare ilboot del terzo disco C:\ di tre sistemi Windows 9x installati, si avvii la shell e:

parttool hd0,1 hidden+ boot-
parttool hd0,2 hidden+ boot-
parttool hd0,3 hidden- boot+
set root=hd0,3
chainloader +1
boot

Usare la console di emergenza

Si veda innanzitutto #Usare la shell. Se non si è in grado di avviare la shell standard, una possibile soluzione è quella di effettuare il boot tramite LiveCD o con qualche altro disco di ripristino per correggere gli errori di configurazione e reinstallare GRUB. Tuttavia, un disco di ripristino non è sempre disponibile (né tantomeno necessario), e la console di emergenza è sorprendentemente robusta.

I comandi disponibili in questa modalità includono insmod, ls, set e unset. Questo esempio usa set ed insmod. set modifica il valore delle variabili, mentre insmod aggiunge nuovi moduli per espandere le funzionalità di base.

Prima di iniziare, è necessario che l'utente sappia la posizione della propria partizione di /boot (sia essa separata o una sottodirectory della partizione root):

grub rescue> set prefix=(hdX,Y)/boot/grub

Dove X è il numero relativo al drive ed Y quello della partizione. Per espandere le funzionalità della console, si inserisca il modulo linux.

grub rescue> insmod i386-pc/linux.mod
Nota: Se si sta usando una partizione di boot separata, si ometta /boot dal percorso. (esempio: set prefix=(hdX,Y)/grub).

Ciò rende disponibili i comandi linux ed initrd, che dovrebbero essere familiari (si veda #Configurazione avanzata).

Un esempio, avvio di Arch Linux:

set root=(hd0,5)
linux /boot/vmlinuz-linux root=/dev/sda5
initrd /boot/initramfs-linux.img
boot

Di nuovo, in caso di partizione di boot separata, si cambino i comandi di conseguenza:

set root=(hd0,5)
linux /vmlinuz-linux root=/dev/sda6
initrd /initramfs-linux.img
boot
Nota: Se si riscontra l'errore error: premature end of file /NOME_KERNEL durante l'esecuzione del comando linux è possibile provare ad utilizzare il comando linux16 al suo posto.

Dopo aver avviato con successo l'installazione di Arch Linux, è possibile correggere grub.cfg e procedere con la reinstallazione di GRUB.

Per reinstallare GRUB nel MBR, cambiando /dev/sda secondo le proprie esigenze. Si veda #Installazione per i dettagli.

Risoluzione dei problemi

Sistemi con BIOS Intel non effettuano il boot da partizioni GPT

MBR

Alcuni BIOS Intel richiedono la presenza al boot di una partizione MBR contrassegnata come "avviabile", cosa che rende di fatto inusabili configurazioni basate su GPT.

È possibile aggirare il problema utilizzando (ad esempio) fdisk per segnare una delle partizioni GPT (preferibilmente la partizione da 1007 KiB che si è creata per GRUB) come avviabile. Si utilizzi fdisk puntandolo all'HD relativo (ad esempio /dev/sda), quindi si prema a e si selezioni la partizione da contrassegnare come avviabile (probabilmente la prima) utilizzando il numero corrispondente e infine si prema w per scrivere le modifiche nel MBR.

Nota: Il procedimento di cui sopra deve essere eseguito in fdisk o tools simili e NON via GParted o altri, dal momento che questi non impostano il flag "avviabile" nel MBR.

Ulteriori informazioni sono disponibili a questo indirizzo.

EFI

Alcuni firmware UEFI richiedono la presenza di un'immagine avviabile in un percorso specifico prima di poter mostrare le voci di avvio. Se si rientra in questa categoria grub-install segnalerà che efibootmgr ha agiunto una voce per l'avvio di GRUB, ma quest'ultima non verrà poi visualizzata all'interno del menu di VisualBIOS per la scelta dell'ordine di boot. La soluzione consiste nel posizionare un'ìmmagine in uno dei percorsi in questione. Assumendo che la propria partizione EFI sia in /boot/efi, i seguenti comandi risolveranno il problema:

mkdir /boot/efi/EFI/boot
cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

La soluzione proposta ha funzionato su una scheda madre Intel DH87MC con firmware datato Gennaio 2014.

Abilitare i messaggi di debug in GRUB

Si aggiunga:

set pager=1
set debug=all

Al grub.cfg.

Correggere l'errore di GRUB "no suitable mode found"

Se si ottiene questo errore alla scelta di un'opzione di boot:

error: no suitable mode found
Booting however

Allora sarà necessario inizializzare il terminale grafico di GRUB (gfxterm), usando una modalità video appropriata (gfxmode). Quest'ultima viene passata da GRUB al kernel linux usando l'opzione gfxpayload. Sui sistemi UEFI, se la modalità video di GRUB non viene inizializzata, non verranno visualizzati i messaggi di boot del kernel (almeno fino all'attivazione del KMS).

Si copi /usr/share/grub/unicode.pf2 in ${GRUB_PREFIX_DIR} (/boot/grub su sistemi BIOS e UEFI. Se GRUB UEFI è stato installato con l'opzione --boot-directory=$esp/EFI abilitata, allora il percorso sarà $esp/EFI/grub).

# cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}

Se il file /usr/share/grub/unicode.pf2 non esiste, si installi il pacchetto bdf-unifont e si proceda alla creazione e copia dello stesso in ${GRUB_PREFIX_DIR}.

# grub-mkfont -o unicode.pf2 /usr/share/fonts/misc/unifont.bdf

Nel file grub.cfg, si aggiungano le seguenti linee per consentire a GRUB di passare correttamente la modalità video al kernel, altrimenti si otterrà uno schermo nero, benchè il boot sia effettuato regolarmente senza che il sistema si blocchi:

Sistemi BIOS

insmod vbe

Sistemi UEFI

insmod efi_gop
insmod efi_uga

Si aggiunga poi il seguente codice (comune a sistemi BIOS e UEFI)

insmod font
if loadfont ${prefix}/fonts/unicode.pf2
then
    insmod gfxterm
    set gfxmode=auto
    set gfxpayload=keep
    terminal_output gfxterm
fi

Come si può notare, affinchè gfxterm funzioni correttamente, il font unicode.pf2 deve esistere in ${GRUB_PREFIX_DIR}.

messaggio d'errore msdos-style

grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding won't be possible!
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
            However, blocklists are UNRELIABLE and its use is discouraged.
grub-setup: error: If you really want blocklists, use --force.

Questo problema si verifica quando si tenta di installare GRUB in VMWare. Ulteriori informazioni qui. Si spera in un fix in tempi brevi.

Può anche verificarsi quando la partizione inizia subito dopo l'MBR (blocco 63), senza lasciare uno spazio di circa 1MB (2048 blocchi) prima dell'inizio della prima partizione. Si veda #Istruzioni specifiche per Master Boot Record (MBR)

GRUB UEFI torna alla shell

Se GRUB viene caricato, ma torna alla shell di ripristino senza errori, il grub.cfg potrebbe trovarsi in una posizione sbagliata o non esistere del tutto. Questo problema potrebbe verificarsi se GRUB UEFI è stato installato con l'opzione --boot-directory abilitata, e il file grub.cfg non esiste, OPPURE se il numero identificativo della partizione di boot è cambiato (tale valore è infatti "hardcoded" nel file grubx64.efi).

GRUB UEFI non viene caricato

Esempio di un sistema EFI funzionante:

# efibootmgr -v
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001,0002
Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\efi\grub\grub.efi)
Boot0001* Shell HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EfiShell.efi)
Boot0002* Festplatte BIOS(2,0,00)P0: SAMSUNG HD204UI

Se lo schermo diveta nero per qualche secondo e GRUB passa alla prossima opzione di boot, come scritto in questo post, spostare GRUB sulla partizione di root potrebbe aiutare.

L'opzione di boot deve essere eliminata e ricreata dopo l'operazione. Il campo relativo a grub dovrebbe ora essere simile a questo:

Boot0000* Grub HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grub.efi)

Invalid signature

Se si riceve l'errore "invalid signature" cercando di avviare Windows, ad esempio dopo aver alterato la tabella partizioni o aver aggiunto altri hard disks, si provi a rimuovere la configurazione dei dispositivi di GRUB e lasciare che lo stesso la rigeneri:

# mv /boot/grub/device.map /boot/grub/device.map-old
# grub-mkconfig -o /boot/grub/grub.cfg

grub-mkconfig dovrebbe ora mostrare tutte le opzioni di boot, incluso Windows. Se il problema è risolto, si rimuova /boot/grub/device.map-old.

Freeze al boot

Se il boot si blocca senza errori dopo che GRUB carica il kernel e l'eventuale ramdisk, si provi a rimuovere il parametro del kernel add_efi_memmap.

Ripristinare GRUB Legacy

  • Spostare i files di GRUB Legacy o GRUB:
# mv /boot/grub /boot/grub.nonfunctional
  • Ripristinare il backup di GRUB Legacy in /boot:
# cp -a /path/to/backup/grub /boot/
  • Ripristinare il MBR e i 62 settori successivi del disco sda (PERICOLOSO):
# dd if=/path/to/backup/first-sectors of=/dev/sdX bs=512 count=1
Attenzione: Il comando sopra riportato ripristina anche la tabella delle partizioni. Si proceda con cautela.

Una soluzione più sicura è il ripristino del solo MBR:

# dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1

Arch non rilevata da altre distribuzioni

Alcuni utenti hanno riportato che altre distribuzioni hanno problemi a rilevare Arch Linux automaticamente tramite os-prober. È possibile mitigare la situazione attraverso la creazione del file /etc/lsb-release: il file in questione e relativo tool per l'aggiornamento dello stesso sono disponibili nel pacchetto lsb-release, disponibile nei repository ufficiali.

Riferimenti

  1. Manuale ufficiale di GRUB - http://www.gnu.org/software/grub/manual/grub.html
  2. Pagina del wiki di Ubuntu su GRUB - https://help.ubuntu.com/community/Grub2
  3. Pagina del wiki di GRUB che spiega come compilarlo per sistemi UEFI - http://help.ubuntu.com/community/UEFIBooting
  4. La pagina di Wikipedia relativa alla partizione di Boot del BIOS.