In questo articolo vedremo di spiegare un po piu’ dettagliatamente come funziona GRUB2 e come poterlo configurare a nostro piacimento.
Abbiamo gia’ visto come poter aggiungere degli sfondi al nostro boot manager, adesso vediamo quali sono e come modificare le varie caratteristiche di GRUB2
Iniziamo con il dire che la sua configurazione non e’ piu’ limitata ad un solo file, menu.lst, come sul suo predecessore, bensi’ e’ composta da piu’ files collocati sia in /boot/grub/ sia in /etc/grub.d
Il primo file che andremo ad analizzare e’ /boot/grub/grub.cfg che e’ il sucessore appunto di menu.lst
Vi riporto come appare il mio
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
have_grubenv=true
load_env
fi
set default=”0″
if [ ${prev_saved_entry} ]; then
saved_entry=${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,2)
search –no-floppy –fs-uuid –set eeaaf3d5-2ac4-4225-b557-370ff841a5d2
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640×480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_output
terminal gfxterm
fi
fi
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/05_debian_theme ###
insmod ext2
set root=(hd0,2)
search –no-floppy –fs-uuid –set eeaaf3d5-2ac4-4225-b557-370ff841a5d2
insmod tga
if background_image /usr/share/images/grub/TulipStair_QueensHouse_Greenwich.tga ; then
set color_normal=black/black
set color_highlight=magenta/black
else
set menu_color_normal=white/black
set menu_color_highlight=black/white
fi
### END /etc/grub.d/05_debian_theme ###### BEGIN /etc/grub.d/10_linux ###
menuentry “Ubuntu, Linux 2.6.31-14-generic” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,2)
search –no-floppy –fs-uuid –set eeaaf3d5-2ac4-4225-b557-370ff841a5d2
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=eeaaf3d5-2ac4-4225-b557-370ff841a5d2 ro splash vga=786 quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,2)
search –no-floppy –fs-uuid –set eeaaf3d5-2ac4-4225-b557-370ff841a5d2
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=eeaaf3d5-2ac4-4225-b557-370ff841a5d2 ro single splash vga=786
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry “Memory test (memtest86+)” {
linux16 /boot/memtest86+.bin
}
menuentry “Memory test (memtest86+, serial console 115200)” {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Microsoft Windows XP Professional (on /dev/sda1)” {
insmod ntfs
set root=(hd0,1)
search –no-floppy –fs-uuid –set ec641b1e641aeb5a
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###### BEGIN /etc/grub.d/40_custom ###
# 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.
### END /etc/grub.d/40_custom ###
Come potete notare nelle prime righe del file c’e’ scritto a caratteri cubitali di NON MODIFICARE DIRETTAMENTE questo file, in quanto tale operazione viene svolta da /usr/sbin/grub-mkconfig al momento che viene lanciato update-grub e di conseguenza ogni modifica andrebbe persa.
Quindi vi consiglio di ricordarvi che esiste ma di lasciarlo stare cosi’ come si trova. Infatti le configurazioni vengono impostate in altri files.
Se guardate attentamente il grub.cfg vi accorgerete che ci sono righe che iniziamo cosi’
- ### BEGIN /etc/grub.d/00_header ###
- ### BEGIN /etc/grub.d/05_debian_theme ###
- ### BEGIN /etc/grub.d/10_linux ###
- ### BEGIN /etc/grub.d/20_memtest86+ ###
- ### BEGIN /etc/grub.d/30_os-prober ###
- ### BEGIN /etc/grub.d/40_custom ###
Bene, proprio questi file sono quelli che interessano a noi e che si trovano in /etc/grub.d
Ma a cosa servono e come si usano? Vediamolo insieme
- /etc/grub.d/00_header Questo file contiene le impostazioni base di GRUB2 come il timeout, su quale partizione e’ installato grub e la risoluzione del monitor leggendo i vari parametri da /etc/default/grub
- /etc/grub.d/05_debian_theme Qui possiamo impostare i temi di grub, i colori dei caratteri e tutto quello che riguarda l’aspetto estetico di GRUB2 (vedi Grub 2 – Modifichiamo lo sfondo al nuovo Grub)
- /etc/grub.d/10_linux Qui vengono impostate le voci relative ai sistemi Linux installati nel nostro computer
- /etc/grub.d/20_memtest86+ Questo file contiene le varie impostazioni da passare al sistema nel caso si debba eseguire un test delle memorie in avvio
- /etc/grub.d/30_os-prober Va alla ricerca di altri sistemi operativi e li include nel menù
- /etc/grub.d/40_custom Questo file e’ puramente di esempio. Qui vengono illustrate le operazioni per inserire nuove voci a GRUB2.
Come noterete nel nome di questi files e’ presente un numero. In base al numero GRUB2 elaborera’ in sequenza tutti questi files.
Quindi se noi volessimo aggiungere un ulteriore configurazione a GRUB2 dovremo creare un file in /etc/grub.d/ iniziante con un numero (il quale indichera’ la posizione all’interno del menu’ di GRUB2) e dovra’ essere reso eseguibile tramite chmod u+x
Quindi creaiamo il file 30-NOME_FILE in /etc/grub.d/ e al suo interno scriviamo le seguenti righe (ipotiziamo di in aggiungere una voce per avviare il nostro sistema con un kernel compilato da noi e presente nel primo disco e nella seconda partizione)
#!/bin/sh
cat << EOF
menuentry “Ubuntu, linux 2.6.31-11-test” {
set root=(hd0,2)
linux /boot/vmlinuz-2.6.31-11-test root=/dev/sda2 ro
initrd /boot/initrd.img-2.6.28-11-test
}
EOFcat << EOF
menuentry “Nome sistema operativo” {
set root=(hdX,Y)
chainloader +1
}EOF
Successivamente rendiamolo eseguibile con
sudo chmod u+x /etc/grub.d/30_NOME_FILE
e quindi lanciamo l’aggiornamento di GRUB2
sudo update-grub
Questo generera’ una nuova sezione all’interno di /boot/grub/grub.cfg contentente un richiamo al nostro nuovo file e di conseguenza troveremo una nuova voce nel menu’ di avvio di Grub.
Nota: Il conteggio dei device parte da 0, ovvero sda è indicato come hd0, sdb è hd1 e così via. Il nome delle partizioni parte invece da 1, la prima partizione è indicata come sda1, la quinta partizione è sda5, il conteggio delle partizioni non parte da zero.
Prima abbiamo nominato il file /etc/default/grub. Vediamone il suo contenuto
# If you change this file, run ‘update-grub’ afterwards to update
# /boot/grub/grub.cfg.GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=”10″
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
GRUB_CMDLINE_LINUX=” splash vga=786″# 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=640×480# 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”
Come potete notare qui viene indicato quale sistema partira’ di default, la risoluzione della shell ed ulteriori parametri. Questo file lo si puo’ editare in quanto update-grub non modifichera’ le eventuali modifiche apportate
Nel caso dobbiate ripristinare GRUB2, magari a seguito di una installazione di Windows il quale vi ha cancellato GRUB2, potete procedere allo stesso modo della precedente versione di Grub. Vi rimando a questo articolo Ripristino di GRUB in tre mosse
Il menù di avvio di Grub 2 risulta, come impostazione predefinita, nascosto. Per ripristinarlo, è sufficiente modificare con un editor di testo e con i privilegi di amministrazione il file /etc/default/grub, commentare la voce GRUB_HIDDEN_TIMEOUT e aggiungere un valore per il timeout:
Es.
#GRUB_HIDDEN_TIMEOUT=3
GRUB_TIMEOUT=XXX
Per ulteriori informazioni vi rimando al sito ufficiale di GRUB2 dove potrete trovare diversi esempi di configurazione.













Ultimi Commenti