#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