#format wiki
#language it
# + 17.10
<
>
<>
<>
= Introduzione =
In questa guida vengono descritti diversi metodi per modificare il menù di '''GRUB'''. Qualsiasi modifica deve essere fatta sugli script di configurazione e non sul file in sola lettura `/boot/grub/grub.cfg` come avveniva in precedenza con '''GRUB-legacy''' e il file `/boot/grub/menu.lst`.
Per ulteriori dettagli sui file di configurazione di '''GRUB''' si rimanda alla apposita [[AmministrazioneSistema/Grub/FileCartelle|guida]].
{{{#!wiki important
Come indicato nei seguenti paragrafi, è necessario eseguire l'[[AmministrazioneSistema/Grub#Comandi|aggiornamento]] di GRUB al termine di ogni modifica per applicare i cambiamenti.
}}}
= Modificare il nome della release =
== Modificare il grub distributor ==
Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/default/grub` e modificare la seguente opzione:{{{
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
}}}
con le seguenti:{{{
GRUB_DISTRIBUTOR=`lsb_release -d -s 2> /dev/null || echo Debian`
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Modificare il nome nelle voci ==
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/10_linux` e cercare le seguenti righe:{{{
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
}}}
0. Aggiungere immediatamente dopo:{{{
codename="`lsb_release -cs`"
version_no_generic="`echo ${version} | cut -d "-" -f 1-2`"
}}}
0. Sarà quindi possibile modificare il nome visualizzato per la propria distribuzione modificando le seguenti righe: {{{
linux_entry "${OS}" "${version}" false \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
quiet
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
if [ -x /lib/recovery-mode/recovery-menu ]; then
linux_entry "${OS}" "${version}" true \
"recovery nomodeset ${GRUB_CMDLINE_LINUX}"
else
linux_entry "${OS}" "${version}" true \
"single nomodeset ${GRUB_CMDLINE_LINUX}"
}}}
aggiungendo o eliminando le variabili come da tabella:
||'''Opzione''' ||<:>'''Significato''' ||
||${OS}|| Ubuntu, Kubuntu, Xubuntu, Lubuntu ||
||${version}||la versione del kernel, es: 3.0.0-15-generic||
||${codename}||il nome in codice della release, es: precise||
||${version_no_generic}||la versione del kernel senza parte terminale||
Infine consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Modificare "with Linux" ==
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/10_linux` e cercare le seguenti righe:{{{
if ${recovery} ; then
title="$(gettext_quoted "%s, with Linux %s (recovery mode)")"
else
title="$(gettext_quoted "%s, with Linux %s")"
fi
}}}
0. Cancellare o modificare a piacere "`, with Linux`" ad esempio traducendo in italiano.
0. Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
= Aggiungere voci =
Il nome dello script posizionato in `/etc/grub.d/` determina l'ordine delle voci nel menù. Il numero iniziale ne indica la priorità, modificandolo è possibile modificare l'ordine delle voci.
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_theme||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ù||
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Voci automatiche ==
Per aggiungere una voce automatica è sufficiente rendere eseguibile il file di configurazione corrispettivo alla voce desiderata situato in `/etc/grub.d/`:
Aprire un [[AmministrazioneSistema/Terminale| terminale]] e digitare: {{{
sudo chmod u+x /etc/grub.d/XX_script
}}}
prestando attenzione a sostituire «XX_script» con il nome dello script desiderato.
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Voci definite dall'utente ==
0. Creare con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] un file in `/etc/grub.d/` in modo che rispetti la nomenclatura standard `XX_script`
0. Incollare il seguente contenuto per le voci '''GNU/Linux''':{{{
#!/bin/sh
cat << _EOF
menuentry "Nome distribuzione" {
set root=(hdX,Y)
linux /boot/vmlinuz-X.Y root=UUID=xxxxxxxxxxxxxxxxxxxxx
initrd /boot/initrd.img-X.Y
}
_EOF
}}}
prestando attenzione ad inserire i parametri desiderati come da tabella:
||'''Opzione''' ||<:>'''Significato''' ||
||`Nome distribuzione`|| Il nome desiderato per la voce ||
||`hdX,Y`||La partizione desiderata||
||`/boot/vmlinuz-X.Y`||Il file vmlinuz specifico del kernel desiderato visionabile in `/boot/`||
||`xxxxxxxxxxxxxxxxxxxxx`||Il codice UUID della partizione desiderata ottenibile digitando in un [[AmministrazioneSistema/Terminale| terminale]] `sudo blkid /dev/sdXY`||
||`/boot/initrd.img-X.Y`||Il file initrd.img specifico del kernel desiderato visionabile in `/boot/`||
0. Incollare il seguente contenuto per le voci inerenti ad altri sistemi operativi: {{{
#!/bin/sh
cat << _EOF
menuentry "Nome sistema operativo" {
set root=(hdX,Y)
chainloader +1
}
_EOF
}}}
prestando attenzione a sostituire «Nome sistema operativo» con il nome desiderato per la voce e «hdX,Y» con la partizione desiderata.
0. Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
= Limitare e rimuovere voci =
== Disabilitare script ==
È possibile disabilitare uno [[AmministrazioneSistema/Grub/FileCartelle|script di configurazione]] per fare in modo che tutte le voci legate ad esso non compaiano nel menù di '''GRUB''' privandolo dei permessi di esecuzione:
Digitare in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{
sudo chmod -x /etc/grub.d/XX_script
}}}
prestando attenzione a sostituire «XX_script» col nome dello script desiderato.
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Kernel vecchi ==
Il modo più semplice per eliminare voci di vecchi kernel dal menù di '''Grub''' in maniera automatica, consiste nel disinstallare i pacchetti dei relativi kernel non più utilizzati. Il file `grub.cfg` verrà aggiornato automaticamente. È tuttavia possibile impostare un limite ai kernel visualizzati senza rimuoverli dalla propria installazione:
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/10_linux` e rintracciare le seguenti righe:{{{
while [ "x$list" != "x" ] ; do
linux=`version_find_latest $list`
echo "Found linux image: $linux" >&2
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
for i in "initrd.img-${version}" "initrd-${version}.img" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
"initrd-${alt_version}" "initramfs-${alt_version}.img" \
"initramfs-genkernel-${version}" \
"initramfs-genkernel-${alt_version}"; do
if test -e "${dirname}/${i}" ; then
initrd="$i"
break
fi
done
config=
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
if test -e "${i}" ; then
config="${i}"
break
fi
done
initramfs=
if test -n "${config}" ; then
initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
fi
if test -n "${initrd}" ; then
echo "Found initrd image: ${dirname}/${initrd}" >&2
elif test -z "${initramfs}" ; then
# "UUID=" magic is parsed by initrd or initramfs. Since there's
# no initrd or builtin initramfs, it can't work here.
linux_root_device_thisversion=${GRUB_DEVICE}
fi
linux_entry "${OS}" "${version}" false \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
quiet
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
if [ -x /lib/recovery-mode/recovery-menu ]; then
linux_entry "${OS}" "${version}" true \
"recovery nomodeset ${GRUB_CMDLINE_LINUX}"
else
linux_entry "${OS}" "${version}" true \
"single nomodeset ${GRUB_CMDLINE_LINUX}"
fi
fi
list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
}}}
0. Aggiungere le seguenti righe:{{{
COUNTER=0
LINUX_KERNELS_DISPLAYED=X
}}} prima del testo sopraccitato, prestando attenzione a sostituire la «X» con il numero di kernel desiderati, e {{{
COUNTER=`expr $COUNTER + 1`
if [ $COUNTER -eq $LINUX_KERNELS_DISPLAYED ]; then
list=""
fi
}}} dopo il testo, ottenendo un risultato simile:{{{
COUNTER=0
LINUX_KERNELS_DISPLAYED=X
while [ "x$list" != "x" ] ; do
linux=`version_find_latest $list`
echo "Found linux image: $linux" >&2
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
for i in "initrd.img-${version}" "initrd-${version}.img" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
"initrd-${alt_version}" "initramfs-${alt_version}.img" \
"initramfs-genkernel-${version}" \
"initramfs-genkernel-${alt_version}"; do
if test -e "${dirname}/${i}" ; then
initrd="$i"
break
fi
done
config=
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
if test -e "${i}" ; then
config="${i}"
break
fi
done
initramfs=
if test -n "${config}" ; then
initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
fi
if test -n "${initrd}" ; then
echo "Found initrd image: ${dirname}/${initrd}" >&2
elif test -z "${initramfs}" ; then
# "UUID=" magic is parsed by initrd or initramfs. Since there's
# no initrd or builtin initramfs, it can't work here.
linux_root_device_thisversion=${GRUB_DEVICE}
fi
linux_entry "${OS}" "${version}" false \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
quiet
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
if [ -x /lib/recovery-mode/recovery-menu ]; then
linux_entry "${OS}" "${version}" true \
"recovery nomodeset ${GRUB_CMDLINE_LINUX}"
else
linux_entry "${OS}" "${version}" true \
"single nomodeset ${GRUB_CMDLINE_LINUX}"
fi
fi
list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
COUNTER=`expr $COUNTER + 1`
if [ $COUNTER -eq $LINUX_KERNELS_DISPLAYED ]; then
list=""
fi
}}}
0. Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Kernel specifici ==
Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/boot/grub/grub.cfg` e annotare la versione del kernel desiderata, ad esempio `3.0.X-Y-generic`.
Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/10_linux` e cercare le seguenti righe:{{{
linux_entry "${OS}" "${version}" false \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
quiet
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
if [ -x /lib/recovery-mode/recovery-menu ]; then
linux_entry "${OS}" "${version}" true \
"recovery nomodeset ${GRUB_CMDLINE_LINUX}"
else
linux_entry "${OS}" "${version}" true \
"single nomodeset ${GRUB_CMDLINE_LINUX}"
fi
fi
}}}
Inserire prima {{{
if [ ${version} != "X.Y.Z-generic" ]; then
}}}
facendo anttenzione a sostituire «X.Y.Z-generic» con la versione annotata in precedenza e inserire alla fine {{{
fi
}}}
ottenendo qualcosa di simile a questo: {{{
if [ ${version} != "X.Y.Z-generic" ]; then
linux_entry "${OS}" "${version}" false \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
quiet
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
if [ -x /lib/recovery-mode/recovery-menu ]; then
linux_entry "${OS}" "${version}" true \
"recovery nomodeset ${GRUB_CMDLINE_LINUX}"
else
linux_entry "${OS}" "${version}" true \
"single nomodeset ${GRUB_CMDLINE_LINUX}"
fi
fi
fi
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Altri sistemi operativi rimossi ==
Una volta disinstallato un sistema operativo, per eliminare la sua voce nel menù di '''GRUB''', è sufficiente aggiornare il boot loader digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando:{{{
sudo update-grub
}}}
== memtest86+ ==
Per rimuovere '''memtest86+''' è sufficiente togliere i permessi di esecuzione al file `/etc/grub.d/20_memtest86+`.
Aprire un [[AmministrazioneSistema/Terminale| terminale]] e digitare: {{{
sudo chmod -x /etc/grub.d/20_memtest86+
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Recovery mode ==
Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/default/grub` e aggiungere alla fine la seguente riga:{{{
GRUB_DISABLE_LINUX_RECOVERY=true
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Sottomenù Linux ==
{{{#!wiki note
Eliminando i sottomenù non verranno eliminati i riferimenti ai kernel contenuti bensì verrà ripristinato l'elenco semplice delle voci.
}}}
* Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `10_linux` e cercare le seguenti righe:{{{
if [ "$list" ] && ! $in_submenu; then
echo "submenu \"Previous Linux versions\" {"
in_submenu=:
fi
done
if $in_submenu; then
echo "}"
fi
}}} modificare commentando come segue: {{{
# if [ "$list" ] && ! $in_submenu; then
# echo "submenu \"Previous Linux versions\" {"
# in_submenu=:
# fi
done
#if $in_submenu; then
# echo "}"
#fi
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Kernel 32 o 64 bit di MacOSX ==
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/30_os-prober` e cercare le seguenti righe:{{{
osx_entry xnu_kernel 32
osx_entry xnu_kernel64 64
}}}
0. Cancellare o commentare la prima riga per eliminare la voce inerente al kernel 32bit o la seconda per il kernel 64bit. Esempio con riga commentata:{{{
##osx_entry xnu_kernel 32
osx_entry xnu_kernel64 64
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Windows recovery ==
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/boot/grub/grub.cfg`.
0. Individuare e annotare la riga inerente il boot della partizione di recovery di '''Windows''', ad esempio: {{{
Windows Vista (loader) (on /dev/sda1)
}}}
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/30_os-prober` e cercare le seguenti righe:{{{
for OS in ${OSPROBED} ; do
DEVICE="`echo ${OS} | cut -d ':' -f 1`"
LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
BOOT="`echo ${OS} | cut -d ':' -f 4`"
if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
}}} aggiungere alla fine delle stesse le seguenti righe:{{{
if [ "$LONGNAME" = "Windows Vista (loader)" ] && [ "${DEVICE}" = "/dev/sdXY" ] ; then
continue
fi
}}} prestando attenzione a inserire al posto di «Windows Vista (loader)» il nome esatto come annotato in precedenza e al posto di «sdXY» la partizione individuata nello stesso modo.
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Altre partizioni GNU/Linux ==
Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/30_os-prober` e cercare le seguenti righe:{{{
if [ -z "${LLABEL}" ] ; then
LLABEL="${LONGNAME}"
fi
}}} inserire immediatamente dopo {{{
if [ "${LROOT}" = "/dev/sdXY" ]; then
continue
fi
}}} prestando attenzione a sostituire «sdXY» con la partizione desiderata.
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
== Partizioni Windows ==
Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/30_os-prober` e cercare le seguenti righe:{{{
if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
}}} inserire immediatamente dopo {{{
if [ "${DEVICE}" = "/dev/sdXY" ]; then
continue
fi
}}} prestando attenzione a sostituire «sdXY» con la partizione desiderata.
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
= Nascondere GRUB in PC con più sistemi operativi =
{{{#!wiki important
Per i PC con solo Ubuntu usare l'opzione standard nel file `/etc/default/grub` come da [[AmministrazioneSistema/Grub/FileCartelle|guida]].
}}}
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/grub.d/30_os-prober` e cercare la seguente riga:{{{
if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
}}} sostituirla con quanto segue: {{{
if [ "x${found_other_os}" = "x" ] || [ "x${GRUB_FORCE_HIDDEN_MENU}" = "xtrue" ] ; then
}}}
0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/default/grub` e aggiungere le seguenti righe:{{{
GRUB_FORCE_HIDDEN_MENU="true"
export GRUB_FORCE_HIDDEN_MENU
}}}
Consultare il seguente [[AmministrazioneSistema/Grub#Comandi|paragrafo]].
----
CategoryAmministrazione