Guida a GRUB 2: differenze tra le versioni
Wtf (discussione | contributi) |
Wtf (discussione | contributi) |
||
(21 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
=Introduzione= | == Introduzione == | ||
{{ Warningbox | La presente guida è solo una bozza e deve essere ancora revisionata. Attenzione a impartire gli ordini a GRUB, un errato input potrebbe rendere il sistema non più caricabile. }} | {{ Warningbox | La presente guida è solo una bozza e deve essere ancora revisionata. Attenzione a impartire gli ordini a GRUB, un errato input potrebbe rendere il sistema non più caricabile. }} | ||
Riga 12: | Riga 12: | ||
{{Box | | Versione di riferimento al momento della stesura della presente guida: grub 1.98 }} | {{Box | | Versione di riferimento al momento della stesura della presente guida: grub 1.98 }} | ||
==Principale differenze tra GRUB Legacy e GRUB 2== | === Principale differenze tra GRUB Legacy e GRUB 2 === | ||
* Il file menu.lst non controlla più il menù | * Il file <code>menu.lst</code> non controlla più il menù, ora gestito tramite <code>grub.cfg</code>. | ||
* Il file <code>grub.cfg</code> è generato autonomamente dagli script di GRUB 2. | |||
* Il file grub.cfg è generato autonomamente dagli script di GRUB 2. | |||
* Il sistema di numerazione delle partizioni è leggermente diverso. | * Il sistema di numerazione delle partizioni è leggermente diverso. | ||
* Cambia leggermente la sintassi del file menu.lst (GRUB 1) rispetto a grub.cfg (GRUB 2) e non è direttamente importabile in quest'ultimo. | * Cambia leggermente la sintassi del file <code>menu.lst</code> (GRUB 1) rispetto a <code>grub.cfg</code> (GRUB 2) e non è direttamente importabile in quest'ultimo. | ||
Per saperne di più su [[Guida a Grub | GRUB 1, seguire il link]]. Per GRUB 2 continuate a leggere! | Per saperne di più su [[Guida a Grub | GRUB 1, seguire il link]]. Per GRUB 2 continuate a leggere! | ||
==Grub 2 in Debian== | === Grub 2 in Debian === | ||
Qualora sulla vostra Debian non sia presente grub 2, i pacchetti di riferimento sono i seguenti: | Qualora sulla vostra Debian non sia presente grub 2, i pacchetti di riferimento sono i seguenti: | ||
:- grub-pc | :- <code>grub-pc</code> | ||
:- grub-common | :- <code>grub-common</code> | ||
=Configurazione= | |||
==I file principali== | == Configurazione == | ||
=== I file principali === | |||
I file per la vostra configurazione dovrebbero trovarsi nei seguenti tre percorsi: | I file per la vostra configurazione dovrebbero trovarsi nei seguenti tre percorsi: | ||
* /etc/default/grub: contiene configurazioni generali, autogenerate da grub-set-default, che generalmente non richiedono cambiamenti (secondi al boot, dimensione schermata...). | * <code>/etc/default/grub</code>: contiene configurazioni generali, autogenerate da grub-set-default, che generalmente non richiedono cambiamenti (secondi al boot, dimensione schermata...). | ||
* /etc/grub.d/: è la cartella che contiene degli script di shell i quali generano il menù di grub. | * <code>/etc/grub.d/</code>: è la cartella che contiene degli script di shell i quali generano il menù di grub. | ||
* /boot/grub/: qui il bootloader cerca i file di configurazione (grub.conf). N.B.: questi sono generati dagli script contenuti in /etc/grub, modificare quindi questi ultimi se non si vuole che le modifiche vengano sovrascritte. | * <code>/boot/grub/</code>: qui il bootloader cerca i file di configurazione (grub.conf). N.B.: questi sono generati dagli script contenuti in <code>/etc/grub</code>, modificare quindi questi ultimi se non si vuole che le modifiche vengano sovrascritte. | ||
===Osservazioni=== | ==== Osservazioni ==== | ||
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 (<code>/boot/grub</code>) e quelle che sono le utility necessarie alla sua configurazione (/etc/grub.d e script di configurazione). Inoltre con <code>/etc/grub.d</code> 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 <code>grub-install</code>, lo stesso comando che provvede inoltre all'installazione di GRUB sul punto di boot. | Si sottolinea che la directory <code>/boot/grub</code> è 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 (<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>. | 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. | ||
==== Impostare uno sfondo ==== | |||
La prima cosa da sottolineare è che il metodo per impostare lo sfondo di grub2 può cambiare nel tempo col rilascio di nuove versioni. Il lettore pertanto deve per prima cosa individuare la sua versione di grub2: | La prima cosa da sottolineare è che il metodo per impostare lo sfondo di grub2 può cambiare nel tempo col rilascio di nuove versioni. Il lettore pertanto deve per prima cosa individuare la sua versione di grub2: | ||
<pre># grub-install -v</pre> | <pre># grub-install -v</pre> | ||
Riga 54: | Riga 54: | ||
}} | }} | ||
==== 1.98-1 ==== | ===== 1.98-1 ===== | ||
Bisogna modificare la variabile <code>WALLPAPER</code> del file <code>05_debian_theme</code>.<br /> | Bisogna modificare la variabile <code>WALLPAPER</code> del file <code>05_debian_theme</code>.<br /> | ||
A questo punto si può intervenire in 2 modi: o modificando direttamente il file <code>05_debian_theme</code>, oppure copiando <code>05_debian_theme</code> in un nuovo file, ad esempio <code>07_mio_debian_theme</code> (lo scrivente preferisce il secondo metodo, allo scopo di tenere una copia intatta del file originale), ricordando di renderlo eseguibile con <code># chmod +x 07_mio_debian_theme</code> e di disattivare il file originale con <code># chmod a-x 05_debian_theme</code>. | A questo punto si può intervenire in 2 modi: o modificando direttamente il file <code>05_debian_theme</code>, oppure copiando <code>05_debian_theme</code> in un nuovo file, ad esempio <code>07_mio_debian_theme</code> (lo scrivente preferisce il secondo metodo, allo scopo di tenere una copia intatta del file originale), ricordando di renderlo eseguibile con <code># chmod +x 07_mio_debian_theme</code> e di disattivare il file originale con <code># chmod a-x 05_debian_theme</code>. | ||
Riga 61: | Riga 60: | ||
L' output del comando <code>grub-mkconfig</code> ci dirà se l' immagine sarà impostata correttamente tramite il messaggio <code>Found background image: nome_file</code>. | L' output del comando <code>grub-mkconfig</code> ci dirà se l' immagine sarà impostata correttamente tramite il messaggio <code>Found background image: nome_file</code>. | ||
==== 1.98-5 e successivi ==== | ===== 1.98-5 e successivi ===== | ||
Esistono diverse possibilità, che in ordine gerarchico sono: | Esistono diverse possibilità, che in ordine gerarchico sono: | ||
Riga 77: | Riga 75: | ||
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ù === | ==== 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. | 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 ==== | ===== 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: | 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> | <pre> | ||
Riga 117: | Riga 113: | ||
Si noti che usare black come colore di sfondo significa di norma imporre uno sfondo trasparente. | Si noti che usare black come colore di sfondo significa di norma imporre uno sfondo trasparente. | ||
==== Con immagine di sfondo ==== | ===== 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). | 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 ===== | ====== GNOME NON installato ====== | ||
Cercare in <code>/etc/grub.d/05_debian_theme</code> il seguente pezzo di codice | Cercare in <code>/etc/grub.d/05_debian_theme</code> il seguente pezzo di codice | ||
<pre> | <pre> | ||
Riga 139: | Riga 133: | ||
dove ovviamente l'utente dovrà mettere la combinazione di colori da lui desiderata. | dove ovviamente l'utente dovrà mettere la combinazione di colori da lui desiderata. | ||
===== GNOME installato ===== | ====== 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>. | 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>/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): | 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> | ||
Riga 162: | Riga 155: | ||
per rendere attive le modifiche. | per rendere attive le modifiche. | ||
=== Scegliere il kernel di default === | ==== 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: | 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> | <pre> | ||
Riga 180: | Riga 173: | ||
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. | 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 === | ==== 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/> | 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/": | Per fare in modo da utilizzare il layout della tastiera italiana, bisogna innanzitutto creare il layout all'interno della directory "/boot/grub/": | ||
Riga 205: | Riga 198: | ||
* 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> | * 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 === | ||
In questo file ci sono altri parametri da configurare, ben commentati. | In questo file ci sono altri parametri da configurare, ben commentati. | ||
Un parametro interessante è <code>GRUB_GFXMODE</code>: serve ad impostare la risoluzione di grub2 (non del terminale, che viene impostata con <code>set gfxpayload</code>). 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 /> | Un parametro interessante è <code>GRUB_GFXMODE</code>: serve ad impostare la risoluzione di grub2 (non del terminale, che viene impostata con <code>set gfxpayload</code>). 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 /> | ||
Riga 213: | Riga 206: | ||
<br>Per scrivere effettivamente la configurazione è necessario usare il comando <code># update-grub</code>. Questo ultimo comando è necessario anche in caso di modifica del file <code>/etc/default/grub</code>. | <br>Per scrivere effettivamente la configurazione è necessario usare il comando <code># update-grub</code>. Questo ultimo comando è necessario anche in caso di modifica del file <code>/etc/default/grub</code>. | ||
==Altri file rilevanti== | === Altri file rilevanti === | ||
In questa sezione si riportano alcuni file che, seppure non essenziali alla configurazione di GRUB, possono essere d'aiuto nella sua configurazione o nella risoluzione di eventuali problematiche. | In questa sezione si riportano alcuni file che, seppure non essenziali alla configurazione di GRUB, possono essere d'aiuto nella sua configurazione o nella risoluzione di eventuali problematiche. | ||
: /boot/grub/device.map | : <code>/boot/grub/device.map</code>, qui è riportata la corrispondenza tra i nomi degli Hard Disk secondo Debian (/dev/sdX... /dev/hdX...) rispetto alla nomenclatura di GRUB. | ||
==Modificare il menù di GRUB== | === Modificare il menù di GRUB === | ||
=Comandi shell per la gestione e l'installazione di GRUB= | == Comandi shell per la gestione e l'installazione di GRUB == | ||
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 <code>grub-install</code> 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). | ||
* <code>grub-probe</code>: per indicare dove cercare i kernel, quali moduli utilizzare, cosa attualmente è presente. | |||
* <code>grub-mkconfig</code>: genera il file di configurazione grub.cfg | |||
* <code>grub-mkimage</code>: crea immagine binaria di GRUB bootabile. | |||
* <code>grub-setup</code>: scrive GRUB sull'HD specificato. | |||
* <code>grub-install</code>: esegue una serie di operazioni tale da rendere il sistema avviabile, come specificato in seguito. | |||
I comandi sopra elencati porteranno ad avere GRUB configurato ed installato sul proprio MBR.<br/> | |||
Per avere più informazioni sui comandi elencati rimando alle man pages ed a internet. In particolare, per alcuni programmi, valgono le seguenti riflessioni. | |||
==== <code>grub-mkconfig</code> ==== | |||
==== | |||
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 | 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. | ||
==== | ==== <code>grub-install</code> ==== | ||
Il programma grub-install è uno script abbastanza articolato con la funzione di rendere il nostro sistema bootabile. A grandi linee i compiti che svolge sono i seguenti: | Il programma grub-install è uno script abbastanza articolato con la funzione di rendere il nostro sistema bootabile. A grandi linee i compiti che svolge sono i seguenti: | ||
# Serie di comandi di verifica quali: | # Serie di comandi di verifica quali: | ||
Riga 257: | Riga 245: | ||
# Grub-mkimage crea core.img secondo le opzioni finora individuate. | # Grub-mkimage crea core.img secondo le opzioni finora individuate. | ||
# È lanciato grub-setup per la scrittura sul Master Boot Record. | # È lanciato grub-setup per la scrittura sul Master Boot Record. | ||
=====Installare GRUB 2 su chiavetta USB===== | ===== Installare GRUB 2 su chiavetta USB ===== | ||
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://www.pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux/ qui]. | Per maggiori informazioni, leggere [http://www.pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux/ qui]. | ||
=Prompt di GRUB, come risolvere | == Prompt di GRUB, come risolvere eventuali problemi == | ||
Quando qualcosa va storto con la configurazione indicata nel menù di avvio di GRUB (ad esempio non trova il kernel), allora bisogna accedere al seguente prompt: | Quando qualcosa va storto con la configurazione indicata nel menù di avvio di GRUB (ad esempio non trova il kernel), allora bisogna accedere al seguente prompt: | ||
<pre>grub></pre> | <pre>grub></pre> | ||
Vengono resi disponibili una serie di comandi tale da rendere possibile l'analisi dell'errore e rendere un sistema caricabile. | Vengono resi disponibili una serie di comandi tale da rendere possibile l'analisi dell'errore e rendere un sistema caricabile. | ||
==lista comandi== | |||
=== lista comandi === | |||
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; | * <code>help</code>: mostra tutti i comandi disponibili; | ||
* 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... | * <code>ls</code>: 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; | * <code>cat (/boot/)grub/grub.cfg</code>: legge il file <code>grub.cfg</code>, utile per comprendere l'errore avvenuto in fase di boot; | ||
* set root=/dev/sda2: | * </code>set root=/dev/sda2</code>: dichiara la cartella di root (in questo esempio <code>/dev/sda2</code>), il parametro può essere dato assieme al comando <code>linux</code> come indicato nel prossimo punto; | ||
* linux (hd0,2)/boot/vmlinuz-<alternate_version> root=/dev/sda2: il comando linux ha la funzione di caricare il kernel in ram. Nell'esempio riportato viene caricato il kernel presente sulla seconda partizione del primo device (hd0,2) utilizzando come cartella di root la medesima partizione (/dev/sda2); | * <code>linux (hd0,2)/boot/vmlinuz-<alternate_version> root=/dev/sda2</code>: il comando linux ha la funzione di caricare il kernel in ram. Nell'esempio riportato viene caricato il kernel presente sulla seconda partizione del primo device <code>(hd0,2)</code> utilizzando come cartella di root la medesima partizione (<code>/dev/sda2</code>); | ||
* linux16 /memtest86+: comando simile a linux, ma per immagini a 16 bit quale ad esempio il memtest; | * <code>linux16 /memtest86+</code>: comando simile a linux, ma per immagini a 16 bit quale ad esempio il memtest; | ||
* initrd /initrd-<your_initrd>: carica in memoria l'initrd (se necessario); | * <code>initrd /initrd-<your_initrd></code>: carica in memoria l'initrd (se necessario); | ||
* boot: avvia il kernel caricato in memoria | * <code>boot</code>: avvia il kernel caricato in memoria | ||
Inoltre si segnala: | Inoltre si segnala: | ||
* insmode < | * <code>insmode nome_modulo</code>: carica il modulo indicato, utile sia per caricare i moduli del RAID o LVM, sia per passare dal prompt ''grub-rescue'' a ''grub normale''. | ||
Con i comandi finora elencati dovreste essere in grado di cavarvela in ogni situazione. Per dare un aiuto ecco un elenco di situazioni tipiche e di possibili modi di procedere. | === Situazioni di panico! === | ||
Penso capiti a tutti almeno una volta: il sistema non parte.<br/> | |||
Innanzi tutto state tranquilli, se il problema è legato a GRUB allora il vostro sistema è ancora salvo e non aspetta altro che essere lanciato. La situazione sarà facilmente ripristinabile senza dover ricorrere a soluzioni estreme.<br/> | |||
Con i comandi finora elencati dovreste essere in grado di cavarvela in ogni situazione. | |||
{{Box|Nota|I motivi che possono causare un problema sono molteplici, dall'aggiunta di un nuovo hard disk all'installazione di un nuovo sistema operativo. I casi sono esposti per sintomi, senza fare riferimento alle possibili cause.}} | |||
Per dare un aiuto ecco un elenco di situazioni tipiche e di possibili modi di procedere. | |||
=== Si vedono i drive, ma questi non vengono caricati === | |||
===Si vedono i drive ma non vengono caricati=== | |||
Sintomi: | Sintomi: | ||
* My machine came with another OS installed, I tried to install Linux/HURD/L4, and now it "won't boot at all", aka | * My machine came with another OS installed, I tried to install Linux/HURD/L4, and now it "won't boot at all", aka | ||
* My BIOS can't seem to find an OS on the drive, aka | * My BIOS can't seem to find an OS on the drive, aka | ||
* GRUB non sembra trovare il bootloader. | * GRUB non sembra trovare il bootloader. | ||
Cause: | Cause: | ||
* È presente un primo loader che punta in un posto errato (es. cambiato ordine degli Hard Disk); | * È presente un primo loader che punta in un posto errato (es. cambiato ordine degli Hard Disk); | ||
* Il menù è stato eliminato e/o la sua voce principale è erranea. | * Il menù è stato eliminato e/o la sua voce principale è erranea. | ||
Soluzioni: | Soluzioni: | ||
* Entrare nel menù di GRUB e provare un'altra voce. | * Entrare nel menù di GRUB e provare un'altra voce. | ||
* Boot da un LiveCD. | * Boot da un LiveCD. | ||
=== | === Viene caricato direttamente un OS senza passare da GRUB === | ||
Sintomi: | Sintomi: | ||
* Dovrei vedere il menù di GRUB, ma viene caricato direttamente l'OS. | * Dovrei vedere il menù di GRUB, ma viene caricato direttamente l'OS. | ||
Cause: | Cause: | ||
* Il menù è off/soppresso? | * Il menù è off/soppresso? | ||
* È possibile che un OS di un'altra partizioni abbia (re)installato il un boatloader e per qualche ragione sovrascritto GRUB 2? | * È possibile che un OS di un'altra partizioni abbia (re)installato il un boatloader e per qualche ragione sovrascritto GRUB 2? | ||
Soluzioni: | Soluzioni: | ||
* Provare ad entrare nel GRUB menù/shell. | * Provare ad entrare nel GRUB menù/shell. | ||
Riga 316: | Riga 300: | ||
* Reinstallare GRUB dall'OS ripristinando il menù. | * Reinstallare GRUB dall'OS ripristinando il menù. | ||
=== | === "No such device" error === | ||
Questo errore si presenterà probabilmente se si è creata una nuova partizione di root copiando tutti i dati dalla vecchia. Poiché l'<code>UUID</code> della nuova partizione è differente da quello della vecchia GRUB non trova più la partizione da avviare. | |||
{{Cautionbox|È probabile che questo problema si verifiche anche se avete già provveduto ad aggiornare manualmente l'UUID sia in <code>/etc/fstab</code> che nella corrispondente sezione ''menu entry'' di <code>/boot/grub/grub.cfg</code>}} | |||
Il primo passo è visualizzare tutti i dispositivi disponibili | |||
<pre>grub_rescue> ls</pre> | |||
che stamperà a video qualcosa di simile a: | |||
<pre>(hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (md/0) ...</pre> | |||
Ipotizzato che la partizione da avviare sia <code>(md/0)</code> digitare i seguenti comandi: | |||
<pre> | |||
set prefix="(md/0)/boot/grub" | |||
set root="(md/0)" | |||
insmod normal | |||
normal | |||
</pre> | |||
Dopo aver digitato l'ultimo comando il sistema dovrebbe riavviarsi normalmente.<br/> | |||
È molto probabile che il problema si ripresenti tale e quale dopo un riavvio, pertanto se così fosse ripetere i passi sopra elencati e dopo aver avviato normalmente reinstallare GRUB col senguente comando: | |||
<pre># apt reinstall grub2-common grub-efi-amd64</pre> | |||
A questo punto il sistema dovrebbe avviarsi normalmente ad ogni avvio. | |||
=== L'avvio si arresta mostrando <code>grub></code> === | |||
Sintomi: | Sintomi: | ||
* Visualizzo il solo grub prompt | * Visualizzo il solo grub prompt | ||
<pre> Welcome to GRUB! | <pre> Welcome to GRUB! | ||
grub> | grub> | ||
</pre> | |||
oppure | oppure | ||
<pre>grub rescue></pre> | |||
grub rescue></pre> | |||
Cause: | Cause: | ||
* GRUB 2 non riesce a trovare il file grub.cfg. | * GRUB 2 non riesce a trovare il file <code>grub.cfg</code>. | ||
* Il file grub.cfg è completamente inutilizzabile. | * Il file <code>grub.cfg</code> è completamente inutilizzabile. | ||
Soluzioni: | Soluzioni: | ||
* cat /grub/grub.cfg. Se la parola 'title' compare da qualche parte in una "stanzas", allora qualcuno ha copiato le opzioni direttamente dal file menu.cfg di GRUB Legacy. | * cat <code>/grub/grub.cfg</code>. Se la parola 'title' compare da qualche parte in una "stanzas", allora qualcuno ha copiato le opzioni direttamente dal file menu.cfg di GRUB Legacy. | ||
* Provare dei comandi di shell per verificare come sono visualizzati i drive in GRUB 2, vedere la configurazione e trovare qualche file (immagine del kernel) che sia caricabile. | * Provare dei comandi di shell per verificare come sono visualizzati i drive in GRUB 2, vedere la configurazione e trovare qualche file (immagine del kernel) che sia caricabile. | ||
==Errori del menù | === Errori del menù (''Stanza Problems'') === | ||
Sintomi: | Sintomi: | ||
* Si visualizza un menù ma non carica il sitema. | * Si visualizza un menù ma non carica il sitema. | ||
* Compare un menù per alcuni secondi, prova ad eseguire il loading ma fallisce/torna al menù. | * Compare un menù per alcuni secondi, prova ad eseguire il loading ma fallisce/torna al menù. | ||
* I briefly see some kind of complaint (such as what) and it kicks me into GRUB | * I briefly see some kind of complaint (such as what) and it kicks me into GRUB | ||
Cause: | Cause: | ||
* The more subtle items, like the caveats above. | * The more subtle items, like the caveats above. | ||
Riga 346: | Riga 344: | ||
* Problemi di UUID | * Problemi di UUID | ||
* Differenze di path/drive tra ciò che è indicato nel menù e cosa invece è stato indicato al momento dell'installazione di GRUB. | * Differenze di path/drive tra ciò che è indicato nel menù e cosa invece è stato indicato al momento dell'installazione di GRUB. | ||
Soluzione: | Soluzione: | ||
* Entrare, premendo 'e' quando compare il menù, nel prompt di GRUB e cercare di identificare un sistema bootabile. | * Entrare, premendo 'e' quando compare il menù, nel prompt di GRUB e cercare di identificare un sistema bootabile. | ||
==Nulla funziona== | === Nulla funziona === | ||
Ricorrere allora ad [[Ripristinare GRUB 2 da una live CD/USB | una live e ripristinare da lì GRUB]]. | Ricorrere allora ad [[Ripristinare GRUB 2 da una live CD/USB | una live e ripristinare da lì GRUB]]. | ||
Restore Windows boot-menu entry | === Restore Windows boot-menu entry === | ||
Sometimes upgrading to grub2 removes your windows partition from the grub menu. | Sometimes upgrading to grub2 removes your windows partition from the grub menu. | ||
Follow this to get your gaming platform back: ChainLoadWindows | Follow this to get your gaming platform back: ChainLoadWindows | ||
=Ripristinare GRUB 2 da una live CD/USB= | == Ripristinare GRUB 2 da una live CD/USB == | ||
https://help.ubuntu.com/community/Grub2/Installing#Fixing_a_Broken_System | [https://help.ubuntu.com/community/Grub2/Installing#Fixing_a_Broken_System Fixing a Broken System] | ||
=Utilità= | == Utilità == | ||
Qui seguono alcune note che possono essere di aiuto in casi particolari. | Qui seguono alcune note che possono essere di aiuto in casi particolari. | ||
==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: | ||
{| class="wikitable" | {| class="wikitable" | ||
Riga 385: | Riga 381: | ||
Per cambiare il layout della tastiera, si legga [[#Tastiera italiana|questo paragrafo]]. | 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://www.gnu.org/software/grub/ Pagina del progetto GRUB] | * [http://www.gnu.org/software/grub/ Pagina del progetto GRUB] | ||
* [https://superuser.com/questions/359417/linux-installation-wont-boot-due-to-grub-no-such-device-error/791825 Linux installation won't boot due to grub "no such device" error] | |||
{{Autori | {{Autori |
Versione attuale delle 12:56, 30 giu 2024
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
ATTENZIONE La presente guida è solo una bozza e deve essere ancora revisionata. Attenzione a impartire gli ordini a GRUB, un errato input potrebbe rendere il sistema non più caricabile. |
Con questa guida si intende analizzare la versione di Grub 1.x nota anche come GRUB2. Per la versione precedente, rinominata ora Grub Legacy, fare riferimento all'altra guida. Per un rapido scorcio sulle differenze tra i due ed i possibili comandi utilizzabili da shell rimando qui
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.
Versione di riferimento al momento della stesura della presente guida: grub 1.98 |
Principale differenze tra GRUB Legacy e GRUB 2
- Il file
menu.lst
non controlla più il menù, ora gestito tramitegrub.cfg
. - Il file
grub.cfg
è generato autonomamente dagli script di GRUB 2. - Il sistema di numerazione delle partizioni è leggermente diverso.
- Cambia leggermente la sintassi del file
menu.lst
(GRUB 1) rispetto agrub.cfg
(GRUB 2) e non è direttamente importabile in quest'ultimo.
Per saperne di più su GRUB 1, seguire il link. Per GRUB 2 continuate a leggere!
Grub 2 in Debian
Qualora sulla vostra Debian non sia presente grub 2, i pacchetti di riferimento sono i seguenti:
- -
grub-pc
- -
grub-common
Configurazione
I file principali
I file per la vostra configurazione dovrebbero trovarsi nei seguenti tre percorsi:
/etc/default/grub
: contiene configurazioni generali, autogenerate da grub-set-default, che generalmente non richiedono cambiamenti (secondi al boot, dimensione schermata...)./etc/grub.d/
: è la cartella che contiene degli script di shell i quali generano il menù di grub./boot/grub/
: qui il bootloader cerca i file di configurazione (grub.conf). N.B.: questi sono generati dagli script contenuti in/etc/grub
, modificare quindi questi ultimi se non si vuole che le modifiche vengano sovrascritte.
Osservazioni
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 grub-install
, lo stesso comando che provvede inoltre all'installazione di GRUB sul punto di boot.
/etc/grub.d/
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 /boot/grub/grub.cfg
, e viene scritta tramite un comando apposito della shell (grub-mkconfig
), che prende il contenuto dei file che si trovano in /etc/grub.d
e lo scrive in grub.cfg: per verificare, usare il comando $ less /boot/grub/grub.cfg
.
I file vengono aggiunti a grub.cfg
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 # chmod +x nomefile
).
I nomi dei file sono abbastanza esplicativi. Probabilmente i più interessanti per gli utenti sono 05_debian_theme
e 40_custom
, come si vede qui di seguito.
Impostare uno sfondo
La prima cosa da sottolineare è che il metodo per impostare lo sfondo di grub2 può cambiare nel tempo col rilascio di nuove versioni. Il lettore pertanto deve per prima cosa individuare la sua versione di grub2:
# grub-install -v
Fatto ciò può scegliere il metodo a lui adatto; si noti tuttavia che l'indicazione delle versioni nel seguito deve essere intesa come indicazione generale, questo perché è difficile conoscere per ogni singola versione di grub2 il corretto metodo corrispondente.
Un utente esperto può avere ulteriori indicazioni esaminando il file 05_debian_theme
, che regola appunto la procedura per la selezione dello sfondo.
Requisiti immagini
|
1.98-1
Bisogna modificare la variabile WALLPAPER
del file 05_debian_theme
.
A questo punto si può intervenire in 2 modi: o modificando direttamente il file 05_debian_theme
, oppure copiando 05_debian_theme
in un nuovo file, ad esempio 07_mio_debian_theme
(lo scrivente preferisce il secondo metodo, allo scopo di tenere una copia intatta del file originale), ricordando di renderlo eseguibile con # chmod +x 07_mio_debian_theme
e di disattivare il file originale con # chmod a-x 05_debian_theme
.
Dopodichè basta modificare nel nuovo file la riga n. 10 del file, impostando la variabile WALLPAPER
con il percorso che porta al file che abbiamo scelto come sfondo (attualmente sono supportati file png, tga, jpg, come si può vedere nella parte # check for usable backgrounds
che si trova di seguito nel file).
L' output del comando grub-mkconfig
ci dirà se l' immagine sarà impostata correttamente tramite il messaggio Found background image: nome_file
.
1.98-5 e successivi
Esistono diverse possibilità, che in ordine gerarchico sono:
- Editare il file
/etc/default/grub
e aggiungere la variabileGRUB_BACKGROUND=/percorso/file/immagine
. - Prima immagine trovata in
/boot/grub
, secondo i seguenti criteri- Per estensione, jpg, JPG, jpeg, JPEG, png, PNG, tga, TGA.
- Nel caso di più immagini con la stessa estensione, criterio alfanumerico.
Se è installato un ambiente grafico come gnome (ma non kde) si aggiungono i seguenti controlli:
- Immagine specificata in
/usr/share/desktop-base/grub_background.sh
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). /usr/share/images/desktop-base/desktop-grub.png
Ricordarsi di lanciare sempre update-grub
per rendere effettive le modifiche.
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 /etc/grub.d/05_debian_theme
e cercare il seguente pezzo di codice:
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" }
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 color_normal
.
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:
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" }
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 /etc/grub.d/05_debian_theme
il seguente pezzo di codice
if [ -z "${2}" ] && [ -z "${3}" ]; then echo " true" fi
e cambiarlo in
if [ -z "${2}" ] && [ -z "${3}" ]; then echo " true" echo "set color_normal=light-green/black" echo "set color_highlight=blue/light-green" fi
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 /usr/share/desktop-base/grub_backgorund.sh
e cambiare i colori specificati dalle variabili COLOR_NORMAL
e COLOR_HIGHLIGHT
.
Cambiare la risoluzione del terminale
La risoluzione del terminale successiva alla schermata di scelta del kernel si imposta semplicemente inserendo il parametro set gfxpayload
nel file /etc/grub.d/40_custom
; 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):
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. set gfxpayload=1024x768x24
Attenzione ad inserire dei valori compatibili con l' hardware in uso: entrando nella command-line di grub2, usare il comando vbeinfo
per vedere quali risoluzioni sono supportate.
Se l'utente desiderasse cambiare anche la risoluzione del menu di scelta del kernel, allora deve in primis editare il file /etc/default/grub
decommentando la riga
#GRUB_GFXMODE=640x480
ed inserendo la risoluzione desiderata (vale quanto detto prima sulle risoluzioni supportate); sucessivamente editare il file 40_custom
aggiungendo set gfxpayload=keep
(invece di set gfxpayload=1024x768x24
). Come sempre digitare
# update-grub
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:
GRUB_DEFAULT="1>2"
In questo modo viene fatto partire il kernel specificato nella terza voce del primo sotto-menù.
Allo stesso modo con:
GRUB_DEFAULT="2>4"
viene scelto all'avvio la quinta voce del secondo sotto-menù (nel caso si fosse creato un sotto-menù aggiuntivo).
Il comando:
# update-grub
rende effettivi i cambiamenti.
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.
Per fare in modo da utilizzare il layout della tastiera italiana, bisogna innanzitutto creare il layout all'interno della directory "/boot/grub/":
# grub-kbdcomp -o /boot/grub/tastieraitaliana.gkb it
e poi modificare il file /etc/grub.d/40_custom
aggiungendovi le seguenti righe:
# Righe aggiunte per il layout della tastiera italiana insmod keylayouts keymap /boot/grub/tastieraitaliana.gkb terminal_input at_keyboard
Queste righe vanno inserite alla fine del file.
Infine bisogna rendere effettivi i cambiamenti:
# update-grub
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:
# ckbcomp it | grub-mklayout -o /boot/grub/tastieraitaliana.gkb
/etc/default/grub
In questo file ci sono altri parametri da configurare, ben commentati.
Un parametro interessante è GRUB_GFXMODE
: serve ad impostare la risoluzione di grub2 (non del terminale, che viene impostata con set gfxpayload
). Attenzione ad inserire dei valori compatibili con l' hardware in uso: entrando nella command-line di grub2, usare il comando vbeinfo
per vedere quali risoluzioni sono supportate.
Sono importanti anche GRUB_CMDLINE_LINUX_DEFAULT
e GRUB_CMDLINE_LINUX
: servono per passare parametri al kernel linux.
Rendere effettiva la configurazione
Ogni volta che si modifica un file in /etc/grub.d
bisogna generare il file /boot/grub/grub.cfg
. Si può avere un'anteprima del grub.cfg che sarebbe generato tramite il comando # grub-mkconfig
: l'anteprima sarà visualizzata come output a terminale, ma nessun file verrà scritto. Si può utilizzare l'opzione -o per scrivere il risultato su un file anche qualunque; es: # grub-mkconfig -o ~/nome_file_a_scelta
.
Per scrivere effettivamente la configurazione è necessario usare il comando # update-grub
. Questo ultimo comando è necessario anche in caso di modifica del file /etc/default/grub
.
Altri file rilevanti
In questa sezione si riportano alcuni file che, seppure non essenziali alla configurazione di GRUB, possono essere d'aiuto nella sua configurazione o nella risoluzione di eventuali problematiche.
/boot/grub/device.map
, qui è riportata la corrispondenza tra i nomi degli Hard Disk secondo Debian (/dev/sdX... /dev/hdX...) rispetto alla nomenclatura di GRUB.
Modificare il menù di GRUB
Comandi shell per la gestione e l'installazione di GRUB
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
I seguenti comandi sono funzionali al settaggio ed installazione di GRUB2. I comandi da dare culmineranno con grub-install
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-mkconfig
: genera il file di configurazione grub.cfggrub-mkimage
: crea immagine binaria di GRUB bootabile.grub-setup
: scrive GRUB sull'HD specificato.grub-install
: esegue una serie di operazioni tale da rendere il sistema avviabile, come specificato in seguito.
I comandi sopra elencati porteranno ad avere GRUB configurato ed installato sul proprio MBR.
Per avere più informazioni sui comandi elencati rimando alle man pages ed a internet. In particolare, per alcuni programmi, valgono le seguenti riflessioni.
grub-mkconfig
Questo comando ha la finalità di creare 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.
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.
grub-install
Il programma grub-install è uno script abbastanza articolato con la funzione di rendere il nostro sistema bootabile. A grandi linee i compiti che svolge sono i seguenti:
- Serie di comandi di verifica quali:
- verifica che i comandi grub-setup, grub-mkimage e grub-mkdevicemap siano stati eseguiti con successo e correttamente;
- se non presente crea la cartella /boot/grub e la riempie;
- crea, qualora non presente, la device.map.
- Lancia grub-probe (usando i moduli presenti in /boot/grub) per generare core.img (secondo la variabile --root-directory=):
- individua il File System;
- legge la tabella di partizioni sul supporto da scrivere;
- individua su di esso altre possibili astrazioni (LVM, RAID...).
- Grub-mkimage crea core.img secondo le opzioni finora individuate.
- È lanciato grub-setup per la scrittura sul Master Boot Record.
Installare GRUB 2 su chiavetta USB
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)
# grub-install --root-directory=~/usbdrive/ /dev/sdb
Per maggiori informazioni, leggere qui.
Prompt di GRUB, come risolvere eventuali problemi
Quando qualcosa va storto con la configurazione indicata nel menù di avvio di GRUB (ad esempio non trova il kernel), allora bisogna accedere al seguente prompt:
grub>
Vengono resi disponibili una serie di comandi tale da rendere possibile l'analisi dell'errore e rendere un sistema caricabile.
lista comandi
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;ls
: come in bash (LiSt) mostra i file presenti. Il comandols /
mostra cosa grub utilizza quale /boot. Se correttamente indicata dovrebbe esserci almeno un kernel presente...cat (/boot/)grub/grub.cfg
: legge il filegrub.cfg
, utile per comprendere l'errore avvenuto in fase di boot;- set root=/dev/sda2: dichiara la cartella di root (in questo esempio
/dev/sda2
), il parametro può essere dato assieme al comandolinux
come indicato nel prossimo punto; linux (hd0,2)/boot/vmlinuz-<alternate_version> root=/dev/sda2
: il comando linux ha la funzione di caricare il kernel in ram. Nell'esempio riportato viene caricato il kernel presente sulla seconda partizione del primo device(hd0,2)
utilizzando come cartella di root la medesima partizione (/dev/sda2
);linux16 /memtest86+
: comando simile a linux, ma per immagini a 16 bit quale ad esempio il memtest;initrd /initrd-<your_initrd>
: carica in memoria l'initrd (se necessario);boot
: avvia il kernel caricato in memoria
Inoltre si segnala:
insmode nome_modulo
: carica il modulo indicato, utile sia per caricare i moduli del RAID o LVM, sia per passare dal prompt grub-rescue a grub normale.
Situazioni di panico!
Penso capiti a tutti almeno una volta: il sistema non parte.
Innanzi tutto state tranquilli, se il problema è legato a GRUB allora il vostro sistema è ancora salvo e non aspetta altro che essere lanciato. La situazione sarà facilmente ripristinabile senza dover ricorrere a soluzioni estreme.
Con i comandi finora elencati dovreste essere in grado di cavarvela in ogni situazione.
Per dare un aiuto ecco un elenco di situazioni tipiche e di possibili modi di procedere.
Si vedono i drive, ma questi non vengono caricati
Sintomi:
- My machine came with another OS installed, I tried to install Linux/HURD/L4, and now it "won't boot at all", aka
- My BIOS can't seem to find an OS on the drive, aka
- GRUB non sembra trovare il bootloader.
Cause:
- È presente un primo loader che punta in un posto errato (es. cambiato ordine degli Hard Disk);
- Il menù è stato eliminato e/o la sua voce principale è erranea.
Soluzioni:
- Entrare nel menù di GRUB e provare un'altra voce.
- Boot da un LiveCD.
Viene caricato direttamente un OS senza passare da GRUB
Sintomi:
- Dovrei vedere il menù di GRUB, ma viene caricato direttamente l'OS.
Cause:
- Il menù è off/soppresso?
- È possibile che un OS di un'altra partizioni abbia (re)installato il un boatloader e per qualche ragione sovrascritto GRUB 2?
Soluzioni:
- Provare ad entrare nel GRUB menù/shell.
- Boot da un LiveCD.
- Reinstallare GRUB dall'OS ripristinando il menù.
"No such device" error
Questo errore si presenterà probabilmente se si è creata una nuova partizione di root copiando tutti i dati dalla vecchia. Poiché l'UUID
della nuova partizione è differente da quello della vecchia GRUB non trova più la partizione da avviare.
Il primo passo è visualizzare tutti i dispositivi disponibili
grub_rescue> ls
che stamperà a video qualcosa di simile a:
(hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (md/0) ...
Ipotizzato che la partizione da avviare sia (md/0)
digitare i seguenti comandi:
set prefix="(md/0)/boot/grub" set root="(md/0)" insmod normal normal
Dopo aver digitato l'ultimo comando il sistema dovrebbe riavviarsi normalmente.
È molto probabile che il problema si ripresenti tale e quale dopo un riavvio, pertanto se così fosse ripetere i passi sopra elencati e dopo aver avviato normalmente reinstallare GRUB col senguente comando:
# apt reinstall grub2-common grub-efi-amd64
A questo punto il sistema dovrebbe avviarsi normalmente ad ogni avvio.
L'avvio si arresta mostrando grub>
Sintomi:
- Visualizzo il solo grub prompt
Welcome to GRUB! grub>
oppure
grub rescue>
Cause:
- GRUB 2 non riesce a trovare il file
grub.cfg
. - Il file
grub.cfg
è completamente inutilizzabile.
Soluzioni:
- cat
/grub/grub.cfg
. Se la parola 'title' compare da qualche parte in una "stanzas", allora qualcuno ha copiato le opzioni direttamente dal file menu.cfg di GRUB Legacy. - Provare dei comandi di shell per verificare come sono visualizzati i drive in GRUB 2, vedere la configurazione e trovare qualche file (immagine del kernel) che sia caricabile.
Errori del menù (Stanza Problems)
Sintomi:
- Si visualizza un menù ma non carica il sitema.
- Compare un menù per alcuni secondi, prova ad eseguire il loading ma fallisce/torna al menù.
- I briefly see some kind of complaint (such as what) and it kicks me into GRUB
Cause:
- The more subtle items, like the caveats above.
- Also end up here when utilities don't guess/create menu entries correctly.
- Problemi di UUID
- Differenze di path/drive tra ciò che è indicato nel menù e cosa invece è stato indicato al momento dell'installazione di GRUB.
Soluzione:
- Entrare, premendo 'e' quando compare il menù, nel prompt di GRUB e cercare di identificare un sistema bootabile.
Nulla funziona
Ricorrere allora ad una live e ripristinare da lì GRUB.
Sometimes upgrading to grub2 removes your windows partition from the grub menu. Follow this to get your gaming platform back: ChainLoadWindows
Ripristinare GRUB 2 da una live CD/USB
Utilità
Qui seguono alcune note che possono essere di aiuto in casi particolari.
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:
Tastiera americana | Tastiera italiana |
---|---|
( | ) |
) | = |
= | ì |
- | ' |
_ | ? |
/ | - |
Per cambiare il layout della tastiera, si legga questo paragrafo.
Sitografia
Ecco alcuni link utili dove possibile reperire maggiori informazioni:
Guida scritta da: Risca86 09:37, 4 mag 2010 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |