Guida a GRUB 2

Da Guide@Debianizzati.Org.

Trash.png
Attenzione
Questo articolo è ancora incompleto o richiede delle verifiche. Sentiti libero di contribuire cliccando sul tasto "Modifica".


Debian-swirl.pngVersioni compatibili

Tutte le versioni supportate di Debian

Indice

Introduzione

Warning.png
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 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.

Info.png

Versione di riferimento al momento della stesura della presente guida: grub 1.98

Principale differenze tra GRUB Legacy e GRUB 2

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:

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.

Info.png
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

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:

Se è installato un ambiente grafico si aggiungono i seguenti controlli:

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.
Se l'utente lo desidera è possibile cambiare anche il colore dei caratteri del menù; nel caso sia stato installato un ambiente grafico è sufficiente editare il file /usr/share/desktop-base/grub_backgorund.sh e cambiare i colori specificati dalle variabili /usr/share/desktop-base/grub_backgorund.sh COLOR_NORMAL e COLOR_HIGHLIGHT. Entrambe le variabili richiedono di specificare una coppia di colori ("blue/black" per esempio), il primo per i caratteri il secondo per lo sfondo; specificare black come secondo coloro implica sfondo trasparente.
COLOR_NORMAL determina la visualizzazione delle voci non selezionate, viceversa COLOR_HIGHLIGHT; i colori possibili sono:

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 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/grub/default 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.

/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).

Osservazioni

I comandi elencati ci 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 se seguenti riflessioni:

Analisi di 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.

Analisi di 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:

  1. 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.
  2. 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...).
  3. Grub-mkimage crea core.img secondo le opzioni finora individuate.
  4. È lanciato grub-setup per la scrittura sul Master Boot Record.
Installare GRUB 2
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 i 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.

Inoltre si segnala:

Grub-rescue

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.

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.

Si vedono i drive ma non vengono caricati

Sintomi:

Cause:

Soluzioni:

Carica direttamente un OS senza passare da GRUB

Sintomi:

Cause:

Soluzioni:

Si ferma a grub>

Sintomi:

 Welcome to GRUB!

grub>

oppure

grub rescue>

Cause:

Soluzioni:

Errori del menù / "Stanza Problems"

Sintomi:

Cause:

Soluzione:

Nulla funziona

Ricorrere allora ad una live e ripristinare da lì GRUB.

Restore Windows boot-menu entry

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

http://grub.enbug.org/Grub2LiveCdInstallGuide

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: (= Shift+9 )= Shift+0 = = ì - = ' _ = ?

Sitografia

Ecco alcuni link utili dove possibile reperire maggiori informazioni:



Autore: risca 09:37, 4 mag 2010 (CEST)

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti