Come personalizzare Grub2

Dicembre 2016

Con più sistemi operativi installati sul computer, il menu Grub2 (per la selezione del sistema da avviare) può risultare complicato da utilizzare, tant'è che si desidererà modificarlo e organizzarlo (con le dovute accortezze). Per chi non dovesse saperlo, Grub2 è installato sulla radice del disco master (SDA). In seguito ad ogni aggiornamento del kernel, aggiornamento della distribuzione GNU/Linux, o dopo l’aggiunta (o l’eliminazione) di un sistema operativo, il comando update-grub (da root) aggiorna il file di configurazione di Grub2 (/boot/grub2/grub.cfg e /boot/grub/grub.cfg per Debian e Ubuntu). È proprio questo file grub.cfg che visualizza il menu di selezione dei sistemi operativi, con in cima il sistema principale e le opzioni avanzate, poi gli altri sistemi in seguito.

Nota Bene: la modifica del file grub.cfg non è raccomandata, e si consiglia di fare una copia di backup. Basterà eseguire il comando seguente (da root):
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak
(il comando crea un nuovo file nominato grub.cfg-bak).

In questa guida verranno illustrate le possibilità di modifiche nel file grub.cfg, generate automaticamente, e come fare queste modifiche. Infine, si vedrà anche la soluzione di personalizzazione del file grub.cfg tramite il file 40_custom.



Cosa non va di grub.cfg

Il rendering di grub.cfg è poco piacevole, ecco alcuni esempi:

2 versioni Mageia in coabitazione

Se si ha due versioni di Mageia installate (una stable e la cauldron) il file di configurazione di grub crea una sorta di doppione. Oltre i kernel della versione di base ci sono anche quelli della seconda versione presenti nelle opzioni avanzate. Così, con una Mageia 5 su SDA2 e una Mageia 4 (o Cauldron) su SDB1, si troveranno delle righe “(su /dev/sda2) (su /dev/sdb1)” nelle opzioni avanzate.

Per la seconda versione installata di Mageia, dunque una Mageia opzionale, i kernel sono elencati, nelle opzioni avanzate, dal più recente (in alto della lista) al più datato. Successivamente sono indicate le righe dei doppioni con la versione Mageia principale.

Fedora

Se Fedora è installata in più di una (o più) distribuzione, l’installazione di Grub2 mette sistematicamente in cima alla lista il kernel di soccorso ("rescue") o di debug (“+debug”), il che aggiunge una difficoltà nell'uso, dal momento che la risoluzione dello schermo è ridotto; visto che il driver grafico utilizzato è generico con le modalità “rescue” e/o “debug”. Sarà così necessario ricercare il kernel giusto nelle opzioni avanzate, nelle quali non è menzionata la versione del kernel chiamato, e si deve scegliere a caso. Però la regola sembra essere quella di posizionare in testa alla lista le opzioni avanzate, l’opzione “rescue” (o debug), poi gli altri kernel e, in fine, l’ultimo kernel (il più recente) in basso.

Al contrario il file generato con Fedora mette in evidenza le versioni dei kernel di Fedora e in cima della lista i kernel principali, poi sotto quelli di soccorso.

Debian e Ubuntu

