venerdì 22 gennaio 2010

Rimuovere una voce dal menu di Grub 2

In uno dei post precedenti avevamo visto come aggiungere una nuova voce al menu di Grub 2, oggi invece tratteremo lo stesso argomento, ma con l'obiettivo di rimuovere alcune voci dallo stesso menu. In questo caso l'esigenza è quella di avere un menu il meno affollato possibile e soprattutto più facile da gestire per i nostri familiari, i quali non sono poi così avvezzi all'informatica come lo siamo noi ;-)
Avrete notato che di default Grub presenta delle voci di cui difficilmente un utente comune sentirà la mancanza; una di queste è quella relativa a memtest e a meno che non ne abbiate veramente bisogno (ma in tal caso sarà facile riabilitarla) non ha molto senso che appaia nella lista dei sistemi operativi da avviare, anche perché se vostra moglie dovesse lanciarla per errore (passando l'intero pomeriggio ad aspettare che si avvii il pc) - statene pure certi - se la prenderà con voi ;-)
Ma noi non vogliamo che questo accada (d'altronde in famiglia non siamo dei BOFH), quindi da bravi ragazzi andremo a rendere il nuovo menu di Grub 2 semplice e pulito.

Dicevamo che memtest non è indispensabile, quindi provvediamo subito a revocare i permessi di esecuzione dello script che genera la relativa voce in Grub:

$ sudo chmod -x /etc/grub.d/20_memtest86+ [invio]
password [invio]

In questo modo dal prossimo riavvio non vedrete più quelle fastidiose voci relative ai test di memoria, che come dicevamo, potrete sempre riabilitare eseguendo gli stessi comandi, ma sostituendo -x con +x per riassegnare i permessi di esecuzione al file 20_memtest86+.

Un'altra voce poco utilizzata nel menu di Grub è quella relativa al recovery mode e in questo caso c'è da dire che se avete aggiornato per diverse volte il kernel senza aver mai rimosso le vecchie versioni, potreste trovarvi con decine di voci di menu, in quanto viene generata una istanza normale e una recovery mode per ogni versione del kernel presente nel sistema. Quindi per evitare che questo avvenga dobbiamo istruire Grub attraverso la modifica del file /etc/default/grub:

$ sudo gedit /etc/default/grub [invio]

alla fine del file in questione troveremo la seguente riga:

#GRUB_DISABLE_LINUX_RECOVERY=true

che deve essere decommentata togliendo il simbolo cancelletto iniziale in questo modo:

GRUB_DISABLE_LINUX_RECOVERY=true

Fatto ciò, salvate e uscite. Inutile dire che nel caso la linea in questione non fosse presente, sarà sufficiente aggiungerla manualmente.

Una volta apportate tutte le modifiche desiderate non dimenticate di eseguire l'update, necessario a rendere effettivi i cambiamenti:

$ sudo update-grub [invio]

Infine diciamo che per rimuovere molte delle voci inutilizzate, potremmo anche aprire Gestore pacchetti (Synaptic) ed effettuare una ricerca con la parola chiave linux-image che in questo modo ci presenterà una lista di tutti i kernel installati e installabili nel sistema; a questo punto non ci resta che disinstallare le vecchie versioni per farle automagicamente scomparire anche dal menu di Grub.

Adesso i vostri cari non avranno più motivo per prendersela con voi e i vostri kernel ;-)

Aggiornamento: Rimuovere le doppie entry di Windows 7/Vista in Grub 2

lunedì 18 gennaio 2010

Modificare sequenza di avvio e tempo di attesa in Grub 2

Recentemente abbiamo visto come aggiungere una nuova voce nel menu d'avvio di Grub2 e oggi ritorneremo a parlare di questa nuova versione di Grub, per capire come poter cambiare la sequenza di avvio e modificare il tempo di attesa, un po'esagerato con i suoi 10 secondi di default. Per chi, come me, era abituato a editare il famigerato /boot/grub/menu.lst sarà difficile adattarsi a nuovi sistemi... se non altro per pigrizia ;-)
Fortunatamente i nuovi script di grub 2 non sono difficili da comprendere, basta solo sapere quale andare a prendere; in questo caso, dovendo modificare il tempo di attesa e la sequenza di avvio, andremo ad aprire il file /etc/default/grub... ovviamente da superutente ;-)

# gedit /etc/default/grub [invio]

il contenuto del file, a grandi linee è questo:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=4
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

Per impostare il sistema operativo di default è sufficiente specificare il suo numero sequenziale in questa riga: GRUB_DEFAULT=4; in questo esempio rendiamo predefinito Windows, cioè la quinta voce del menu, che in Grub corrisponde appunto a 4. Invece per ridurre il timeout bisogna modificare il valore della riga: GRUB_TIMEOUT=3; quindi in questo caso il tempo di attesa che passa prima di avviare il sistema operativo di default è di 3 secondi. Ora non vi resta che salvare, uscire e rigenerare il nuovo grub.cfg con il seguente comando:

# update-grub [invio]

E con questo avete finito ;-)