In this post I will show you how to reinstall the GRUB boot loader in case of problems.

In questo post vi mostrerò come reinstallare il boot loader GRUB in caso di problemi.

How to reinstall GRUB

Hi to everyone and welcome to this new post.
In today's post I'm going to show what to do, if for any reason, you need to reinstall GRUB.
Usually, the situation in which you need to reinstall GRUB is one of the following:

  • For a(n) (un)known problem, you can't boot any of the systems that are installed on your hard disk.
    Usually this happens because the Master Boot Record gets corrupted.
  • You're preparing a multi boot computer, but you made the "mistake" to install a GNU/Linux distribution BEFORE installing any Windows-like system, the result is that you can run only Windows.
    This happens because the Windows installer overwrites the Master Boot Record with a proprietary boot loader (known as NTLoader).

Let's see what are the steps to reinstall GRUB:

  1. Locate the GRUB configuration files (usually they are stored in the last GNU/Linux distribution you installed, on the /boot/grub directory).
    For simplicity I am going to assume that /dev/sda is your computer's hard disk and that the configurations files are stored in the /boot/grub directory of the /dev/sda1 partition.
  2. Boot from a live cd, one of those that have GRUB and other partition utilities.
  3. Once your live cd successfully booted, it's time to install GRUB.
    Invoke the usual terminal window and type (please notice that you may need root privileges for every mount and unmount operation):
    mount /dev/sda1 /mnt
    Now, install GRUB:
    grub-install --boot-directory=/mnt/boot /dev/sda
    The boot loader has been installed in the Master Boot Record, the configuration files will be stored into the specified boot directory, which, in this example, is the one present in the /dev/sda1 partition.

    GRUB installation screen
  4. GRUB needs a configuration file (grub.cfg) to display the bootable partitions.
    What grub-install does is to write the boot loader in the Master Boot Record, but it does not make the partition entries.
    This means that we still need to make these, otherwise what we did has no purpose.
    The command to use is update-grub, but unfortunately, this will not work from the live cd because the script assumes that the current file system is the one where the GRUB info is stored (which is false).
    In order to solve the problem we would have to boot /dev/sda1 and perform the command to generate the configuration.
    But we need the configuration file to boot /dev/sda1!
    This problem can be solved by setting up a temporary chroot environment for the /mnt directory (that is, where the /dev/sda1 partition is mounted), after that, we enter into a shell session and perform the command.
    The main partition is mounted, but for chroot to work, we need other special file systems to be mounted:
    mount --bind /dev /mnt/dev
    mount --bind /dev/pts /mnt/dev/pts
    mount --bind /sys /mnt/sys
    mount --bind /proc /mnt/proc
    The environment is now ready, enter it by typing:
    chroot /mnt
    You now are in the /dev/sda1 partition, just type:
    update-grub
    GRUB installation completed

    Once the procedure is over, exit from the chroot session:
    exit
    and finally, unmount everything:
    umount /mnt/dev/pts;umount /mnt/dev;umount /mnt/sys;umount /mnt/proc;
    umount /mnt
    Procedure completed

    Now you can close the terminal window and reboot.

You should be able now to boot and choose the system you want to execute.
That was all for today folks, see you another time, in another post!

Go back to the top, Share, Look at the comments or Comment yourself!

Come reinstallare GRUB

Salve a tutti e benvenuti in questo nuovo post.
Nel post di oggi vi mostrerò cosa fare, se per una qualsivoglia ragione, dovete reinstallare GRUB.
Di solito, la situazione in cui dovete reinstallare GRUB ricade tra queste:

  • Per un problema (s)conosciuto, non potete eseguire nessuno dei sistemi installati sul vostro disco rigido.
    Solitamente questo succede perché il Master Boot Record viene corrotto.
  • State preparando un computer multi boot, ma avete fatto l'"errore" di installare una distribuzione GNU/Linux PRIMA di installare un qualsiasi sistema Windows, il risultato è che riuscite ad eseguire soltanto Windows.
    Questo accade perché l'installatore di Windows sovrascrive il Master Boot Record con un boot loader proprietario (conosciuto come NTLoader).

Vediamo quali sono i passi da compiere per reinstallare GRUB:

  1. Localizzate i file di configurazione di GRUB (di solito sono immagazzinati nell'ultima distribuzione GNU/Linux che avete installato, nella cartella /boot/grub).
    Per semplicità assumerò che /dev/sda sia il disco rigido del vostro computer e che i file di configurazione risiedano nella cartella /boot/grub della partizione /dev/sda1.
  2. Eseguite un live cd, uno di quelli che hanno GRUB ed altri programmi per le partizioni.
  3. Una volta avviato correttamente il live cd, è ora di installare GRUB.
    Invocate la solita finestra di terminale e digitate (vi faccio notare che potreste aver bisogno dei privilegi di root per effettuare qualsiasi operazione di montaggio e smontaggio):
    mount /dev/sda1 /mnt
    Ora, installate GRUB:
    grub-install --boot-directory=/mnt/boot /dev/sda
    Il boot loader è stato installato sul Master Boot Record, i file di configurazione verranno salvati nella cartella boot specificata, che, in questo esempio, è quella presente nella partizione /dev/sda1.

    Schermata di installazione di GRUB
  4. GRUB ha bisogno di un file di configurazione (grub.cfg) per mostrare le partizioni avviabili.
    Quel che grub-install fa è scrivere il boot loader nel Master Boot Record, ma non crea le voci per le partizioni.
    Questo significa che abbiamo ancora bisogno di creare queste, altrimenti quello che abbiamo fatto non serve a nulla.
    Il comando da usare è update-grub, ma sfortunatamente non funziona dal live cd perché questo script assume che il file system attuale è quello in cui le informazioni di GRUB risiedono (il che è falso).
    Per risolvere il problema dovremmo avviare /dev/sda1 ed effettuare il comando per generare la configurazione.
    Ma abbiamo bisogno del file di configurazione per avviare /dev/sda1!
    Questo problema si può risolvere impostando un ambiente chroot temporaneo per la cartella /mnt (cioè, dove è montata la partizione /dev/sda1), dopo di ciò, entriamo in una sessione shell ed effettuiamo il comando.
    La partizione principale è montata, ma affinché chroot funzioni, abbiamo bisogno di montare altri file system speciali:
    mount --bind /dev /mnt/dev
    mount --bind /dev/pts /mnt/dev/pts
    mount --bind /sys /mnt/sys
    mount --bind /proc /mnt/proc
    Ora l'ambiente è pronto, entrateci digitando:
    chroot /mnt
    Ora siete nella partizione /dev/sda1, digitate:
    update-grub
    Installazione di GRUB completata

    Finita la procedura, uscite dalla sessione chroot:
    exit
    e infine, smontate tutto:
    umount /mnt/dev/pts;umount /mnt/dev;umount /mnt/sys;umount /mnt/proc;
    umount /mnt
    Procedura completata

    Ora potete chiudere la finestra di terminale e riavviare.

Ora dovreste riuscire ad avviare e scegliere il sistema che volete eseguire.
È tutto per oggi gente, ci si vede un'altra volta, in un altro post!

Torna in cima, Condividi, Guarda i commenti o Commenta tu stesso!