• Diventa Fan!
  • Seguici Twitter
  • Seguici su Google+

Linux – Come rendere Grub 2 più comodo per il dual boot

Scritto in Debian, Kubuntu, Linux, Ubuntu - Da Jessica Lambiase - lunedì 4 gennaio 2010 - 29 Commenti

img_grubPoveri noi, utenti “forzati”, in qualche modo, a far convivere due sistemi operativi! Era semplice, ai tempi del caro,vecchio Grub, andare a modificare il leggibile (e altamente comprensibile) file /boot/grub/menu.lst , in modo da configurare in pochi minuti quale sistema operativo volessimo far partire per primo, quanto attendere per l’avvio automatico e altri dettagli utili. La storia però, con Grub2, cambia notevolmente : sicuramente quest’ultimo è più funzionale e “pulito” di suo padre,ma, come ogni cosa positiva, ha anche un lato non molto gradevole : andare a modificare il file di configurazione (/boot/grub/grub.cfg) manualmente è pressochè inutile, poichè ogni volta che aggiorneremo grub2 (con il comando update-grub2), questo si baserà sugli script di configurazione fatti ad-hoc per crearlo e,inoltre,riporterà il suddetto file in sola lettura.

Voglio dare una mano a chi, come me, ha bisogno di un bootloader leggermente piu’ flessibile e più adatto alle proprie esigenze, senza però entrare nei dettagli dei files di cui parlavo sopra, sapendo magari solo il minimo.
Iniziamo proprio da questi files: sono presenti nella directory /etc/grub.d , e – di default – dovrebbero essere i seguent:


malefika@malefikapc:/etc/grub.d$ ls
00_header 10_linux 20_memtest86+ README
05_debian_theme 30_os-prober 40_custom

Ora, la prima cosa da notare è il nome : davanti ad ogni parola vi è un numero,e questo perchè lo script per l’aggiornamento di grub 2 legge i files di configurazione in ordine alfabetico crescente, quindi, onde evitare problemi e contrasti, si è deciso di usare questa convenzione.
Domanda numero due: a cosa servono questi files? Procediamo per ordine:

  • 00_header : preleva le informazioni da /etc/default/grub (che spiegherò in seguito a cosa serve)
  • 05_debian_theme : permette di impostare dettagli visivi, come ad esempio il colore del testo e l’immagine di sfondo
  • 10_linux : cerca (e rende accessibili al boot) eventuali kernel linux presenti sull’hard disk
  • 20_memtest86+ : se esiste il file /boot/memtest86+.bin, questo viene aggiunto alla lista dei sistemi bootabili
  • 30_os-prober : verifica l’esistenza di altri sistemi operativi e,in tal caso,li aggiunge alla lista
  • 40_custom : permette di specificare altri script di configurazione

Come ho detto prima, il file di configurazione /boot/grub/grub.cfg viene costruito dinamicamente dal programma “update-grub2″ che legge sequenzialmente i files di cui sopra. E’ piuttosto semplice, ora, capire in che ordine appariranno i sistemi operativi nella lista d’avvio di grub2 : 10 < 20, quindi 10_linux sarà letto per primo, quindi le prime voci saranno dedicate ai kernel presenti sull’hard disk ; 20 < 30,  ragion per cui, immediatamente la lista dei kernel, verrà la voce dedicata a memtest86+ ; 30 < 40, quindi , immediatamente dopo memtest86+, appariranno in lista gli altri eventuali sistemi operativi. Supponendo di avere sul sistema i kernel 2.x.xx e 2.x.xy, che il file /boot/memtest86+.bin sia presente, e di avere installato anche Windows XP, la nostra lista, quindi, risulterà del tutto simile a :

Linux - Kernel 2.x.xx
Linux - Kernel 2.x.xx (recovery mode)
Linux - Kernel 2.x.xy
Linux - Kernel 2.x.xy (recovery mode)
Memtest86+
Microsoft Windows XP

Tenendo presente che il kernel (o il sistema operativo) selezionato di default da grub2 al suo avvio è sempre il primo della lista (in pratica,nella nostra situazione,allo scadere del timeout partirà Linux con kernel 2.x.xx), possiamo rispondere alla prima domanda : come fare in modo che il sistema preselezionato,in fase di boot, sia Windows XP e non Linux? Alla luce di ciò che ho detto fin ora, la risposta è scontata : basta rinominare i files, cambiando i numeri prima dell’underscore.
Ad esempio, con la stessa configurazione di prima, supponiamo di voler mettere Windows XP in cima alla lista.Apriamo un terminale,  i files in /etc/grub.d dovranno essere rinominati come segue

cd /etc/grub.d

sudo mv nome_vecchio_file nome_nuovo_file

e,i nuovi nomi,dovranno essere pressappoco i seguenti:

