GRUB 2 è il boot loader e manager predefinito per Ubuntu dalla versione 9.10 (Karmic Koala). All’avvio del computer, GRUB 2 presenta un menu e attende l’input dell’utente o trasferisce automaticamente il controllo al kernel del sistema operativo. GRUB 2 è un discendente di GRUB (GRand Unified Bootloader). È stato completamente riscritto per fornire all’utente una flessibilità e prestazioni significativamente maggiori. GRUB 2 è software libero.
In questa guida, GRUB 2 è la versione 1.98 o successiva. GRUB legacy (versione 0.97) sarà indicato come GRUB. Per determinare la tua versione, usa grub-install -V. La versione 1.99 di Grub è diventata quella predefinita su Ubuntu 11.04 (Natty Narwhal) e ha introdotto alcuni importanti cambiamenti nel contenuto del file Grub. Questa guida copre l’uso di Grub 1.98, la versione di Grub trovata in Ubuntu 10.04 LTS (Lucid Lynx). e Grub 1.99, confezionato con Ubuntu 12.04 LTS (Precise Pangolin). I contenuti che riflettono altre versioni di Grub 2 saranno annotati nella voce appropriata.
Miglioramenti
I principali miglioramenti di Grub 2 rispetto al GRUB originale includono:
- Supporto per lo scripting, incluse istruzioni e funzioni condizionali
- Caricamento dinamico dei moduli
- Modalità di salvataggio
- Menu personalizzati
- Temi
- Supporto per menu di avvio grafico e capacità splash migliorata
- Eseguire il boot di immagini ISO LiveCD direttamente dal disco rigido
- Nuova struttura dei file di configurazione
- Supporto per piattaforme nonx86 (come PowerPC)
- Supporto universale per gli UUID (non solo Ubuntu)
GRUB vs GRUB 2
Il menu di default di GRUB 2 sembrerà familiare agli utenti di GRUB ma ci sono un gran numero di differenze sotto la superficie.
- Su una nuova installazione di Ubuntu 9.10 o successiva senza altri sistemi operativi installati, GRUB 2 si avvia direttamente al prompt di login o al Desktop. Non verrà visualizzato alcun menu.
- Tenere premuto (a destra) SHIFT per visualizzare il menu durante l’avvio. In alcuni casi, anche la pressione del tasto ESC può visualizzare il menu.
-
Niente /boot/grub/menu.lst. È stato sostituito da /boot/grub/grub.cfg.
- Non c’è “/find boot/grub/stage1” al prompt di grub. Lo stadio 1.5 è stato eliminato.
-
Il principale file di configurazione di Grub 2, normalmente situato nella cartella /boot/grub, è grub.cfg. È il prodotto di vari script e normalmente non dovrebbe essere modificato direttamente.
-
grub.cfg viene sovrascritto da alcuni aggiornamenti dei pacchetti di Grub 2, ogni volta che un kernel viene aggiunto o rimosso, o quando l’utente esegue update-grub.
-
La lista dei kernel Linux disponibili viene generata automaticamente eseguendo update-grub.
-
L’utente può creare un file personalizzato in cui inserire le proprie voci di menu. Questo file non verrà sovrascritto. Per impostazione predefinita, un file personalizzato chiamato 40_custom è disponibile nella cartella /etc/grub.d.
-
Il file di configurazione principale per cambiare le impostazioni di visualizzazione dei menu è chiamato grub e di default si trova nella cartella /etc/default.
-
Ci sono più file per configurare il menu – /etc/default/grub menzionato sopra, e tutti i file nella cartella /etc/grub.d/.
-
La numerazione delle partizioni è cambiata. La prima partizione è ora 1 anziché 0. Il primo dispositivo/unità è ancora hd0 per default (nessun cambiamento). Queste denominazioni possono essere modificate se necessario nel file device.map nella cartella /boot/grub.
-
La ricerca automatica di altri sistemi operativi, come Windows, viene effettuata ogni volta che update-grub viene eseguito. I sistemi operativi trovati saranno inseriti nel menu di Grub 2.
-
Le modifiche fatte nei file di configurazione non avranno effetto fino a quando il comando update-grub non verrà eseguito.
Aggiornare a GRUB 2 da GRUB
GRUB 2 è il bootloader predefinito per Ubuntu. Gli utenti che hanno ancora installato Grub 0.97 sui loro sistemi Ubuntu possono aggiornare a GRUB 2 installando le versioni attualmente supportate di Ubuntu o abilitando i repository che contengono il pacchetto GRUB 2 grub-pc.
Si prega di visitare la documentazione della comunità Grub2/Upgrading per ulteriori informazioni e istruzioni.
Struttura dei file
GRUB 2 incorpora una gerarchia di cartelle e file totalmente rivista. Le principali cartelle di GRUB 2 includono /etc/grub.d, che contiene i principali script di GRUB 2, e /boot/grub, che contiene i moduli di GRUB 2 e il file dei menu (grub.cfg). Le personalizzazioni dell’utente sono normalmente fatte nel file /etc/default/grub.
La descrizione delle principali cartelle e file di GRUB 2 si trova nella pagina di documentazione della comunità Grub2/Setup.
Configurare GRUB 2
Le modifiche alla configurazione sono normalmente apportate al file /etc/default/grub e agli script personalizzati situati in /etc/grub.d. Nessuna modifica viene apportata al menu di GRUB 2 fino a quando il comando update-grub viene eseguito come root. Questo comando esegue gli script di configurazione di GRUB 2 e aggiorna il file /boot/grub/grub.cfg.
Le descrizioni delle opzioni di GRUB 2 e come cambiarle sono presentate nella pagina di documentazione della comunità Grub2/Setup.
Comportamento della visualizzazione del boot
GRUB 2 viene caricato prima di qualsiasi sistema operativo. I suoi componenti modulari sono caricati in base alle necessità. Il comportamento di visualizzazione dei menu è generalmente determinato dalle impostazioni in /etc/default/grub. Si legga la sezione “Configurare GRUB 2” qui sopra per una guida specifica all’inserimento e alla formattazione.
Initial Default
- Se non viene rilevato nessun altro sistema operativo GRUB 2 si avvierà direttamente nel sistema operativo di default e non verrà visualizzato alcun menu.
- Se viene rilevato un altro sistema operativo verrà visualizzato il menu di GRUB 2.
Visualizzazione temporizzata
-
Il menu viene visualizzato per un numero predeterminato di secondi. La voce predefinita è evidenziata e altre selezioni possono essere fatte dall’utente fino alla scadenza del timeout. Il timeout predefinito è di 2 secondi. Il timer continua finché non viene premuto un tasto qualsiasi o la voce evidenziata viene selezionata premendo ENTER.
- Se nessun input dell’utente viene fatto GRUB 2 avvia la voce di default alla fine del periodo di timeout.
- Una volta che un tasto è stato premuto il timeout è disattivato e l’utente deve fare una selezione manualmente.
-
La voce di default è determinata dall’impostazione GRUB_DEFAULT= in /etc/default/grub; la prima “menuentry” ha un valore di “0”.
Nascosto
- Normali operazioni nascoste abilitate:
- Non vengono visualizzate voci di menu. Lo splash screen, se configurato, viene visualizzato.
-
Il tempo in cui lo schermo rimane vuoto ma disponibile per la visualizzazione è determinato da un’impostazione in /etc/default/grub (GRUB_HIDDEN_TIMEOUT)
-
GRUB 2 può mostrare un timer per il conto alla rovescia per fornire un feedback visivo sul tempo rimanente fino alla scelta della selezione di default. L’impostazione del timeout è abilitata in /etc/default/grub (GRUB_HIDDEN_TIMEOUT_QUIET)
- L’utente può visualizzare il menu premendo qualsiasi tasto.
- Una volta che il menu viene visualizzato, il contatore GRUB_TIMEOUT inizia. La pressione di un qualsiasi tasto ferma il conto alla rovescia.
-
Se nessun tasto viene premuto entro la fine del timeout verrà selezionata la voce di default determinata dalle impostazioni in /etc/default/grub.
-
- Una volta che il menu viene visualizzato, il contatore GRUB_TIMEOUT inizia. La pressione di un qualsiasi tasto ferma il conto alla rovescia.
- Operazioni del menu nascosto non previste (anormale):
- L’utente può essere in grado di visualizzare il menu in uno o più dei seguenti modi:
- Tenendo premuto il tasto SHIFT all’inizio del processo di avvio fino alla visualizzazione del menu.
- GRUB 2 cerca un segnale di tasto SHIFT premuto durante il boot. Se il tasto è premuto o GRUB 2 non può determinare lo stato del tasto, viene visualizzato il menu.
- Premendo il tasto ESC durante una finestra di 3 secondi mentre GRUB 2 viene eseguito.
- Tenendo premuto il tasto SHIFT all’inizio del processo di avvio fino alla visualizzazione del menu.
- L’utente può essere in grado di visualizzare il menu in uno o più dei seguenti modi:
Salvato
-
Salvare un sistema operativo può essere ottenuto eseguendo sudo grub-set-default se GRUB_DEFAULT=saved è impostato in /etc/default/grub. Può anche essere salvato se GRUB_SAVEDEFAULT=true è anche impostato in /etc/default/grub. In questo caso, il sistema operativo di default rimane fino a quando un nuovo sistema operativo viene selezionato manualmente dal menu di GRUB 2 o viene eseguito il comando grub-set-default.
Ultimo avvio fallito o avvio in modalità di recupero
Se l’ultimo avvio è fallito o dopo un avvio in modalità di recupero il menu verrà visualizzato finché l’utente non effettua una selezione.
Per cambiare questo comportamento, modificare /etc/default/grub e aggiungere la variabile GRUB_RECORDFAIL_TIMEOUT. Impostate il valore in modo simile all’impostazione di GRUB_TIMEOUT.
- Per -1, non ci sarà alcun conto alla rovescia e quindi il menu verrà visualizzato.
- Per 0, il menu non verrà visualizzato anche in caso di avvio fallito.
-
Per >=1, il menu verrà visualizzato per il numero di secondi specificato.
Esegui update-grub dopo che le modifiche sono state fatte.
In alcuni casi il trucco con GRUB_RECORDFAIL_TIMEOUT non funziona. In tal caso modificate /etc/grub.d/00_header e cambiate il valore di timeout nella linea 236 (questa linea è nella funzione make_timeout())
set timeout=-1
al valore descritto sopra.
Eseguite update-grub dopo aver effettuato il cambiamento. Un ringraziamento speciale a McCunha su Ubuntu Forums per il suggerimento di cui sopra.
La modifica di cui sopra, tuttavia, fa sì che GRUB2 si avvii ancora in modalità grafica testuale. Quindi, è necessaria un’ulteriore modifica. Modificare /etc/grub.d/10_linux e cambiare la linea 188 in
set linux_gfx_mode=keep
Di nuovo, eseguire update-grub dopo che la modifica è stata fatta.
Protezione con password
GRUB 2 è in grado di proteggere con password la modifica dei menu, l’accesso al terminale di GRUB 2, e voci di menu specifiche o tutte. Può anche limitare l’accesso a voci specifiche per utenti specifici, e può criptare le password in chiaro per una maggiore sicurezza. Fate riferimento alla documentazione della comunità Grub2/Passwords.
Voci di menu personalizzate
GRUB 2 permette agli utenti di creare selezioni di menu personalizzate che saranno automaticamente aggiunte al menu principale quando viene eseguito sudo update-grub. Un file 40_custom è disponibile in /etc/grub.d/ per essere utilizzato o per servire come esempio per creare altri menu personalizzati. Le informazioni su come costruire e usare i menu personalizzati in GRUB 2 si trovano nel documento della comunità Grub2/CustomMenus.
Risoluzione dei problemi
GRUB 2 fornisce eccellenti capacità per la risoluzione e la correzione dei problemi di avvio dal menu di avvio o dal terminale di GRUB 2. Le procedure di risoluzione dei problemi e di ripristino sono dettagliate nel documento comunitario Grub2/Troubleshooting che include anche una sezione Selected_Problems_and_Bugs.
Risolvere i blocchi di riavvio/spegnimento
Se la tua macchina si blocca al tentativo di spegnimento o riavvio, prova a modificare /etc/default/grub. Apri il file con gksudo gedit /etc/default/grub (interfaccia grafica) o sudo nano /etc/default/grub (riga di comando). Va bene anche qualsiasi altro editor di testo (Vim, Emacs, Kate, Leafpad). Trovate la linea che inizia con GRUB_CMDLINE_LINUX_DEFAULT e aggiungete reboot=bios alla fine.
Se fatto correttamente dovrebbe risultare in qualcosa come GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash reboot=bios”
Poi salvate il file, eseguite sudo update-grub e riavviate in qualsiasi modo sia possibile per voi. Dopo di che, i riavvii e gli spegnimenti dovrebbero iniziare a funzionare correttamente.
Con certi hardware (in particolare DELL) il parametro del kernel da aggiungere deve essere reboot=pci (invece di reboot=bios), la procedura rimane la stessa.
Display
GRUB 2 può fare di più che fornire un semplice menu nero & bianco. Il suo menu può essere personalizzato dall’utente per presentare un menu più attraente dal punto di vista visivo cambiando i colori dei caratteri, gli sfondi e le risoluzioni.
Per informazioni sull’uso di immagini splash e sulla modifica dei colori dei caratteri e delle risoluzioni dei menu, fate riferimento alla documentazione della comunità Grub2/Displays.
Temi
GRUB 2 Theming è ancora in fase di sviluppo, così come l’integrazione con gfxmenu. Gli elementi del tema includeranno colori, caratteri, indicatori di progresso, menu ed etichette. Entrambi questi elementi sono molto promettenti, ma non sono pronti per il rilascio con Ubuntu 9.10. Controllate la sezione Link in fondo a questa pagina per i riferimenti.
Installazione/Reinstallazione/Spostamento di GRUB2
Si prega di visitare la documentazione della comunità Grub2/Installazione. Le informazioni riguardanti gli aggiornamenti da GRUB 0.97 (Legacy) a GRUB 2 si trovano ora su Grub2/Upgrading.
Avviare una ISO da una voce di menu
Le ISO di Ubuntu, così come molte ISO di utilità e alcuni altri sistemi operativi Linux, possono essere avviate da un disco fisso tramite una voce di menu di GRUB. Questo elimina la necessità di creare un CD/DVD e permette ai file immagine avviabili di essere memorizzati solo sul disco rigido.
Per informazioni su questa caratteristica di Grub 2, visitate la pagina di documentazione della comunità Grub2/ISOBoot.
Sicurezza
Prevenire l’avvio tramite la riga di comando di Grub
La capacità di avviare manualmente usando la riga di comando di Grub costituisce il più grande rischio per la sicurezza in Linux. Qualsiasi sistema operativo può essere avviato in questo modo da qualsiasi unità USB o CD/DVD, aggirando le restrizioni del BIOS. Mettere password o bloccare le voci di menu (nei file di configurazione di Grub) non impedisce a un utente di avviare manualmente usando i comandi inseriti dalla riga di comando di Grub. (Una volta che un sistema operativo estraneo è avviato, naturalmente, può essere utilizzato per accedere a qualsiasi parte di un disco rigido non criptato).
Al momento non ci sono opzioni per impedire l’uso di Grub da riga di comando. Farlo limiterebbe il caricamento del boot alle sole opzioni del menu e questo non è considerato saggio
Varie
Eseguire il boot da una console seriale
Se si vuole che GRUB operi su una linea seriale, è necessario decommentare GRUB_TERMINAL in /etc/default/grub e impostarlo su seriale (invece che sul default della console). In alternativa, si può aggiungere GRUB_TERMINAL=”console serial” per avere il menu di grub sia sulla console seriale che su quella locale. Le impostazioni predefinite della console seriale sono di operare sulla prima porta seriale (ttyS0) a una velocità di trasferimento di 9600 bit/s con 8 bit di dati, 1 bit di stop e nessuna parità.
Se si desidera utilizzare un’altra porta seriale o se la console utilizza impostazioni diverse, è necessario aggiungere una linea GRUB_SERIAL_COMMAND per specificare parametri aggiuntivi al comando seriale. Il comando seriale in GRUB 2 utilizza la stessa sintassi della sua controparte GRUB Legacy (documentata qui). Per esempio, per una linea seriale molto comune a 9600 bit/s (baud) con 8 bit di dati, 1 bit di stop e nessuna parità:
GRUB_SERIAL_COMMAND=”serial –unit=0 –speed=9600 –word=8 –parity=no –stop=1″
Un esempio è una linea seriale a 4800 bit/s (baud) con 7 bit di dati, 1 bit di stop e parità pari:
GRUB_SERIAL_COMMAND=”serial –unit=0 –speed=4800 –word=7 –parity=even –stop=1″
Booting FreeBSD, NetBSD, e sistemi operativi chainload o multiboot
Si prega di fare riferimento all’articolo Grub2OtherOs pagina di documentazione della comunità.
Links
-
Grub2/CustomMenus
-
Grub2/Displays
-
Grub2/Installazione
-
Grub2/ISOBoot
-
Grub2/Setup
-
Grub2/Password
-
Grub2/Submenu
-
Grub2/Troubleshooting
-
Grub2/Upgrading
-
Grub 2 (Ubuntu Wiki)
-
GNU GRUB
-
GGNU GRUB2 Manuale
-
HomePage illustrata del Dual Boot
-
Supporto Mac OS X (XNU)
-
Mac OS X Boot Snow Leopard
-
Manuale GRUB – Temi
-
La guida definitiva alla creazione di GRUB2 di Towheed Mohammed
-
Analisi dei problemi con grub2 e RAID1 con workaround
CategoryBootAndPartition CategoryRescueAndCloning