Abbiamo detto che il comando
update-grub2
si occupa di creare il file /boot/grub/grub.cfg.
Per ottenere questo risultato esegue, in sequenza, gli script presenti nei file che si trovano nella cartella /etc/grub.d/.
Purtroppo non c’è ancora una procedura automatica per l’eliminazione e/o la modifica delle voci che ci vengono “imposte” da grub2. Tuttavia con un po’ di pazienza possiamo “usarlo” per farci aiutare a ingannarlo 🙂
Andiamo!
Apriamo il file /boot/grub/grub.cfg. Ci servirà!
E’ in sola lettura e noi rispetteremo il volere del suo creatore: non lo modificheremo mai a manina. Però ora cerchiamo di capire come viene creato.
Quando viene eseguito il comando update-grub2, viene letto sia il file /etc/default/grub sia i file presenti in /etc/grub.d. In questo modo vengono impostati i parametri di visualizzazione del menù di Grub2 e viene eseguita una ricerca per la presenza di kernel Linux, altri sistemi operativi ed elementi presenti negli script creati dall’utente in /etc/grub.d. Tutte queste informazioni finiscono poi nel file grub.cfg.
In questa tabella vengono descritti i principali file presenti in /etc/grub.d/.
File | Significato |
00_header | Carica le impostazioni da /etc/default/grub, compresa la presentazione visiva, il conto alla rovescia e le opzioni del terminale |
05_debian_them | Imposta lo sfondo, il colore del testo e i temi |
10_hurd | Localizza eventuali kernel Hurd |
10_linux | Localizza i kernel basati sull’ID del distributore determinato dal risultato del comando lsb_release -is |
20_memtest86+ | Se il file /boot/memtest86+.bin esiste, viene inclusa una voce per memtest86+ |
30_os-prober | Va alla ricerca di altri sistemi operativi e li include nel menù |
40_custom | Rappresenta un modello per aggiungere voci personalizzate al menù |
Il nome del file determina l’ordine nel menù perché i file vengono letti ed eseguiti in ordine alfabetico. Le voci che iniziano con 30 verranno posizionate prima di quelle che iniziano con 40 e così via.
Bene.
Vediamo ora come possiamo apportare le 2 modifiche più comuni:
- modificare il testo di una voce del menù
- cancellare una voce del menù
1. Modificare il testo di una voce di menù
Se dobbiamo modificare il testo della voce di menù che si riferisce a Linux dobbiamo intervenire sul file /etc/grub.d/10_linux. Se invece trattasi di voce Windows o altro OS dobbiamo intervenire sul file /etc/grub.d/30_os-prober.
Modifchiamo la voce di menù “Ubuntu, Linux 2.6.31-14-generic”, davvero antipatica, e trasformiamola in una più amichevole “Ubuntu 9.10 – Karmic Kaola”.
Apriamo il terminale e digitiamo:
sudo gedit /etc/grub.d/10_linux
cerchiamo la stringa
menuentry "$1" {
e sostituiamo $1 con Ubuntu 9.10 – Karmic Kaola, ottenendo:
menuentry "Ubuntu 9.10 - Karmic Kaola" {
Salviamo il file.
Poi da terminale:
sudo update-grub2
Fatto.
Approfondimento su questo punto.
In realtà, le voci di menù che riguardano Linux vengono create dalla funzione linux_entry() che si trova sempre nel file 10_linux. Tale funzione crea una voce per ogni versione di linux presente sul nostro HD. Questo significa che, procedendo come indicato sopra, i vari aggiornamenti di ubuntu che saranno installati verranno indicati da una nuova riga nel menù di grub, ma che, tutte queste righe, avranno lo stesso identico testo: Ubuntu 9.10 – Karmic Koala.
Per poter distinguere le varie voci si dovrebbe intervenire sulla funzione citata, ma poi le cose si complicherebbero…
Il file che si occupa delle altre voci, per OS non Linux, è /etc/grub.d/30_os-prober e qui so’ dolori! In teoria dovremmo modificare lo script presente nel file, come abbiamo fatto per la voce di Linux, ma per quanto mi riguarda, preferisco procedere come segue:
- spostare il file /etc/grub.d/30_os-prober in una cartella di nostro gradimento, eliminandolo quindi da /etc/grub.d/
- editare in scrittura (quindi “sudo”) il file /etc/grub.d/40_custom
- copiare in coda a questo file il pezzo del file /boot/default/grub.cfg che ci interessa apportando semplici modifiche testuali. Il pezzo del file /boot/default/grub.cfg che ci interessa è delimitato dalla stringa ### BEGIN /etc/grub.d/30_os-prober ###
- salvare /etc/grub.d/40_custom
- updatare.
In questo modo, grub 2 non trovando il file 30_os-prober salta la costruzione delle voci degli altri OS che però saranno inserite a nostro piacimento perché verrà trovato il file 40_custom con il testo tutto pronto.
2. Cancellare una voce di menù
Beh, lo sappiamo già fare. Basta seguire quanto già fatto alla fine del punto precedente…
Difficile?
Dai, proviamoci!
Ottimo! Riuscito, grazie. Ho aggiunto win 7