00_header
#invariato
05_debian_theme #invariato
10_os-prober #che prima era 30
20_linux #che prima era 10
30_memtest86+ #che prima era 20
40_custom #invariato

La lista del nostro grub2, quindi, ora è diventata la seguente:

Microsoft Windows XP
Linux - Kernel 2.x.xx
Linux - Kernel 2.x.xx (recovery mode)
Linux - Kernel 2.x.xy
Linux - Kernel 2.x.xy (recovery mode)
Memtest86+

Abbiamo raggiunto il nostro obiettivo : far partire Windows XP di default allo scadere del timeout.

Altra domanda : come aumentare il timeout di boot? Qui entra in gioco il file /etc/default/grub : il valore del timeout è scritto lì, quindi non ci resta che andare a modificarlo:

sudo gedit /etc/default/grub &

Cerchiamo la linea

GRUB_TIMEOUT=10

e modifichiamola a nostro piacere,magari facciamo partire il sistema dopo 30 secondi (NB: il timeout è espresso in secondi). Salviamo, ed usciamo. Il nostro grub2 attuale, quindi, farà partire di default Windows XP dopo 30 secondi.
Ora, se siamo dei guru e non sbagliamo mai, avere anche la voce del “Recovery Mode” di ciascun kernel è perfettamente inutile.. da /etc/default/grub è possibile fare in modo che queste voci non compaiano (cosa che io sconsiglio caldamente), decommentando (togliendo il # iniziale) questa linea:

#GRUB_DISABLE_LINUX_RECOVERY="true"
.

Dopo questi cambiamenti, la nostra lista dovrebbe essere pressappoco la seguente:

Microsoft Windows XP
Linux - Kernel 2.x.xx
Linux - Kernel 2.x.xy
Memtest86+

Altro passo avanti : nel caso in cui sappiamo per certo che non ci interesserà mai eseguire un test sulla memoria della nostra macchina, è possibile eliminare anche Memtest86+ dalla nostra lista di avvio : per farlo, sempre alla luce del fatto che update-grub2 va a leggere da /etc/grub.d gli script di configurazione, basterà non fargli leggere quello relativo a Memtest86+, togliendo i permessi di esecuzione al relativo file:

sudo chmod a-x 30_memtest86+

Detto fatto,la nostra lista d’avvio si riduce a :

Microsoft Windows XP
Linux - Kernel 2.x.xx
Linux - Kernel 2.x.xy

Altro passo : eliminare dalla lista i kernel inutili. Possiamo trovare la lista dei kernel installati nel file /boot/grub/grub.cfg (quello che ho citato all’inzio che va sempre in read-only…ricordate?), e, per l’eliminazione, rimando a questo articolo.

Dopo quest’ultimo accorgimento, supponendo che il kernel 2.x.xy fosse inutile, la nostra lista di avvio di grub2 è ridotta al minimo:

Microsoft Windows XP
Linux - Kernel 2.x.xx

Abbiamo,quindi, soltanto due voci per il boot, e di default sarà bootato Windows XP dopo 30 secondi di timeout.  Tra le altre chicce di grub2, è possibile anche cambiare l’immagine di sfondo e i colori del menu : in questo articolo è spiegato come fare.
Ora non ci resta che salvare tutte le modifiche effettuate:

sudo update-grub2

riavviamo la macchina ed il gioco è fatto : abbiamo finalmente “pulito” e “abbellito” il nostro bootloader!

  • chris

    il comando update-grub2 in fedora16 NON ESISTE

  • Pingback: Ubuntu/Grub 2: come avviare il sistema direttamente da un’ISO di Ubuntu presente sull’hard disk - Chimera Revo

  • luca

    @Jessica Lambiase
    ciao jessica, grazie della risposta.
    Ho risolto utilizzando il 40_custom in modo da non dover rimetterci sempre le mani.
    Ho preso spunto da qui http://www.alessandrostella.it/windows/2009/11/grub-2/

    grazie ciao

  • http://www.chimerarevo.com Jessica Lambiase

    @luca
    Salve.
    Maniera elegante di far ciò che dici sarebbe modificare lo script di configurazione di os_prober, ma non mi sembra il caso vista la complessità.
    Ti suggerisco una maniera un po’ piu’ “immediata” di farlo.
    Apri in modifica /boot/grub/grub.cfg

    sudo gedit /boot/grub/grub.cfg

    trova all’interno del file la scritta “Microsoft Windows XP on dev ....” e sostituiscila con ciò che più ti piace, dopodichè salva ed esci. Attenzione però, ogni volta che rieseguirai la configurazione di grub2 dovrai ripetere questo passaggio..in quanto il file che sei andato a modificare verrà sovrascritto.

  • luca

    salve, se volessi personalizzare la scritte es: anzichè windows xp … solo XP come posso fare?
    grazie

  • http://www.chimerarevo.com Jessica Lambiase

    @Vittorio
    Non con os_prober che io sappia, ma se mi dici numero di disco rigido e numero di partizione su cui hai installato windows ti dò il codice esatto per creare un file dedicato alla tua partizione.

  • Vittorio

    L’articolo è molto utile e tutto funziona molto bene.
    Ho solo un piccolo problema. Il mio Acer Aspire ha una partizione dedicata al ripristino.
    Ho rinominato il file 30_os-prober in modo da far comparire windows prima di Linux, ma in questo modo il sistema riconosce come prima partizione (da avviare di default) quella di ripristino. E’ possibile mettere in ordine i diversi sistemi windows?

  • http://www.chimerarevo.com Jessica Lambiase

    @giorgio scubla
    Mi sono ricordata di te : il tutorial è arrivato.
    Saluti!

  • Pingback: Linux : Grub2, inserire manualmente un sistema operativo

  • Pingback: Linux : Impostare password in Grub2 per l’avvio

  • http://www.chimerarevo.com Jessica Lambiase

    @giorgio scubla
    Purtroppo il risultato non cambierebbe neanche con la partizione di boot :( E’ grub il problema.. lui odia mandriva, mandriva odia lui..non sei il primo e – finchè grub2 non smetterà di essre beta – purtroppo non sarai l’ultimo ad avere tale problema!

    La mia mano sinistra è stata abbastanza sfortunata : da una ferita su un dito si è scatenata un’infezione che me l’ha messa quasi del tutto KO, anche se già da ieri a oggi ha fatto progressi! Grazie per l’interessamento :)
    Saluti!

  • giorgio scubla

    Siete straordinari,veramente,però state tranquilli,sono abituato a incasinare per la mia inesperienza e a ricominciare da capo.Quello che mi stizza è che mentre Ubuntu installa i pacchetti e io seguo sul terminale,vedo che il nuovo kernel trova (found) tutte e dico tutte le distro installate,compreso Mandriva.Che poi trovo al boot ma che : file not found.Non mi sembra più una questione di grub,dico io ( e capirai…).Sto pensando ad altre soluzioni del problema.P.es. con la partizione di boot cosa potrebbe succedere? E’ un’ipotesi che mi sorride anche se non saprei da che parte cominciare.Lo so.da fdisk ma il seguito mi preoccupa.Ho letto qualcosa ma mi servirebbe un buon manuale.Va bè,vedremo.

    Cos’hai fatto alla mano?

    Saluti a entrambi.

  • http://www.chimerarevo.com Jessica Lambiase

    @giorgio scubla
    Appena mi si riprende la mano, promesso, scriverò un secondo tutorial su come aggiungere manualmente un sistema operativo a Grub2! Intanto ti saluto cordialmente, e, se hai domande, come dice il mio collega,non esitare a postarle.
    Malefika.

  • http://www.chimerarevo.com Chimera Revo

    @giorgio scubla
    nooo mi disp che si sia incasinato tutto :( Non abbatterti però giorgio e segui il mio consiglio: RITENTA! E’ solo 1 macchina, si piegherà al tuo volere ;) Sai quante volte anche io ho commesso errori, ho pagato gli errori ma poi ho imparato?
    Non abbatterti ed esponici tutte le tue domande senza problemi

  • giorgio scubla

    Ho l’impressione di non avere le cognizioni necessarie per fare una cosa del genere.Ci ho provato ed ho incasinato tutto.Niente male,è stata l’occasione per piallare il disco e fare un pò di pulizia.Ho adottato una soluzione diversa : ho Mandriva e sabayon 5.1K sul disco piccolo e Ubuntu,Fedora, openSUSE e Sabayon 5.1G su quello grande.In attesa delle buone notizie ventilate da Malefika ( in Grub2 we trust).Certo che Ubuntu è troppo grande per lasciarci così in braghe di tela,come si dice da queste parti,qualcosa è inevitabile faccia.Bene,grazie dell’assistenza.Continuerò a leggere il blog e nel frattempo vi saluto molto molto cordialmente.

  • http://www.chimerarevo.com Chimera Revo

    @giorgio scubla

    Offesa? Per lei è un onore :P

  • giorgio scubla

    Grazie di nuovo.Ci provo e vi farò sapere.In ogni caso,in assenza di scambio di auguri.buon proseguimento a entrambi.
    Ciao.

  • giorgio scubla

    Grazie di nuovo.Ci provo e vi farò sapere.In ogni caso,in assenza di scambio di auguri.buon proseguimento a entrambi.
    Ciaso.

  • http://www.chimerarevo.com malefika

    @giorgio scubla
    Vai tranquillo, non mi offendo! Virtualbox non è un’idea felice, il rallentamento che tu avverti è reale,non è soltanto una tua impressione.. d’altra parte, se teniamo presente che la simulazione del processore,della ram e di quant’altro viene effettuata prevalentemente a livello di paging su hard disk (quello reale).. concorderai con me che la differenza di clock è notevole, con ovvie conseguenze.
    In tutti i casi, tornando a noi, non so darti risposta certa al 100% perchè in pratica non ho mai provato, ma in teoria il metodo Tanino dovrebbe tranquillamente funzionare, far rilevare di nuovo a grub2 gli initrd non può fare che bene (il problema di file non trovato,solitamente, dipende da quello!).
    Saluti, e tienici aggiornati!

  • giorgio scubla

    Grazie.E’ veramente un’ottima collaboratrice.Io avevo già trovato due alternative per non rinunziare ne all’uno ne all’altra:VirtualBox.Solo che mi sembra perdano in velocità,diventano scattosi o forse è una mia idea.Fatto sta che la soluzione non mi convince.L’altra,e quì arriva il quesito di oggi,è stata di installare Ubuntu su un vecchio pc di 40Gb,lento (1350 Mhz) ma funzionante.Dopo,per prova,ho installato Mandriva che compare regolarmente al boot ma se cliccata da la risposta file non trovato.Ecco il quesito : potrei applicare il metodo -io lo chiamo Tanino,se non ti offendi- a quest’ultimo caso,quando cioè vi sono soltanto Ubuntu e Mandriva?
    Ciao Tanino e ciao Malefika.

  • http://www.chimerarevo.com Chimera Revo

    @giorgio scubla
    Ho un ottima collaboratrice :D

  • http://www.chimerarevo.com malefika

    @giorgio scuba
    Sgomitando sgomitando, prendo il posto di Tanino e alla tua domanda rispondo io :) Purtroppo, leggendo il changelog di Grub2, ho tristemente scoperto che, nonostante tutto, non supportiper il momento le altre distribuzioni : in pratica, sei stato già fortunato che ti abbia riconosciuto Fedora e Sabayon ^_^ Tornando a noi, il mio metodo nel tuo caso serve a ben poco, se è Grub2 stesso a non supportare le altre distro! Comunque, se posso darti un suggerimento, per far convivere Mandriva e Ubuntu un metodo c’è : la 2010 di Mandriva se non ricordo male usa Grub come bootloader, potresti installare Ubuntu evitando di installare il suo bootloader, e aggiornare (a mano però,perchè tu stesso mi dici che automaticamente Mandriva ignora Ubuntu) il grub di Mandriva dopo l’installazione di Ubuntu… non è molto pulita come soluzione, ma al momento è l’unica possibile :\
    In Grub2 we trust, spero di poterti dare buone notizie a giorni!
    Saluti!

  • giorgio scubla

    Ciao Tanino,lavoro fantastico.Eravamo in molti a non saper che pesci prendere con grub2.Avevo trovato “Grub2,impariamolo” su il Blog di Streetcross ma il tuo è più chiaro e sopratutto,per gli smanettoni come me,realizzabile.Ho due quesiti da porti,se non ti dispiace : ho un multiboot nel senso che sullo stesso disco ho Fedora,Sabayon,Mandriva e (avevo) Ubuntu.Il problema che si è presentato con l’installazione di Grub2 è che Mandriva è sparita dal boot.Se viceversa installo Mandriva sparisce Ubuntu,mentre prima la convivenza era pacifica.Grub2 invece,sopporta benissimo le altre distro.L’antipatia esiste nei confronti di Mandriva e viceversa.Notare che aprendo il file grub.conf le distro le trovo tutte e quindi anche la possibilità di aggiungere al file non esiste.Domande: il tuo parere su tutta la situazionedel boot ; il tuo metodo è applicabile anche nel mio caso per rendere compatibili le due distro?
    Ciao Tanino,sei forte!

  • Pingback: SOURCES.LIST » Blog Archive » Guida all’installazione e alla configurazione dei temi per il Grub2

  • Pingback: diggita.it

  • http://www.chimerarevo.com Chimera Revo

    @yogurtmagro

    Per qualsiasi dubbio o domanda ci siamo noi ;)

    • http://www.chimerarevo.com malefika

      @yogurtmagro
      Non ci sono problemi,se hai dubbi siamo qui.

      @Domenico
      Grazie ;)

  • Domenico

    Ottimo articolo, utilissimo!

  • yogurtmagro

    Grazie della guida era molto tempo che cercavo una spiegazione alla mia portata su Grub2. Io da inesperto ero riuscito a cambiare qualcosa su Ubuntu 9.10 tramite startup-manager.