Guida a GRUB 2: differenze tra le versioni

m
(27 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
{{Stub}}{{Versioni compatibili}}
{{Versioni compatibili}}
=Introduzione=
=Introduzione=


Riga 5: Riga 5:


Con questa guida si intende analizzare la versione di Grub 1.x nota anche come GRUB2. Per la versione precedente, rinominata ora [[Guida a Grub | Grub Legacy]], fare riferimento all'altra guida.
Con questa guida si intende analizzare la versione di Grub 1.x nota anche come GRUB2. Per la versione precedente, rinominata ora [[Guida a Grub | Grub Legacy]], fare riferimento all'altra guida.
Per un rapido scorcio sulle differenze tra i due ed i possibili comandi utilizzabili da shell rimando [http://grub.enbug.org/CommandList qui]
Per un rapido scorcio sulle differenze tra i due ed i possibili comandi utilizzabili da shell rimando [http://www.gnu.org/software/grub/manual/html_node/Commands.html qui]


Il presente HOWTO nasce dalla traduzione del [http://grub.enbug.org/Manual#head-ac682374c934903ada4062842a0f92ac5d0ec8df wiki di GRUB 2] poi successivamente rivisto ed integrato con altri spunti tratti dalla rete.
Il presente HOWTO nasce dalla traduzione del [defunto] wiki di GRUB 2, poi successivamente rivisto ed integrato con altri spunti tratti dalla rete.


Grub è uno strumento molto potente che dovrebbe essere sempre presente nella scatola degli attrezzi di ogni amante del Free Software. Con Grub è possibile avviare qualsiasi Sistema Operativo ed anche altri bootloader.
Grub è uno strumento molto potente che dovrebbe essere sempre presente nella scatola degli attrezzi di ogni amante del Free Software. Con Grub è possibile avviare qualsiasi Sistema Operativo ed anche altri bootloader.
Riga 35: Riga 35:
Pertanto si può osservare una separazione da quello che è il bootloader proprio (/boot/grub) e quelle che sono le utility necessarie alla sua configurazione (/etc/grub.d e script di configurazione). Inoltre con /etc/grub.d il menù ha assunto una forma modulare, disponendo di uno script di configurazione per ogni voce del menù.
Pertanto si può osservare una separazione da quello che è il bootloader proprio (/boot/grub) e quelle che sono le utility necessarie alla sua configurazione (/etc/grub.d e script di configurazione). Inoltre con /etc/grub.d il menù ha assunto una forma modulare, disponendo di uno script di configurazione per ogni voce del menù.


Si sottolinea che la directory /boot/grub è modificata, o creata ex novo, tramite il comando <tt>grub-install</tt>, lo stesso comando che provvede inoltre all'installazione di GRUB sul punto di boot.
Si sottolinea che la directory /boot/grub è modificata, o creata ex novo, tramite il comando <code>grub-install</code>, lo stesso comando che provvede inoltre all'installazione di GRUB sul punto di boot.


==/etc/grub.d/==
==/etc/grub.d/==
In questa directory ci sono i file con cui viene costruita la configurazione di GRUB2.
In questa directory ci sono i file con cui viene costruita la configurazione di GRUB2.
Infatti la configurazione vera e propria si trova nel file <code>/boot/grub/grub.cfg</code>, e viene scritta tramite un comando apposito della shell (<tt>grub-mkconfig</tt>), che prende il contenuto dei file che si trovano in <code>/etc/grub.d</code> e lo scrive in grub.cfg: per verificare, usare il comando <code>$ less /boot/grub/grub.cfg</code>.
Infatti la configurazione vera e propria si trova nel file <code>/boot/grub/grub.cfg</code>, e viene scritta tramite un comando apposito della shell (<code>grub-mkconfig</code>), che prende il contenuto dei file che si trovano in <code>/etc/grub.d</code> e lo scrive in grub.cfg: per verificare, usare il comando <code>$ less /boot/grub/grub.cfg</code>.
I file vengono aggiunti a <code>grub.cfg</code> in ordine alfabetico (ciò spiega il nome con un numero iniziale), e vengono aggiunti solo se sono eseguibili (per renderli tali, si usa il comando <code># chmod +x nomefile</code>).
I file vengono aggiunti a <code>grub.cfg</code> in ordine alfabetico (ciò spiega il nome con un numero iniziale), e vengono aggiunti solo se sono eseguibili (per renderli tali, si usa il comando <code># chmod +x nomefile</code>).
I nomi dei file sono abbastanza esplicativi. Probabilmente i più interessanti per gli utenti sono <code>05_debian_theme</code> e <code>40_custom</code>, come si vede qui di seguito.
I nomi dei file sono abbastanza esplicativi. Probabilmente i più interessanti per gli utenti sono <code>05_debian_theme</code> e <code>40_custom</code>, come si vede qui di seguito.
Riga 49: Riga 49:
Un utente esperto può avere ulteriori indicazioni esaminando il file <code>05_debian_theme</code>, che regola appunto la procedura per la selezione dello sfondo.
Un utente esperto può avere ulteriori indicazioni esaminando il file <code>05_debian_theme</code>, che regola appunto la procedura per la selezione dello sfondo.


{{Box|Requisiti immagini|Le immagini da usare come sfondo devono essere di tipo RGB e non indicizzate (''indexed'').}}
{{Box|Requisiti immagini|
* Le immagini da usare come sfondo devono essere di tipo RGB e non indicizzate (''indexed'').
* Le immagini devono essere del tipo supportato: jpg, png, tga.
}}


==== 1.98-1 ====
==== 1.98-1 ====
Riga 66: Riga 69:
** Per estensione, jpg, JPG, jpeg, JPEG, png, PNG, tga, TGA.
** Per estensione, jpg, JPG, jpeg, JPEG, png, PNG, tga, TGA.
** Nel caso di più immagini con la stessa estensione, criterio alfanumerico.
** Nel caso di più immagini con la stessa estensione, criterio alfanumerico.
Se è installato un ambiente grafico si aggiungono i seguenti controlli:
 
* Immagine specificata in <code>/usr/share/desktop-base/grub_backgorund.sh</code> attraverso la variabile ''WALLPAPER''.
Se è installato un ambiente grafico come gnome (ma non kde) si aggiungono i seguenti controlli:
* Immagine specificata in <code>/usr/share/desktop-base/grub_background.sh</code> attraverso la variabile ''WALLPAPER'' (da notare che la directory home e le relative sottocartelle '''potrebbero non essere una posizione valida''' per l'immagine che si intende usare).
* <code>/usr/share/images/desktop-base/desktop-grub.png</code>
* <code>/usr/share/images/desktop-base/desktop-grub.png</code>


Ricordarsi di lanciare sempre <code>update-grub</code> per rendere effettive le modifiche.<br />
Ricordarsi di lanciare sempre <code>update-grub</code> per rendere effettive le modifiche.<br />
Se per un motivo o per un altro nessuno dei precedenti restituisce un immagine valida grub2 opta per lo sfondo di default.
Se per un motivo o per un altro nessuno dei precedenti restituisce un immagine valida grub2 opta per lo sfondo di default.
=== Personalizzare i colori del menù ===
La procedura varia leggermente a seconda che si sia o meno definito uno sfondo personalizzato e/o si abbia installato un ambiente grafico come gnome.
==== Nessuna immagine di sfondo ====
Qualora non si sia definita alcuna immagine di sfondo per grub è necessario editare il file <code>/etc/grub.d/05_debian_theme</code> e cercare il seguente pezzo di codice:
<pre>
set_default_theme(){
        # Set the traditional Debian blue theme.
        echo "${1}set menu_color_normal=cyan/blue"
        echo "${1}set menu_color_highlight=white/blue"
}
</pre>
La prima variabile definisce i colori del testo non evidenziato, viceversa la seconda riguarda il testo evidenziato; in entrambi i casi è solo e soltanto il testo interno alla cornice di grub ad essere modificato, tutto il resto non lo è. Per modificare il testo esterno alla cornice serve infatti una terza variabile, ovvero <code>color_normal</code>.
A prescindere dalla variabile considerata si tratta sempre di dichiarare due colori separati dal carattere "/": il primo definisce il colore del testo, il secondo quello del suo sfondo.
L'utente può quindi commentare le due righe relative alle variabili e quindi copiarle per poterle modificare a suo piacimento, ad esempio ottenendo quanto segue:
<pre>
set_default_theme(){
        # Set the traditional Debian blue theme.
        #echo "${1}set menu_color_normal=cyan/blue"
        #echo "${1}set menu_color_highlight=white/blue"
        echo "${1}set menu_color_normal=blue/yellow"
        echo "${1}set menu_color_highlight=yellow/blue"
        echo "${1}set color_normal=red/green"
}
</pre>
I colori possibili sono:
* ''black'';
* ''light-gray'' e ''dark-gray'';
* ''blu'' e ''light-blue'';
* ''brown'';
* ''cyan'' e ''light-cyan'';
* ''green'' e ''light-green'';
* ''magenta'' e ''light-magenta'';
* ''red'' e ''light-red'';
* ''yellow'';
* ''white'';
Si noti che usare black come colore di sfondo significa di norma imporre uno sfondo trasparente.
==== Con immagine di sfondo ====
Per quanto riguarda i colori vale quanto detto al punto precedente. Si fa notare che il nome delle variabili relative al testo contenuto all'interno della cornice di grub cambia, mentre la terza variabile diviene inutilizzabile (non c'è più cioè distinzione tra colore interno ed esterno alla cornice di grub).
===== GNOME NON installato =====
Cercare in <code>/etc/grub.d/05_debian_theme</code> il seguente pezzo di codice
<pre>
        if [ -z "${2}" ] && [ -z "${3}" ]; then
                echo "  true"
        fi
</pre>
e cambiarlo in
<pre>
        if [ -z "${2}" ] && [ -z "${3}" ]; then
                echo "  true"
                echo "set color_normal=light-green/black"
                echo "set color_highlight=blue/light-green"
        fi
</pre>
dove ovviamente l'utente dovrà mettere la combinazione di colori da lui desiderata.
===== GNOME installato =====
Nel caso sia stato installato un ambiente grafico come gnome è sufficiente editare il file <code>/usr/share/desktop-base/grub_backgorund.sh</code> e cambiare i colori specificati dalle variabili <code>COLOR_NORMAL</code> e <code>COLOR_HIGHLIGHT</code>.


===Cambiare la risoluzione del terminale===
===Cambiare la risoluzione del terminale===
La risoluzione del terminale successiva alla schermata di scelta del kernel si imposta semplicemente inserendo il parametro <code>set gfxpayload</code> nel file <code>40_custom</code>; nel caso il suddetto file non sia mai stato modificato il risultato dovrebbe essere simile a quanto segue (posto di aver scelto una risoluzione di 1024x768):
La risoluzione del terminale successiva alla schermata di scelta del kernel si imposta semplicemente inserendo il parametro <code>set gfxpayload</code> nel file <code>/etc/grub.d/40_custom</code>; nel caso il suddetto file non sia mai stato modificato il risultato dovrebbe essere simile a quanto segue (posto di aver scelto una risoluzione di 1024x768):
<pre>
<pre>
#!/bin/sh
#!/bin/sh
Riga 83: Riga 153:
set gfxpayload=1024x768x24
set gfxpayload=1024x768x24
</pre>
</pre>
Attenzione ad inserire dei valori compatibili con l' hardware in uso: entrando nella command-line di grub2, usare il comando <code>vbeinfo</code> per vedere quali risoluzioni sono supportate.
Attenzione ad inserire dei valori compatibili con l' hardware in uso: entrando nella command-line di grub2, usare il comando <code>vbeinfo</code> per vedere quali risoluzioni sono supportate.<br/>
Se l'utente desiderasse cambiare anche la risoluzione del menu di scelta del kernel, allora  deve in primis editare il file <code>/etc/grub/default</code> decommentando la riga
Se l'utente desiderasse cambiare anche la risoluzione del menu di scelta del kernel, allora  deve in primis editare il file <code>/etc/default/grub</code> decommentando la riga
<pre>
<pre>
#GRUB_GFXMODE=640x480
#GRUB_GFXMODE=640x480
Riga 91: Riga 161:
<pre># update-grub</pre>
<pre># update-grub</pre>
per rendere attive le modifiche.
per rendere attive le modifiche.
=== Scegliere il kernel di default ===
Per scegliere un [[kernel]] di avvio presente nel sotto-menù "Opzioni avanzate per Debian GNU/Linux", è necessario modificare il file "/etc/default/grub". Ad esempio:
<pre>
GRUB_DEFAULT="1>2"
</pre>
In questo modo viene fatto partire il kernel specificato nella terza voce del primo sotto-menù.<br/>
Allo stesso modo con:
<pre>
GRUB_DEFAULT="2>4"
</pre>
viene scelto all'avvio la quinta voce del secondo sotto-menù (nel caso si fosse creato un sotto-menù aggiuntivo).<br/>
Il comando:
<pre>
# update-grub
</pre>
rende effettivi i cambiamenti.<br/>
Prestare attenzione al fatto che la numerazione dei sotto-menù inizia da 1 mentre quella della rispettive voci inizia da 0. Inoltre i doppi apici sono obbligatori.
=== Tastiera italiana ===
Poiché il layout predefinito della tastiera, durante l'editing all'interno di Grub, è quello americano, ci si trova nella situazione di andare un po' alla cieca per "indovinare" alcuni tasti.<br/>
Per fare in modo da utilizzare il layout della tastiera italiana, bisogna innanzitutto creare il layout all'interno della directory "/boot/grub/":
<pre>
# grub-kbdcomp -o /boot/grub/tastieraitaliana.gkb it
</pre>
e poi modificare il file <code>/etc/grub.d/40_custom</code> aggiungendovi le seguenti righe:
<pre>
# Righe aggiunte per il layout della tastiera italiana
insmod keylayouts
keymap /boot/grub/tastieraitaliana.gkb
terminal_input at_keyboard
</pre>
Queste righe vanno inserite alla fine del file.
Infine bisogna rendere effettivi i cambiamenti:
<pre>
# update-grub
</pre>
Si notino tre cose:
* Il primo comando potrebbe produrre alcuni errori dovuti a tasti non riconosciuti. Questi messaggi non inficiano l'esito del comando stesso.
* Alcuni tasti (es. le lettere accentate) continuano a non essere disponibili all'interno dell'editing di Grub.
* Il primo comando è valido solo per [[Jessie]] e versioni di Debian superiori. Per [[Wheezy]] bisognerà affidarsi al comando "ckbcomp" per la creazione del layout della tastiera italiana:<pre># ckbcomp it | grub-mklayout -o /boot/grub/tastieraitaliana.gkb</pre>


==/etc/default/grub==
==/etc/default/grub==
Riga 110: Riga 223:
Ora che abbiamo una idea di cosa sia e come funzioni GRUB2, in questa sezione analizzeremo l'interazione con i principali comandi shell disponibili per interfacciarsi con GRUB2.
Ora che abbiamo una idea di cosa sia e come funzioni GRUB2, in questa sezione analizzeremo l'interazione con i principali comandi shell disponibili per interfacciarsi con GRUB2.
==Lista comandi principali per settare GRUB2==
==Lista comandi principali per settare GRUB2==
I seguenti comandi sono funzionali al settaggio ed installazione di GRUB2. I comandi da dare culmineranno con <tt>grub-install</tt> che esegue l'effettiva modifica del punto di boot (Master Boot Record).
I seguenti comandi sono funzionali al settaggio ed installazione di GRUB2. I comandi da dare culmineranno con <code>grub-install</code> che esegue l'effettiva modifica del punto di boot (Master Boot Record).


* grub-probe: per indicare dove cercare i kernel, quali moduli utilizzare, cosa attualmente è presente.
* grub-probe: per indicare dove cercare i kernel, quali moduli utilizzare, cosa attualmente è presente.
Riga 128: Riga 241:
Questo comando ha la finalità di creare [[#I file principali|il file grub.cfg]]. Quest'ultimo è comunque editabile a mano (ad esempio si può invertire l'ordine di boot) ma si sconsiglia vivamente di intervenire con modifiche eccessive, specialmente se non si è più che sicuri di quello che si sta facendo.
Questo comando ha la finalità di creare [[#I file principali|il file grub.cfg]]. Quest'ultimo è comunque editabile a mano (ad esempio si può invertire l'ordine di boot) ma si sconsiglia vivamente di intervenire con modifiche eccessive, specialmente se non si è più che sicuri di quello che si sta facendo.


La grande comodità di GRUB risiede anche nel fatto che l'editazione del file di configurazione sia del tutto automatica. Se si osserva infatti la cartella [[/etc/grub.d/]], si nota che questa è composta da una serie di script che hanno la funzione di individuare gli eventuali sistemi operativi installati e determinarne i parametri necessari al boot. Ovviamente per permettere a GRUB2 di eseguire tale analisi è necessario che le partizioni contenenti gli altri sistemi operativi sia montate.
La grande comodità di GRUB risiede anche nel fatto che l'editazione del file di configurazione sia del tutto automatica. Se si osserva infatti la cartella <code>/etc/grub.d/</code>, si nota che questa è composta da una serie di script che hanno la funzione di individuare gli eventuali sistemi operativi installati e determinarne i parametri necessari al boot. Ovviamente per permettere a GRUB2 di eseguire tale analisi è necessario che le partizioni contenenti gli altri sistemi operativi sia montate.


Pertanto il risultato che si otterrà con grub-mkconfig sarà la creazione del file /boot/grub/grub.cfg con le opzioni indicate nella cartella /etc/grub.d/ e con inseriti nell'elenco di GRUB tutti i SO che sono stati individuati sulle partizioni montate.
Pertanto il risultato che si otterrà con grub-mkconfig sarà la creazione del file /boot/grub/grub.cfg con le opzioni indicate nella cartella /etc/grub.d/ e con inseriti nell'elenco di GRUB tutti i SO che sono stati individuati sulle partizioni montate.
Riga 148: Riga 261:
Nel seguente esempio viene installato GRUB2 su una chiavetta USB (nel specifico caso /dev/sdb) per caricare il sistema operativo installato sulla chiavetta stessa (la cui root è temporaneamente montata in ~/usbdrive)
Nel seguente esempio viene installato GRUB2 su una chiavetta USB (nel specifico caso /dev/sdb) per caricare il sistema operativo installato sulla chiavetta stessa (la cui root è temporaneamente montata in ~/usbdrive)
<pre># grub-install --root-directory=~/usbdrive/ /dev/sdb</pre>
<pre># grub-install --root-directory=~/usbdrive/ /dev/sdb</pre>
Per maggiori informazioni, leggere [http://grub.enbug.org/UseCases/Ubuntu qui].
Per maggiori informazioni, leggere [http://www.pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux/ qui].


=Prompt di GRUB, come risolvere i problemi=
=Prompt di GRUB, come risolvere i problemi=
Riga 157: Riga 270:
Ecco un riassunto dei principali comandi da sapere per risolvere gli eventuali problemi. Eseguendo i comandi nell'ordine riportato dovrebbe essere possibile avviare il proprio sistema operativo.
Ecco un riassunto dei principali comandi da sapere per risolvere gli eventuali problemi. Eseguendo i comandi nell'ordine riportato dovrebbe essere possibile avviare il proprio sistema operativo.
* help: mostra tutti i comandi disponibili;
* help: mostra tutti i comandi disponibili;
* ls: come in bash (LiSt) mostra i file presenti. Il comando <tt>ls /</tt> mostra cosa grub utilizza quale /boot. Se correttamente indicata dovrebbe esserci almeno un kernel presente...
* ls: come in bash (LiSt) mostra i file presenti. Il comando <code>ls /</code> mostra cosa grub utilizza quale /boot. Se correttamente indicata dovrebbe esserci almeno un kernel presente...
* cat (/boot/)grub/grub.cfg: legge il file grub.cfg, utile per comprendere l'errore avvenuto in fase di boot;
* cat (/boot/)grub/grub.cfg: legge il file grub.cfg, utile per comprendere l'errore avvenuto in fase di boot;
* set root=/dev/sda2: identifica la cartella di root, il parametro può essere dato assieme al comando linux come segue;
* set root=/dev/sda2: identifica la cartella di root, il parametro può essere dato assieme al comando linux come segue;
Riga 203: Riga 316:
* Reinstallare GRUB dall'OS ripristinando il menù.
* Reinstallare GRUB dall'OS ripristinando il menù.


===Si ferma a <tt>grub></tt>===
===Si ferma a <code>grub></code>===
Sintomi:
Sintomi:
* Visualizzo il solo grub prompt
* Visualizzo il solo grub prompt
Riga 248: Riga 361:
=Ripristinare GRUB 2 da una live CD/USB=
=Ripristinare GRUB 2 da una live CD/USB=


http://grub.enbug.org/Grub2LiveCdInstallGuide
https://help.ubuntu.com/community/Grub2/Installing#Fixing_a_Broken_System


=Utilità=
=Utilità=
Riga 254: Riga 367:
==Tastiera italiana-americana==
==Tastiera italiana-americana==
Se ci si ritrova nel prompt di grub, la configurazione della tastiera disponibile sarà quella americana. Per fortuna sono entrambe del tipo QWERTY, ma vi sono alcune differenze con gli altri caratteri. Ad esempio:
Se ci si ritrova nel prompt di grub, la configurazione della tastiera disponibile sarà quella americana. Per fortuna sono entrambe del tipo QWERTY, ma vi sono alcune differenze con gli altri caratteri. Ad esempio:
(= Shift+9
{| class="wikitable"
)= Shift+0
! Tastiera americana
= = ì
! Tastiera italiana
- = '
|-
_ = ?
| ( || )
|-
| ) || =
|-
| = ||  ì
|-
| - || '
|-
| _ || ?
|-
| / || -
|}
Per cambiare il layout della tastiera, si legga [[#Tastiera italiana|questo paragrafo]].
 
=Sitografia=
=Sitografia=
Ecco alcuni link utili dove possibile reperire maggiori informazioni:
Ecco alcuni link utili dove possibile reperire maggiori informazioni:
* [http://grub.enbug.org/FrontPage Pagina del progetto GRUB]
* [http://www.gnu.org/software/grub/ Pagina del progetto GRUB]


{{Autori
|Autore = [[Utente:Risca86|Risca86]] 09:37, 4 mag 2010 (CEST)
|Verificata_da =
|Estesa_da =
:[[Utente:wtf|wtf]]
}}


----
[[Categoria: Grub2]]
Autore: risca 09:37, 4 mag 2010 (CEST)
3 581

contributi