Linux – Come rendere Grub 2 più comodo per il dual boot
Poveri 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:
#invariato
00_header
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!






Pingback: Ubuntu/Grub 2: come avviare il sistema direttamente da un’ISO di Ubuntu presente sull’hard disk - Chimera Revo
Pingback: Linux : Grub2, inserire manualmente un sistema operativo
Pingback: Linux : Impostare password in Grub2 per l’avvio
Pingback: SOURCES.LIST » Blog Archive » Guida all’installazione e alla configurazione dei temi per il Grub2
Pingback: diggita.it