Per Debian e Ubunto, (in dual boot con un'altra distribuzione) al contrario del caso Fedora, grub2 indica correttamente i kernel e posiziona i più recenti in cima alla lista, al centro mette gli altri e alla fine quelli della modalità “recovery” (rescue) poi “memtest”.

Modifiche basi di grub.cfg

Come già annunciato, si sconsiglia fortemente la modifica di questo file, ma se necessario, fare una copia di backup con il comando:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak


Per modificare grub.cfg è più facile utilizzare Grub Customizer. Alcuni utilizzeranno un editor di testo come nano, kate, gedit, leafpad, ecc. sempre da root. In questo caso, ci si accontenta solo, a seconda della necessità, di rinominare la versione del sistema operativo e evidenziare il kernel chiamato nelle opzioni avanzate. È inutile complicarsi il compito, e prendere rischi inutili che porterebbero alla corruzione della struttura del file.

Esempi:

Rinominare il sistema

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Mageia 5'


diventa:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Mageia SDB1'


Evidenziare il kernel

menuentry "Fedora 23 (Twenty Three) (su /dev/sda3)" 
... etc ...
initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img
diventa:
menuentry "Fedora SDA3 (4.3.3-300.fc23.x86_64)"
... etc ...
initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img


Il trucco consta di apportare modifiche minime per evitare I rischi.

Installare Grub2su SDXn

Installare per ogni distribuzione GNU/Linux Grub2 nella radice della partizione d’installazione, cioè SDXn (dove X rappresenta il disco (SDA, SDB, ecc.) e "n" rappresenta il numero della partizione (tutto ciò da root). Questo consentirà di collegare, in seguito, i vari sistemi correttamente.

Mageia secondario

grub2-install --force /dev/sdb1
update-grub

Debian, Ubuntu secondario

grub-install --force /dev/sda5
update-grub

Fedora secondario

grub2-install --force /dev/sda3
grub2-mkconfig -o /boot/grub2/grub.cfg

Modificare grub.cfg in SDX

Si modifica il file grub.cfg principale. È il Grub2 utilizzato dalla distribuzione GNU/Linux principale installata sulla radice del disco principale, cioè SDA. Ecco come procedere passo dopo passo.

Modificare/etc/default/grub

Bisogna modificare il file /etc/default/grub da root, trovare la riga seguente: GRUB_DISABLE_OS_PROBER="true” e impostarla su false invece di true. Questo disattivata la ricerca di altri sistemi operativi durante l'aggiornamento di grub.cfg.

Modificare /etc/grub.d/40_custom

Bisogna modificare il file /etc/grub.d/40_custom, sempre da root. Se questo file non esiste, crearlo. Aggiungere le seguenti righe:

#!/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.
#
# Windows SDA1
menuentry 'Windows 7 SDA1' {
set root='hd0,msdos1'
chainloader +1
}
# Mageia Cauldron SDA2
menuentry 'Mageia Cauldron SDA2' {
set root='hd0,msdos2'
chainloader +1
}
# Fedora SDA3
menuentry 'Fedora SDA3' {
set root='hd0,msdos3'
chainloader +1
}
# Debian SDA5
menuentry 'Debian SDA5' {
set root='hd0,msdos5'
chainloader +1
}
# Ubuntu SDA8
menuentry 'Ubuntu SDA8' {
set root='hd0,msdos8'
chainloader +1
}


Naturalmente da adattare secondo la situazione.

Nota 1, annotazione a seconda del sistema di partizione:

Per le partizioni MSDOS:
set root='hd0,msdos1'


Per le partizioni GPT:
set root='hd0,gpt1'



Nota 2, annotazione funzionale:

Con tipo partizione
set root='hd0,msdos1'


Senza tipo partizione
set root=(hd0,1)


In caso in cui il file 40_costum debba essere creato, questo deve essere eseguibile, da root avviare il comando
chmod +x /etc/grub.d/40_custom

Rigenerare il file grub.cfg

Da root eseguire il comando
update-grub


Da notare che su Fedora, il comando sarà
grub2-mkconfig -o /boot/grub2/grub.cfg


Se tutto va bene, l'output del comando visualizzerà la lista dei soli kernel del sistema principale. Aprendo il file grub.cfg (tramite nano, ecc.) sarà visualizzato: una rubrica 10_linux_proxy di riferimento al sistema operativo principale (con i vari kernel) che non verrà toccato; una rubrica 30_os-prober ormai vuota (che conteneva in precedenza i riferimenti ai vari sistemi); una rubrica 40_custom completata con gli elementi aggiunti prima al file 40_ custom ( vedi paragr.5.2).

Convalida

Una volta apportate le dovute notifiche bisogna confermare riavviando il sistema dai vari sistemi operativi uno ad uno. Nei casi di errori, qui sotto riportati, bisogna riavviare con SuperGrub (vedi capitolo 7) per poter così installare Grub2 nella partizione radice come indicato nel capitolo 4. Se viene visualizzato l’errore “invalid signature”, Grub2 non è stato installato, se l’errore visualizza “GNU GRUB version 0.97”, si è installato Grub nella sua versione detta “Legacy” (cioè la versione Grub 1) e Grub2 non sarà in grado di vedere e interpretare questo selettore di sistema operativo.

Se dopo aver reinstallato Grub2 correttamente nella partizione radice corrispondente, un’errore persista, verificare nel file 40_custom la notazione dei dischi e/o delle partizioni. Se, invece, la personalizzazione è funzionante, non si dovrà più aggiornare grub.cfg, poiché ad ogni aggiornamento del kernel di una distribuzione GNU/Linux secondaria, è il suo file grub.cfg che verrà aggiornato in automatico. Così il Grub2 principale chiamerà per concatenamento il file grub.cfg nella distribuzione secondaria senza dover puntare su un kernel preciso, risparmiando tempo e semplificando il tutto.

Super Grub

Per maggiori informazioni riguardo SuperGrub, si consiglia di visualizzare il sito ufficiale di Super Grub Disk. Questa utility gratuita e open source è in grado di rilevare tutti i sistemi operativi installati, utilizzarla in caso di problemi per riavviare il sistema desiderato e ricominciare da capo la procedura. Per saperne di più circa , clicca qui: Super Grub Disk Live CD.

Potrebbe anche interessarti :
Il documento intitolato « Come personalizzare Grub2 » da CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.