web analytics

Arch Linux: come nascondere il bootloader GRUB

In questa guida vedremo come nascondere facilmente il bootloader GRUB in Arch Linux, e accederne cliccando il tasto shift all’avvio.

Arch Linux - bootloader GRUB
Gran parte degli utenti Arch Linux utilizzano come bootloader GRUB2 vista la stabilità e l’ottimo supporto per i più diffusi file system (volendo possiamo anche utilizzare anche altre bootloader in Arch Linux come ad esempio GAG, Syslinux, LILO e molti altri ancora). Se abbiamo installato solo Arch Linux nel nostro personal computer possiamo anche nascondere il bootloader Grub, funzionalità che ci consentirà di velocizzare l’avvio del sistema operativo consentendoci comunque di poter accederne semplicemente cliccando il tasto Shift.
Questa funzionalità ad esempio è inclusa di default in Ubuntu e derivate, il bootloader sarà visibile in caso di dual boot ad esempio con Windows o altro sistema operativo.

Per nascondere il bootloader GRUB in Arch Linux dovremo per prima cosa editare /etc/default/grub, facciamo quindi un backup della configurazione di default digitando:

sudo cp /etc/default/grub /etc/default/grub.old

ed editiamo il tutto digitando:

sudo nano /etc/default/grub 

e aggiungiamo:

GRUB_FORCE_HIDDEN_MENU="true"

come da immagine sotto e salviamo il tutto con Ctrl più x e poi s

Arch Linux - editor GRUB

A questo punto dovremo creare /etc/grub.d/31_hold_shift che consentirà di visualizzare GRUB con cliccando il tasto Shift all’avvio.

Basta digitare:

sudo nano /etc/grub.d/31_hold_shift

e inseriamo quando segue:

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

source "${datarootdir}/grub/grub-mkconfig_lib"

found_other_os=

make_timeout () {

  if [ "x${GRUB_FORCE_HIDDEN_MENU}" = "xtrue" ] ; then 
    if [ "x${1}" != "x" ] ; then
      if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
    verbose=
      else
    verbose=" --verbose"
      fi

      if [ "x${1}" = "x0" ] ; then
    cat <<EOF
if [ "x${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
    cat << EOF
if [ "x${timeout}" != "x-1" ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  fi
}

adjust_timeout () {
  if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
    make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
    echo else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
    echo fi
  else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
  fi
}

  adjust_timeout

    cat <<EOF
if [ "x${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF

e salviamo il tutto con Ctrl più x e poi s

Non ci resta che aggiornare il bootloader GRUB digitando da terminale:

sudo chmod a+x /etc/grub.d/31_hold_shift
sudo grub-mkconfig -o /boot/grub/grub.cfg

e riavviamo.
Se tutto corretto avremo il bootloader GRUB nascosto.

Per ripristinare il tutto come da default basta digitare:

sudo rm /etc/grub.d/31_hold_shift
sudo cp /etc/default/grub.old /etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfg

e riavviamo.

Per maggiori informazioni consiglio di consultare la pagina dedicata a GRUB dal Wiki di Arch Linux.

Ringrazio il nostro lettore lupin77 per la segnalazione.