#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]]. = Modificare il nome della release = == Modificare il grub distributor == * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/default/grub` e modificare la seguente opzione: {{{ GRUB_DISTRIBUTOR=esempio }}} scrivendo al posto di «esempio» il nome desiderato. * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Modificare il nome nelle voci == Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/grub.d/10_linux` e cercare 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}" }}} aggiungere immediatamente dopo: {{{ codename="`lsb_release -cs`" version_no_generic="`echo ${version} | cut -d "-" -f 1-2`" }}} è ora 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|| Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Modificare "with Linux" == * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|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 }}} cancellare o modificare a piacere "`, with Linux`" ad esempio traducendo in italiano. * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} = 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_linux_zfs ||da fare|| ||10_linux||Localizza i kernel basati sull'ID del distributore determinato dal risultato del comando '''lsb_release -is'''|| ||20_linux_xen || da fare || ||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ù || ||30_uefi-firmware| da fare|| ||40_custom||Rappresenta un modello per aggiungere voci personalizzate al menù|| |||41_custom|| da fare || == 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. * Applicare la modifica digitando in una finestra di il seguente comando: {{{ sudo update-grub }}} == Voci definite dall'utente == * Creare con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] un file in `/etc/grub.d/` in modo che rispetti la nomenclatura standard `XX_script` * 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/`|| * 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. * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} = 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. * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Kernel vecchi == La strada più semplice per eliminare voci di kernel vecchi 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: * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|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' ' '` }}} * 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 }}} * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == 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/Sudo|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 }}} Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == 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+ }}} * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Recovery mode == * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/default/grub` e aggiungere alla fine la seguente riga: {{{ GRUB_DISABLE_LINUX_RECOVERY=true }}} * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Sottomenu == ||<> ||''Eliminando i sottomenu 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/Sudo|privilegi di amministrazione]] il file `/etc/default/grub`, cercare la riga: {{{ GRUB_CMDLINE_LINUX="" }}} e inserire sotto {{{ GRUB_DISABLE_SUBMENU=y }}} * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Kernel 32 o 64 bit di MacOSX == 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|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 }}} 0. Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == 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/Sudo|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. 0. Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Altre partizioni GNU/Linux == * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|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. * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} == Partizioni Windows == * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|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. * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} = Nascondere GRUB in PC con più sistemi operativi = ||<> ||'''Per i PC con solo Ubuntu usare l'opzione standard nel file `/etc/default/grub` come da [[AmministrazioneSistema/Grub/FileCartelle|guida]].''' || * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|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 }}} * Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/default/grub` e aggiungere le seguenti righe: {{{ GRUB_FORCE_HIDDEN_MENU="true" export GRUB_FORCE_HIDDEN_MENU }}} * Applicare la modifica digitando in un [[AmministrazioneSistema/Terminale| terminale]] il seguente comando: {{{ sudo update-grub }}} ---- CategoryAmministrazione