Difference between revisions of "GRUB (Italiano)"
m (→ISO di Ubuntu) |
m (→Avviare Microsoft Windows su sistemi BIOS-MBR) |
||
(31 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Boot loaders (Italiano)]] | [[Category:Boot loaders (Italiano)]] | ||
+ | [[ar:GRUB]] | ||
[[cs:GRUB2]] | [[cs:GRUB2]] | ||
[[en:GRUB2]] | [[en:GRUB2]] | ||
Line 10: | Line 11: | ||
[[zh-TW:GRUB2]] | [[zh-TW:GRUB2]] | ||
{{Article summary start|Sommario}} | {{Article summary start|Sommario}} | ||
− | {{Article summary text|Questo articolo copre vari aspetti del GRand Unified Bootloader ( | + | {{Article summary text|Questo articolo copre vari aspetti della versione 2 del GRand Unified Bootloader (GRUB) di prossima generazione.}} |
{{Article summary heading|Informazioni generali}} | {{Article summary heading|Informazioni generali}} | ||
{{Article summary text|{{Boot process overview (Italiano)}}}} | {{Article summary text|{{Boot process overview (Italiano)}}}} | ||
{{Article summary heading|Articoli correlati}} | {{Article summary heading|Articoli correlati}} | ||
− | {{Article summary wiki|Burg (Italiano)}} - Burg è un boot loader di nuova concezione basato su | + | {{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 |
{{Article summary wiki|GRUB Legacy (Italiano)|GRUB Legacy}} - La versione precedente, deprecata. | {{Article summary wiki|GRUB Legacy (Italiano)|GRUB Legacy}} - La versione precedente, deprecata. | ||
{{Article summary heading|Risorse}} | {{Article summary heading|Risorse}} | ||
Line 38: | Line 39: | ||
* 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. 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==== | ||
Line 58: | Line 61: | ||
====Sistemi BIOS==== | ====Sistemi BIOS==== | ||
− | =====Istruzioni specifiche per | + | =====Istruzioni specifiche per GUID Partition Table (GPT)===== |
− | Nelle accoppiate 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). | + | 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). |
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. | 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 | + | 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|È necessario creare la partizione in oggetto prima di eseguire il comando {{ic|grub-install}} o {{ic|grub-setup}}.}} | {{Nota|È necessario creare la partizione in oggetto prima di eseguire il comando {{ic|grub-install}} o {{ic|grub-setup}}.}} | ||
Line 69: | Line 72: | ||
{{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.}} | {{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.}} | ||
− | =====Istruzioni specifiche per | + | =====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 {{ic|core.img}} di GRUB. ({{bug|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 {{ic|core.img}}. | + | Solitamente, il gap dopo il [[Master Boot Record (Italiano)|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 {{ic|core.img}} di GRUB. ({{bug|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 {{ic|core.img}}. |
− | |||
− | |||
− | |||
− | |||
====Sistemi UEFI==== | ====Sistemi UEFI==== | ||
Line 96: | Line 95: | ||
===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 | ||
{{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.}} | ||
− | ====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 tre modi per installare i files di boot di GRUB su sistemi BIOS | ||
Line 109: | Line 106: | ||
* [[#Installazione nella regione di 440 byte del MBR]] (consigliata) | * [[#Installazione nella regione di 440 byte del MBR]] (consigliata) | ||
* [[#Installazione su una partizione o su un disco partitionless]] (sconsigliata) | * [[#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)| | + | * [[#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 nella partizione di boot BIOS con schema di partizionamento GPT===== | ||
Line 133: | Line 118: | ||
# parted /dev/disk set partition-number bios_grub on | # parted /dev/disk set partition-number bios_grub on | ||
− | 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’}} ( | + | 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]]}}). |
{{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.}} | {{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.}} | ||
− | Per installare {{ic|grub | + | 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: |
− | # modprobe dm-mod | + | # modprobe dm-mod |
− | # grub-install --target=i386-pc --recheck --debug /dev/sda | + | # modprobe part_gpt |
− | + | # grub-install --target=i386-pc --recheck --debug /dev/sda | |
− | |||
Dove {{ic|/dev/sda}} è il disco di destinazione. | Dove {{ic|/dev/sda}} è il disco di destinazione. | ||
+ | |||
+ | Si prosegua con [[GRUB2 (Italiano)#Generare un file di configurazione]]. | ||
+ | |||
+ | =====Installazione nella regione di 440 byte del MBR===== | ||
+ | |||
+ | 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===== | ||
− | {{Nota| | + | {{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 {{ic|/dev/sdaX}} e che corrisponda alla partizione di {{ic|/boot}}): | 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 {{ic|/dev/sdaX}} e che corrisponda alla partizione di {{ic|/boot}}): | ||
Line 155: | Line 154: | ||
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX | # grub-install --target=i386-pc --recheck --debug --force /dev/sdaX | ||
# chattr -i /boot/grub/i386-pc/core.img | # chattr -i /boot/grub/i386-pc/core.img | ||
− | |||
− | |||
# chattr +i /boot/grub/i386-pc/core.img | # chattr +i /boot/grub/i386-pc/core.img | ||
}} | }} | ||
Line 179: | Line 176: | ||
{{ic|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 {{ic|/boot/grub/i386-pc/core.img}} e il percorso della directory {{ic|/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. | {{ic|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 {{ic|/boot/grub/i386-pc/core.img}} e il percorso della directory {{ic|/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 {{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 | + | 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. | ||
=====Generazione del solo core.img===== | =====Generazione del solo core.img===== | ||
Line 186: | Line 185: | ||
# modprobe dm-mod | # modprobe dm-mod | ||
# 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. | Sarà quindi possibile effettuare il chainload del {{ic|core.img}} di GRUB da GRUB Legacy o da syslinux. | ||
− | ====Generare un file di configurazione | + | ====Generare un file di configurazione==== |
Si generi quindi un file di configurazione per GRUB (è possibile trovare ulteriori informazioni nella sezione "Configurazione"): | Si generi quindi un file di configurazione per GRUB (è possibile trovare ulteriori informazioni nella sezione "Configurazione"): | ||
Line 249: | Line 246: | ||
{{Note|L'opzione di cui sopra funziona solo su sistemi BIOS.}} | {{Note|L'opzione di cui sopra funziona solo su sistemi BIOS.}} | ||
− | ====Multiboot | + | ====Multiboot==== |
+ | |||
+ | Quanto segue funzionerà senza ulteriori interventi da parte dell'utente, a patto che {{Pkg|os-prober}} sia installato. | ||
+ | |||
+ | Una volta effettuata l'installazione, si esegua {{ic| grub-mkconfig -o /boot/grub/grub.conf}}. | ||
+ | |||
+ | Se la rilevazione automatica non va a buon fine, è possibile inserire manualmente una voce di menù seguendo le istruzioni proposte sotto. | ||
+ | |||
=====Avviare Microsoft Windows su sistemi BIOS-MBR===== | =====Avviare Microsoft Windows su sistemi BIOS-MBR===== | ||
{{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.}} | {{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.}} | ||
Line 255: | Line 259: | ||
{{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="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.}} | {{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="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.}} | ||
− | 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}}: | + | 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}}: |
Per Windows Vista/7/8: | Per Windows Vista/7/8: | ||
Line 265: | Line 269: | ||
--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 | --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.}} | |
− | {{Nota|Se si utilizza Windows XP, si sostituisca {{ic|bootmgr}} con {{ic|ntldr}} nei comandi di cui sopra.}} | ||
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: | 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: | ||
Line 273: | Line 276: | ||
{{bc|1= | {{bc|1= | ||
− | |||
menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" { | menuentry "Microsoft Windows Vista/7/8 BIOS-MBR" { | ||
insmod part_msdos | insmod part_msdos | ||
Line 297: | Line 299: | ||
}} | }} | ||
− | |||
{{Nota|{{ic|nn}} dovrebbe avere un valore superiore a {{ic|06}} affinchè gli script di sistema siano eseguiti per primi.}} | {{Nota|{{ic|nn}} dovrebbe avere un valore superiore a {{ic|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 {{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: | |
− | + | x:\>bootrec.exe /fixboot | |
+ | x:\>bootrec.exe /rebuildbcd | ||
− | + | {{Attenzione|Non utilizzare {{ic|bootrec.exe /Fixmbr}}, poichè cancellerebbe GRUB.}}}} | |
− | + | 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. | |
− | + | ===Sistemi UEFI=== | |
− | |||
− | === | ||
− | {{Nota| | + | {{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. |
+ | 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. | |
Tenendo conto di questa informazione, si installi il pacchetto adeguato. | Tenendo conto di questa informazione, si installi il pacchetto adeguato. | ||
− | Per firmware UEFI a 64 bit si install il pacchetto {{Pkg|grub-efi-x86_64}}. | + | * Per firmware UEFI a 64 bit si install il pacchetto {{Pkg|grub-efi-x86_64}}. |
− | Per firmware UEFI a 32bit si installi il pacchetto {{Pkg|grub-efi-i386}}. | + | * Per firmware UEFI a 32bit si installi il pacchetto {{Pkg|grub-efi-i386}}. |
{{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.}} | {{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.}} | ||
Line 329: | Line 330: | ||
=====Installazione nella partizione UEFI di sistema===== | =====Installazione nella partizione UEFI di sistema===== | ||
− | {{Nota|I comandi seguenti assumono che si stia | + | {{Nota| |
− | + | * 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: | La partizione UEFI di sistema dovrà essere montata in {{ic|/boot/efi}} affinchè lo script di installazione di GRUB la riconosca: | ||
Line 341: | Line 342: | ||
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug | # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug | ||
− | |||
− | |||
{{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}}.}} | {{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}}.}} | ||
Line 350: | Line 349: | ||
# modprobe dm-mod | # modprobe dm-mod | ||
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug | # 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}}). | 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}}). | ||
Line 383: | Line 380: | ||
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}}. | 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}}. | ||
− | {{Nota|A partire da GRUB 2.00, l'opzione {{ic|--efi-directory}} di {{ic|grub-install}} sostituisce la vecchia {{ic|--root-directory}}, che è deprecata. | + | {{Nota| |
− | + | * 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). | 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). | ||
Line 393: | Line 390: | ||
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}}. | 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}}. | ||
− | ====Generare un file di configurazione | + | ====Generare un file di configurazione==== |
Si generi un file di configurazione per GRUB usando il seguente comando: | Si generi un file di configurazione per GRUB usando il seguente comando: | ||
Line 414: | Line 411: | ||
====Creare una voce per GRUB nel Firmware Boot Manager==== | ====Creare una voce per GRUB nel Firmware Boot Manager==== | ||
− | + | 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. | |
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]]. | 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]]. | ||
Line 420: | Line 417: | ||
====Generare un'applicazione UEFI standalone per GRUB==== | ====Generare un'applicazione UEFI standalone per GRUB==== | ||
− | È 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 | + | È 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}}. |
Il modo più semplice per farlo, è attraverso il comando install menzionato sopra, avendo cura però di specificare i moduli da includere. Ad esempio: | Il modo più semplice per farlo, è attraverso il comando install menzionato sopra, avendo cura però di specificare i moduli da includere. Ad esempio: | ||
Line 439: | Line 436: | ||
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]]. | 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]]. | ||
− | ====Multiboot | + | ====Multiboot==== |
− | ===== | + | =====Microsoft Windows installato in modalità UEFI GPT===== |
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: | 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: | ||
Line 451: | Line 448: | ||
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 | # grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 | ||
− | |||
− | |||
Si aggiunga quindi il codice seguente a {{ic|/etc/grub.d/40_custom}} per effettuare il chainload di Windows su sistemi UEFI-GPT: | Si aggiunga quindi il codice seguente a {{ic|/etc/grub.d/40_custom}} per effettuare il chainload di Windows su sistemi UEFI-GPT: | ||
Line 474: | Line 469: | ||
E' possibile generare il {{ic|grub.cfg}} in maniera automatica o modificarlo manualmente. | E' possibile generare il {{ic|grub.cfg}} in maniera automatica o modificarlo manualmente. | ||
− | {{Nota|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. | + | {{Nota| |
− | + | * 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=== | ===Generazione automatica usando grub-mkconfig=== | ||
Line 585: | Line 580: | ||
# (2) Windows XP | # (2) Windows XP | ||
menuentry "Windows XP" { | menuentry "Windows XP" { | ||
− | set root=(hd0,3) | + | set root="(hd0,3)" |
− | chainloader | + | chainloader +1 |
} | } | ||
}} | }} | ||
Line 626: | Line 621: | ||
L'opzione {{ic|gfxpayload}} si assicurerà che la risoluzione venga mantenuta e passata al kernel. | L'opzione {{ic|gfxpayload}} si assicurerà che la risoluzione venga mantenuta e passata al kernel. | ||
− | {{Nota|Se questo esempio non funziona, si provi a sostituire {{ic|1=gfxmode="1024x768x32"}} con {{ic|1=vbemode="0x105"}}. | + | {{Nota| |
− | + | * Se questo esempio non funziona, si provi a sostituire {{ic|1=gfxmode="1024x768x32"}} con {{ic|1=vbemode="0x105"}}. | |
+ | * 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).}} | ||
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: | 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: | ||
Line 640: | Line 636: | ||
Se si stanno utilizzando schede grafiche Intel, può accadere che nè {{ic|# hwinfo --framebuffer}} nè {{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]. | Se si stanno utilizzando schede grafiche Intel, può accadere che nè {{ic|# hwinfo --framebuffer}} nè {{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]. | ||
− | |||
− | |||
Innanzitutto è necessario scegliere una modalità video da modificare più tardi. Si avvii quindi {{ic|915resolution}} nella shell di GRUB: | Innanzitutto è necessario scegliere una modalità video da modificare più tardi. Si avvii quindi {{ic|915resolution}} nella shell di GRUB: | ||
− | + | {{hc|sh:grub> 915resolution -l| | |
+ | Intel 800/900 Series VBIOS Hack : version 0.5.3 | ||
+ | [...] | ||
+ | Mode 30 : 640x480, 8 bits/pixel | ||
+ | [...] | ||
+ | }} | ||
− | L' | + | L'obiettivo è quello di sovrascrivere la modalità 30 con la risoluzione {{ic|1440x900}}: |
− | + | {{hc|/etc/grub/00_header| | |
− | + | [...] | |
− | + | '''915resolution 30 1440 900 # linea aggiunta''' | |
− | + | set gfxmode=${GRUB_GFXMODE} | |
+ | [...] | ||
+ | }} | ||
− | + | Sarà ora necessario impostare il valore di {{ic|GRUB_GFXMODE}}, come spiegato in precedenza e rigenerare il file di configurazione di GRUB: | |
− | |||
− | |||
− | |||
− | |||
# grub-mkconfig -o /boot/grub/grub.cfg | # grub-mkconfig -o /boot/grub/grub.cfg | ||
Line 664: | Line 661: | ||
====Immagine di sfondo e caratteri bitmap==== | ====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 | + | 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. | 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. | ||
Line 774: | Line 771: | ||
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=(md0,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à. | ||
+ | |||
+ | Ad esempio: | ||
+ | |||
+ | # grub-install --recheck --debug /dev/sda && grub-install --recheck --debug /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==== | ====Nomenclatura permanente dei dispositivi a blocchi==== | ||
Line 785: | Line 790: | ||
L'uso degli UUID è controllato da un'opzione in {{ic|/etc/default/grub}}: | 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: | In ogni caso, ci si ricordi di applicare i cambiamenti: | ||
+ | |||
# grub-mkconfig -o /boot/grub/grub.cfg | # grub-mkconfig -o /boot/grub/grub.cfg | ||
Line 816: | Line 822: | ||
{{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}}.}} | {{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 rigenerare il file di configurazione di GRUB. | + | 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==== | ====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. |
− | {{ | + | {{hc|grub-mkpasswd-pbkdf2| |
− | 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/ | + | Si aggiungano le seguenti stringhe a {{ic|/etc/grub.d/00_header}}: |
− | {{ | + | {{hc|/etc/grub.d/00_header|<nowiki> |
− | set superusers= | + | set superusers='''username''' |
− | password_pbkdf2 username <password> | + | password_pbkdf2 '''username''' '''<password>''' |
</nowiki>}} | </nowiki>}} | ||
Line 840: | Line 863: | ||
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}}. | 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}}: | Un esempio con la root mappata su {{ic|/dev/mapper/root}}: | ||
Line 856: | Line 881: | ||
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. | 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. | 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 {{Keypress|Shift}} durante l'avvio di GRUB. | ||
+ | |||
+ | Per ottenere questo risultato, aggiungere quanto segue al proprio {{ic|/etc/default/grub}}: | ||
+ | |||
+ | GRUB_FORCE_HIDDEN_MENU="true" | ||
+ | |||
+ | Sarà inoltre necessario creare il seguente file: | ||
+ | |||
+ | {{hc|/etc/grub.d/31_hold_shift|<nowiki> | ||
+ | #! /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" | ||
+ | |||
+ | . "${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 | ||
+ | </nowiki>}} | ||
===Avviare un'immagine ISO direttamente da GRUB=== | ===Avviare un'immagine ISO direttamente da GRUB=== | ||
Line 863: | Line 1,003: | ||
====ISO di Arch Linux==== | ====ISO di Arch Linux==== | ||
− | {{Nota|L'esempio assume che la ISO si trovi nella cartella {{ic|/archives}} su {{ic|hd0,6}}. | + | {{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.01 | + | menuentry "Archlinux-2013.05.01-dual.iso" --class iso { |
− | set isofile="/archives/archlinux-2013.01 | + | set isofile="/archives/archlinux-2013.05.01-dual.iso" |
− | loopback loop (hd0, | + | set partition="6" |
− | linux (loop)/arch/boot/x86_64/vmlinuz archisolabel= | + | loopback loop (hd0,$partition)/$isofile |
+ | linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop | ||
initrd (loop)/arch/boot/x86_64/archiso.img | initrd (loop)/arch/boot/x86_64/archiso.img | ||
} | } | ||
− | + | =====i686===== | |
− | menuentry "Archlinux-2013.01 | + | menuentry "Archlinux-2013.05.01-dual.iso" --class iso { |
− | set isofile="/archives/archlinux-2013.01 | + | set isofile="/archives/archlinux-2013.05.01-dual.iso" |
− | loopback loop (hd0, | + | set partition="6" |
− | linux (loop)/arch/boot/i686/vmlinuz archisolabel= | + | 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 | initrd (loop)/arch/boot/i686/archiso.img | ||
} | } | ||
− | |||
− | |||
− | |||
====ISO di Ubuntu==== | ====ISO di Ubuntu==== | ||
Line 892: | Line 1,033: | ||
menuentry "ubuntu-13.04-desktop-amd64.iso" { | menuentry "ubuntu-13.04-desktop-amd64.iso" { | ||
set isofile="/archives/ubuntu-13.04-desktop-amd64.iso" | set isofile="/archives/ubuntu-13.04-desktop-amd64.iso" | ||
− | loopback loop (hd0,6)$isofile | + | loopback loop (hd0,6)/$isofile |
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- | linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- | ||
initrd (loop)/casper/initrd.lz | initrd (loop)/casper/initrd.lz | ||
Line 899: | Line 1,040: | ||
menuentry "ubuntu-12.04-desktop-amd64.iso" { | menuentry "ubuntu-12.04-desktop-amd64.iso" { | ||
set isofile="/archives/ubuntu-12.04-desktop-amd64.iso" | set isofile="/archives/ubuntu-12.04-desktop-amd64.iso" | ||
− | loopback loop (hd0,6)$isofile | + | loopback loop (hd0,6)/$isofile |
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- | linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- | ||
initrd (loop)/casper/initrd.lz | initrd (loop)/casper/initrd.lz | ||
Line 934: | Line 1,075: | ||
==Tools grafici per la configurazione== | ==Tools grafici per la configurazione== | ||
− | |||
− | * {{ | + | È possibile installare i seguenti pacchetti: |
− | + | ||
− | + | * {{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=139643|{{AUR|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=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}}}} |
− | |||
− | * | ||
==parttool per hide/unhide== | ==parttool per hide/unhide== | ||
− | Se si hanno sistemi Windows 9x installati con dischi C:\ nascosti, GRUB dispone delle opzioni {{ic|hide/unhide}} attraverso {{ic|parttool}}. Ad esempio, per effettuare ilboot del terzo disco C di tre sistemi Windows 9x installati, si avvii la shell e: | + | Se si hanno sistemi Windows 9x installati con dischi {{ic|C:\}} nascosti, GRUB dispone delle opzioni {{ic|hide/unhide}} attraverso {{ic|parttool}}. Ad esempio, per effettuare ilboot del terzo disco {{ic|C:\}} di tre sistemi Windows 9x installati, si avvii la shell e: |
{{bc|1= | {{bc|1= | ||
Line 1,007: | Line 1,145: | ||
# Otteniamo gli identificativi dei dispositivi contenenti le partizioni di boot/root e li impostiamo nelle variabili "grub_boot" e "root" | # Otteniamo gli identificativi dei dispositivi contenenti le partizioni di boot/root e li impostiamo nelle variabili "grub_boot" e "root" | ||
− | search --fs-uuid --set=root | + | search --fs-uuid $the_root_uuid --set=root |
− | search --fs-uuid --set=grub_boot | + | search --fs-uuid $the_boot_uuid --set=grub_boot |
# Controllo per verificare che boot e root siano uguali | # Controllo per verificare che boot e root siano uguali | ||
Line 1,014: | Line 1,152: | ||
if [ $the_boot_uuid == $the_root_uuid] ; then | if [ $the_boot_uuid == $the_root_uuid] ; then | ||
set grub_boot=$grub_boot/boot | set grub_boot=$grub_boot/boot | ||
+ | else | ||
+ | set grub_boot=($grub_boot) | ||
fi | fi | ||
Line 1,030: | Line 1,170: | ||
È possibile aggirare il problema utilizzando (ad esempio) {{ic|fdisk}} per segnare una delle partizioni GPT (preferibilmente la partizione da 1007 KiB che si è creata per GRUB) come avviabile. Si utilizzi {{ic|fdisk}} puntandolo all'HD relativo (ad esempio {{ic|/dev/sda}}), quindi si prema {{Keypress|a}} e si selezioni la partizione da contrassegnare come avviabile (probabilmente la prima) utilizzando il numero corrispondente e infine si prema {{Keypress|w}} per scrivere le modifiche nel MBR. | È possibile aggirare il problema utilizzando (ad esempio) {{ic|fdisk}} per segnare una delle partizioni GPT (preferibilmente la partizione da 1007 KiB che si è creata per GRUB) come avviabile. Si utilizzi {{ic|fdisk}} puntandolo all'HD relativo (ad esempio {{ic|/dev/sda}}), quindi si prema {{Keypress|a}} e si selezioni la partizione da contrassegnare come avviabile (probabilmente la prima) utilizzando il numero corrispondente e infine si prema {{Keypress|w}} per scrivere le modifiche nel MBR. | ||
− | + | {{Nota|Il procedimento di cui sopra deve essere eseguito in {{ic|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 [http://www.rodsbooks.com/gdisk/bios.html questo] indirizzo. | Ulteriori informazioni sono disponibili a [http://www.rodsbooks.com/gdisk/bios.html questo] indirizzo. | ||
Line 1,104: | Line 1,244: | ||
===GRUB UEFI non viene caricato=== | ===GRUB UEFI non viene caricato=== | ||
− | + | Esempio di un sistema EFI funzionante: | |
− | |||
− | |||
− | + | {{hc|# efibootmgr -v| | |
− | |||
− | {{ | ||
BootCurrent: 0000 | BootCurrent: 0000 | ||
Timeout: 3 seconds | Timeout: 3 seconds | ||
Line 1,119: | Line 1,255: | ||
}} | }} | ||
− | |||
Se lo schermo diveta nero per qualche secondo e GRUB passa alla prossima opzione di boot, come scritto [https://bbs.archlinux.org/viewtopic.php?pid=981560#p981560 in questo post], spostare GRUB sulla partizione di root potrebbe aiutare. | Se lo schermo diveta nero per qualche secondo e GRUB passa alla prossima opzione di boot, come scritto [https://bbs.archlinux.org/viewtopic.php?pid=981560#p981560 in questo post], spostare GRUB sulla partizione di root potrebbe aiutare. | ||
Line 1,135: | Line 1,270: | ||
{{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,153: | Line 1,300: | ||
Una soluzione più sicura è il ripristino del solo MBR: | Una soluzione più sicura è il ripristino del solo MBR: | ||
# dd if=/path/to/backup/mbr-boot-code of=/dev/sdX bs=446 count=1 | # 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 {{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== |
Revision as of 16:45, 23 July 2013
zh-CN:GRUB2 zh-TW:GRUB2 Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki - 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 Template:Article summary wiki - La versione precedente, deprecata. Template:Article summary heading Template:Article summary wiki Template:Article summary link Template:Article summary end
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
- 1 Prefazione
- 2 Installazione
- 2.1 Sistemi BIOS
- 2.2 Sistemi UEFI
- 3 Configurazione
- 3.1 Generazione automatica usando grub-mkconfig
- 3.2 Creazione manuale del grub.cfg
- 3.3 Dual Booting
- 3.4 Configurazione dell'aspetto
- 3.5 Altre opzioni
- 3.5.1 LVM
- 3.5.2 RAID
- 3.5.3 Nomenclatura permanente dei dispositivi a blocchi
- 3.5.4 Usare le etichette
- 3.5.5 Richiamare l'ultimo sistema avviato
- 3.5.6 Cambiare la voce di menu predefinita
- 3.5.7 Sicurezza
- 3.5.8 Cifratura della partizione root
- 3.5.9 Effettuare il boot di una voce non default per una sola volta
- 3.5.10 Nascondere il menu di GRUB e farlo apparire alla pressione del tasto Shift
- 3.6 Avviare un'immagine ISO direttamente da GRUB
- 4 Usare la shell
- 5 Tools grafici per la configurazione
- 6 parttool per hide/unhide
- 7 Usare la console di emergenza
- 8 Combinare UUID e scripting
- 9 Risoluzione dei problemi
- 9.1 Sistemi con BIOS Intel non effettuano il boot da partizioni GPT
- 9.2 Abilitare i messaggi di debug in GRUB
- 9.3 Correggere l'errore di GRUB "no suitable mode found"
- 9.4 messaggio d'errore msdos-style
- 9.5 GRUB UEFI torna alla shell
- 9.6 GRUB UEFI non viene caricato
- 9.7 Invalid signature
- 9.8 Errore "No such device" all'avvio dopo l'installazione
- 9.9 Freeze al boot
- 9.10 Ripristinare GRUB Legacy
- 9.11 Arch non rilevata da altre distribuzioni
- 10 Riferimenti
- 11 Link esterni
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.
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). - Se si utilizza systemd senza il pacchetto systemd-sysvcompat e si era inserita la linea
init=/usr/lib/systemd/systemd
nel propriomenu.lst
, ilgrub.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 aggiungainit=/usr/lib/systemd/systemd
ai parametri del kernel e si renda permanente l'impostazione. - 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. Se non si desidera ripartizionare il sistema, si effettui il passaggio a Syslinux, che ha dimensioni molto più ridotte (circa 1,5 Mb di spazio occupato in/boot
).
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.
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 GRUB2 (Italiano)#Ripristinare GRUB Legacy
Prerequisiti per GRUB2
Sistemi BIOS
Istruzioni specifiche per GUID Partition Table (GPT)
Nelle accoppiate BIOS-GPT, GRUB richiede una partizione di boot in cui posizionare il suo 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).
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 ef02
se si sta usando (c)gdisk, mentre <BOOT_PART_NUM> bios_grub on
se si usa GParted.
grub-install
o grub-setup
.gdisk
permetterà di creare la partizione in oggetto in modo da ridurre al minimo gli sprechi di spazio (settori 34-2047), dal momento che gdisk
allinea automaticamente le partizioni ai settori multipli di 2048.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
Creazione e montaggio della partizione UEFI di sistema
Si seguano le istruzioni di creazione in Creare una partizione UEFI di sistema. Si proceda quindi al montaggio della partizione in /boot/efi
. Se si è montata tale partizione in qualche altro punto di mount, si sostituisca di conseguenza /boot/efi
nei comandi sottostanti.
# mkdir -p /boot/efi # mount -t vfat <UEFI_SYSTEM_PARTITION> /boot/efi
Si crei inoltre /boot/efi/EFI
# mkdir -p /boot/efi/EFI
Installazione
Sistemi BIOS
E' possibile installare GRUB attraverso il pacchetto grub, il quale sostituirà grub-legacy, se installato.
/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 tre modi per installare i files di boot di GRUB su sistemi BIOS
- #Installazione nella partizione di boot BIOS con schema di partizionamento GPT
- #Installazione nella regione di 440 byte del MBR (consigliata)
- #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 o Syslinux, che effettui il chainload di
/boot/grub/i386-pc/core.img
.
Installazione nella partizione di boot BIOS con schema di partizionamento GPT
Il sistema di partizionamento 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.
Utilizzando GNU Parted, è possibile assegnare tale tipo ad una partizione utilizzando un comando simile al seguente:
# parted /dev/disk set partition-number bios_grub on
Se si sta utilizzando gdisk
, assicurarsi di impostare il tipo della partizione ad OxEF02
. Quando si partiziona con programmi che richiedano l'impostazione diretta del GUID, quest'ultimo dovrà avere valore ‘21686148-6449-6e6f-744e656564454649’
(oppure, Hah!IdontNeedEFI
).
Per installare grub
in un disco partizionato in modalità GPT, popolare la directory /boot/grub
, generare il file /boot/grub/i386-pc/core.img
ed effettuarne l'embedding nella partizione di boot BIOS, eseguire:
# modprobe dm-mod # modprobe part_gpt # grub-install --target=i386-pc --recheck --debug /dev/sda
Dove /dev/sda
è il disco di destinazione.
Si prosegua con GRUB2 (Italiano)#Generare un file di configurazione.
Installazione nella regione di 440 byte del MBR
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
, 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 /dev/sda
è la partizione di destinazione (Nel caso di partizionamento MBR, si riferisce al primo disco SATA). Se si usa LVM per la partizione di /boot
, è possibile installare GRUB2 su tutti i dischi fisici.
Si prosegua con GRUB2 (Italiano)#Generare un file di configurazione.
Installazione su una partizione o su un disco partitionless
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
):
# grub-install --target=i386-pc --recheck --debug --force /dev/sdaX # chattr -i /boot/grub/i386-pc/core.img # chattr +i /boot/grub/i386-pc/core.img
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
.
Si continui con il paragrafo Generare un file di configurazione presentato sotto.
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
Sarà quindi possibile effettuare il chainload del core.img
di GRUB da GRUB Legacy o da syslinux.
Generare un file di configurazione
Si generi quindi un file di configurazione per GRUB (è possibile trovare ulteriori informazioni nella sezione "Configurazione"):
# GRUB_PREFIX="/boot/grub" grub-mkconfig -o /boot/grub/grub.cfg
/boot/grub/grub.cfg
, NON /boot/grub/i386-pc/grub.cfg
.Se GRUB visualizza l'errore "no suitable mode found" durante il boot, si veda #Correggere l'errore di GRUB "no suitable mode found".
Se grub-mkconfig
non va a buon fine, si converta il proprio /boot/grub/menu.lst
in /boot/grub/grub.cfg
usando:
# grub-menulst2cfg /boot/grub/menu.lst /boot/grub/grub.cfg
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 esegua il boot nella shell dei comandi di GRUB Command Shell e si scriva:
sh:grub> insmod legacycfg sh:grub> legacy_configfile ${prefix}/menu.lst
Si effettui il boot in Arch Linux e si ricrei il /boot/grub/grub.cfg
in maniera adeguata.
Multiboot
Quanto segue funzionerà senza ulteriori interventi da parte dell'utente, a patto che os-prober sia installato.
Una volta effettuata l'installazione, si esegua grub-mkconfig -o /boot/grub/grub.conf
.
Se la rilevazione automatica non va a buon fine, è possibile inserire manualmente una voce di menù seguendo le istruzioni proposte sotto.
Avviare Microsoft Windows su sistemi BIOS-MBR
bootmgr
e il chainload del settore di boot non è più richiesto per avviare Windows su configurazioni BIOS-MBR.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:
# 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
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:
Per Windows Vista/7/8:
menuentry "Microsoft Windows Vista/7/8 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 }
Per Windows XP:
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 }
nn
dovrebbe avere un valore superiore a 06
affinchè gli script di sistema siano eseguiti per primi.\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
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.
Sistemi UEFI
Innanzitutto si installi il pacchetto grub, quindi si seguano le istruzioni sotto riportate.
Tenendo conto di questa informazione, si installi il pacchetto adeguato.
- Per firmware UEFI a 64 bit si install il pacchetto grub-efi-x86_64.
- Per firmware UEFI a 32bit si installi il pacchetto grub-efi-i386.
core.efi
e il moduli di GRUB nella partizione di sistema UEFI. Sarà necessario aggiornarli manualmente usando grub-install
, come spiegato sotto.Installare i files di boot di grub-uefi
Installazione nella partizione UEFI di sistema
- I comandi seguenti assumono che si stia installando GRUB per architetture
x86_64-efi
(perIA32-efi
si sostituisca ogni occorrenza dix86_64
coni386
). - 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 questa guida o
grub-install
visualizzerà degli errori.
La partizione UEFI di sistema dovrà essere montata in /boot/efi
affinchè lo script di installazione di GRUB la riconosca:
# mkdir -p /boot/efi # mount -t vfat /dev/sdXY /boot/efi
Si installino quindi l'applicazione UEFI di GRUB e i relativi moduli in /boot/grub/x86_64-efi
(raccomandato) usando:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug
--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
.Se si desidera installare i moduli di GRUB e il grub.cfg
nella directory /boot/efi/EFI/grub
e l'applicazione grubx64.efi
in /boot/efi/EFI/arch_grub
, si utilizzi:
# modprobe dm-mod # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck --debug
L'opzione --efi-directory
indica il punto di mount della partizione UEFI di sistema, --bootloader-id
indica il nome della directory dove verrà installata l'applicazione grubx64.efi
, e --boot-directory
contiente il percorso alla directory di installazione dei moduli (e sarà quindi la sede del file di configurazione grub.cfg
).
I path effettivi sono:
<efi-directory>/<efi o EFI>/<bootloader-id>/grubx64.efi <boot-directory>/grub/x86_64-efi/<tutti i moduli, grub.efi, core.efi, grub.cfg>
--bootloader-id
non cambia il percorso <boot-directory>/grub
. Ad esempio, non si potranno installare i moduli in <boot-directory>/<bootloader-id>
, in quanto il path è hardcoded a <boot-directory>/grub
.Se --efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=grub
<efi-directory>/<efi o EFI>/<bootloader-id> == <boot-directory>/grub == /boot/efi/EFI/grub
Se --efi-directory=/boot/efi --boot-directory=/boot/efi/EFI --bootloader-id=arch
<efi-directory>/<efi o EFI>/<bootloader-id> == /boot/efi/EFI/arch_grub <boot-directory>/grub == /boot/efi/EFI/grub
Se --efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=arch
<efi-directory>/<efi o EFI>/<bootloader-id> == /boot/efi/EFI/arch_grub <boot-directory>/grub == /boot/grub
Se --efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub
<efi-directory>/<efi o EFI>/<bootloader-id> == /boot/efi/EFI/grub <boot-directory>/grub == /boot/grub
Il file <efi-directory>/<efi or EFI>/<bootloader-id>/grubx64.efi
è una copia esatta di <boot-directory>/grub/x86_64-efi/core.efi
.
- A partire da GRUB 2.00, l'opzione
--efi-directory
digrub-install
sostituisce la vecchia--root-directory
, che è deprecata. - Le opzioni
--efi-directory
e--bootloader-id
sono specifiche di GRUB UEFI.
In tutti i casi, la partizione UEFI di sistema dovrà essere montata affinchè grub-install
possa installarvi il grubx64.efi
, che sarà poi lanciato dal firmware (usando la voce creata con efibootmgr, su sistemi non Mac).
Se si controlla attentamente, si noterà l'assenza di un'opzione che specifichi il device su cui installare il bootloader (ad esempio /dev/sda
). Tali opzioni verranno ignorate dallo script di installazione, poichè i bootloaders UEFI non usano l'MBR delle partizioni.
Si sarà ora in grado di effettuare il boot tramite UEFI creando un grub.cfg
seguendo #Generare un file di configurazione per GRUB UEFI e copiando /boot/efi/EFI/grub/grubx64.efi
in /boot/efi/EFI/boot/bootx64.efi
.
Generare un file di configurazione
Si generi un file di configurazione per GRUB usando il seguente comando:
# grub-mkconfig -o <boot-directory>/grub/grub.cfg
<boot-directory>/grub/grub.cfg
, NON <boot-directory>/grub/x86_64-efi/grub.cfg
.Se si è usato --boot-directory=/boot
:
# grub-mkconfig -o /boot/grub/grub.cfg
Se invece si è usato {ic|--boot-directory=/boot/efi/EFI}}:
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
I percorsi di cui sopra sono indipendenti dal valore dell'opzione --bootloader-id
.
Se grub-uefi mostra l'errore "no suitable mode found", si legga #Correggere l'errore di GRUB "no suitable mode found".
Creare una voce per GRUB nel Firmware Boot Manager
Lo script grub-install
cerca di creare autometicamente una voce di menù nel boot manager. Se ciò non dovesse avvenire, si consulti Beginners' Guide#GRUB 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.
Generare un'applicazione UEFI standalone per GRUB
È 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 grub-mkstandalone
, incluso in 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-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>
Il file grubx64_standalone.efi
assume che il grub.cfg
si trovi nel suo $prefix, ovvero (memdisk)/boot/grub
. Il memdisk verrà poi incluso nell'applicazione efi.
Lo script grub-mkstandalone permette di specificare i files da includere nel memdisk come argomenti dello script.
Se, ad esempio, il vostro grub.cfg
risiede in /home/utente/Desktop/grub.cfg
, si crei una directory temporanea /home/utente/Desktop/boot/grub
e si copi il file /home/utente/Desktop/grub.cfg
in /home/utente/Desktop/boot/grub/grub.cfg
; infine, ci si posizioni in /home/utente/Desktop/boot/grub
con il comando cd
e si esegua:
# grub-mkstandalone --directory="/usr/lib/grub-x86_64-efi" --format="x86_64-efi" --compression="xz" \
--output="/boot/efi/EFI/arch_grub/grubx64_standalone.efi" "boot/grub/grub.cfg"
Una piccola precisazione: ci si è posizionati in /home/utente/Desktop/boot/grub
e si è passato il path del grub.cfg come boot/grub/grub.cfg
(si noti l'assenza dello slash iniziale - boot/ vs. /boot/) poichè, ad esempio, un ipotetico file dir1/dir2/file
viene incluso come (memdisk)/dir1/dir2/file
dallo script grub-mkstandalone. Se si passa come argomento /home/utente/Desktop/boot/grub/grub.cfg
, il file verrà incluso come (memdisk)/home/utente/Desktop/boot/grub/grub.cfg
, con tutte le conseguenze del caso.
Sarà ora necessario creare un voce con 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.
Multiboot
Microsoft Windows installato in modalità UEFI GPT
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 bootmgfw.efi
si trova in /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:
# 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
Si aggiunga quindi il codice seguente a /etc/grub.d/40_custom
per effettuare il chainload di Windows su sistemi UEFI-GPT:
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 /boot/grub/grub.cfg
:
# grub-mkconfig -o /boot/grub/grub.cfg
Configurazione
E' possibile generare il grub.cfg
in maniera automatica o modificarlo manualmente.
- Se GRUB è stato installato con l'opzione
--boot-directory
attiva, ilgrub.cfg
dovrà essere posizionato nella stessa directory digrubx64.efi
. In caso contrario, ilgrub.cfg
andrà posizionato in/boot/grub
, come accade per la versione BIOS di GRUB. - Di seguito viene proposta una guida completa alla configurazione di GRUB.
Generazione automatica usando grub-mkconfig
L'equivalente del vecchio menu.lst
è rappresentato dai files /etc/default/grub
e /etc/grub.d/*
. Questi files sono generalmente usati da grub-mkconfig
per generare il /boot/grub/grub.cfg
. Per generare un grub.cfg
si usi il seguente comando:
# grub-mkconfig -o /boot/grub/grub.cfg
/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 /etc/grub.d/40_custom
o /boot/grub/custom.cfg
.
Argomenti aggiuntivi
Se si ha la necessità di passare dei parametri particolari all'immagine del kernel, è necessario inserirli nella variabile GRUB_CMDLINE_LINUX
contenuta nel file /etc/default/grub
.
Ad esempio, per abilitare il resume dopo l'ibernazione, si utilizzi GRUB_CMDLINE_LINUX="resume=/dev/sdaX"
dove sdaX
indica la propria partizione di swap.
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.
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à:
GRUB_CMDLINE_LINUX="resume=/dev/sdaX init=/bin/systemd"
Si veda Kernel parameters per ulteriori informazioni.
Creazione manuale del grub.cfg
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 nometitle
-
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
Usando 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
Per generare un grub.cfg
aggiornato.
Con 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) }
Con 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 }
Con Windows
Se windows è installato in /dev/sda3
:
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
.# (2) Windows XP 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
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
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
Per rendere effettivi i cambiamenti, si esegua:
grub-mkconfig -o /boot/grub/grub.cfg
L'opzione gfxpayload
si assicurerà che la risoluzione venga mantenuta e passata al kernel.
- Se questo esempio non funziona, si provi a sostituire
gfxmode="1024x768x32"
convbemode="0x105"
. - Per elencare tutte le modalità video disponibili è sufficiente lanciare il comando
hwinfo --framebuffer
(hwinfo è disponibile in [community], mentre dal prompt di GRUB si usivbeinfo
(è necessario caricare il modulo vbe prima).
Se questo metodo non funziona, la vecchia opzione vga=
è ancora valida. Si aggiunga vga=
all'opzione GRUB_CMDLINE_LINUX_DEFAULT
in /etc/default/grub
. Ad esempio:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=792"
imposterà una risoluzione di 1024x768.
È possibile scegliere tra le seguenti risoluzioni: 640×480
, 800×600
, 1024×768
, 1280×1024
, 1600×1200
, 1920x1200
.
Hack 915resolution
Se si stanno utilizzando schede grafiche Intel, può accadere che nè # hwinfo --framebuffer
nè 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 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"
/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 Template:Keypress, 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_HIDDEN_TIMEOUT=5 GRUB_HIDDEN_TIMEOUT_QUIET=false
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.
Altre opzioni
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=(md0)
mentre un volume RAID partizionato (es. /dev/md0p1
diventa:
set root=(md0,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 --recheck --debug /dev/sda && grub-install --recheck --debug /dev/sdb
Dove l'array RAID1 che ospita la partizione /boot
è formato da /dev/sda
e /dev/sdb
.
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.
/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
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 }
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
/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.
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'
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 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/00_header
:
/etc/grub.d/00_header
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.
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
.
Un esempio con la root mappata su /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 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.
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}"
.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 Template:Keypress 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 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" . "${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
Avviare un'immagine ISO direttamente da GRUB
Si modifichi /etc/grub.d/40_custom
o /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 grub-mkconfig -o /boot/grub/grub.cfg
(dato da root).
ISO di Arch Linux
/archives
su hd0,6
.x86_64
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/x86_64/vmlinuz archisolabel=ARCH_201305 img_dev=/dev/sda$partition img_loop=$isofile earlymodules=loop initrd (loop)/arch/boot/x86_64/archiso.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
/archives
su 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 questo indirizzo.
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
Tools grafici per la configurazione
È possibile installare i seguenti pacchetti:
- grub-customizer — Consente di personalizzare il bootloader (GRUB o BURG)
- grub2-editor — Control module di KDE4 per configurare GRUB
- kcm-grub2 — Questo modulo KCM consente di gestire le impostazioni più comuni di GRUB
- startupmanager — Applicazione grafica per cambiare le impostazioni di GRUB Legacy, GRUB, Usplash e Splashy (abbandonato)
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 (hdX,Y)/boot/grub/linux.mod
/boot
dal percorso. (esempio: set prefix=(hdX,Y)/grub and insmod (hdX,Y)/grub/linux.mod
).Ciò rende disponibili i comandi linux
ed initrd
, che dovrebbero essere familiari (si veda #Configurazione).
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
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 del Bootloader 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).
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
Sistemi con BIOS Intel non effettuano il boot da partizioni 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.
È 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 Template:Keypress e si selezioni la partizione da contrassegnare come avviabile (probabilmente la prima) utilizzando il numero corrispondente e infine si prema Template:Keypress per scrivere le modifiche nel MBR.
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.
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
abilitata, allora il percorso è /boot/efi/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 GRUB2 (Italiano)#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
.
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 /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 grub.cfg
. È anche possibile risolvere il problema costringendo GRUB ad identificare i dischi fissi come root=/dev/xxx
al posto del classico root=/dev/disk/by-uuid/xxx
. Si noti tuttavia che questa opzione non è stata testata e potrebbe richiedere la modifica manuale del grub.cfg
.
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
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
- Manuale ufficiale di GRUB - http://www.gnu.org/software/grub/manual/grub.html
- Pagina del wiki di Ubuntu su GRUB - https://help.ubuntu.com/community/Grub2
- Pagina del wiki di GRUB che spiega come compilarlo per sistemi UEFI - http://help.ubuntu.com/community/UEFIBooting
- La pagina di Wikipedia relativa alla partizione di Boot del BIOS.