Come posso riparare grub? (Come recuperare Ubuntu dopo aver installato Windows?)

Ho installato Windows 7, che ha mangiato il file di avvio di Ubuntu. Quando si avvia il computer, ora va direttamente a Windows, senza darmi la possibilità di avviare Ubuntu.

Come posso recuperare Ubuntu?

Soluzione

Quando si installa Windows, Windows presume di essere l'unico sistema operativo (OS) sulla macchina, o almeno non tiene conto di Linux. Quindi sostituisce GRUB con il proprio boot loader. Quello che si deve fare è sostituire il boot loader di Windows con GRUB. Ho visto varie istruzioni per rimpiazzare GRUB, armeggiando con i comandi di GRUB o qualcosa del genere, ma per me il modo più semplice è semplicemente chroot nella tua installazione ed eseguire update-grub. Il chroot è ottimo perché ti permette di lavorare sulla tua installazione vera e propria, invece di cercare di reindirizzare le cose qua e là. È davvero pulito.

Ecco come:

  1. Avviare dal CD live o dalla USB live, in modalità "Prova Ubuntu".

  2. Determinate il numero della vostra partizione principale. sudo fdisk -l, sudo blkid o GParted (che dovrebbe essere già installato, di default, sulla sessione live) possono aiutarti qui. In questa risposta assumo che sia /dev/sda2, ma **assicurati di usare il numero di partizione corretto per il tuo sistema!

    Se la tua partizione principale è in un LVM, il dispositivo sarà invece situato in /dev/mapper/, molto probabilmente, /dev/mapper/{volume}--{os}-root dove {volume} è il nome del volume LVM e {os} è il sistema operativo. Eseguire ls /dev/mapper per il nome esatto.

  3. Montare la partizione:

     sudo mount /dev/sda2 /mnt # Sostituisci sda2 con la partizione del passo 2

    Se si hanno partizioni separate /boot, /var o /usr, ripetere i passi 2 e 3 per montare queste partizioni rispettivamente su /mnt/boot, /mnt/var e /mnt/usr. Per esempio,

     sudo mount /dev/sdXW /mnt/boot
     sudo mount /dev/sdXY /mnt/var
     sudo mount /dev/sdXZ /mnt/usr

    sostituendo sdXW, sdXY e sdXZ con i rispettivi numeri di partizione.

  4. Legare il mount ad altre cose necessarie:

     for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
  5. Se Ubuntu è installato in modalità EFI (vedi questa risposta se non sei sicuro), usa sudo fdisk -l | grep -i efi o GParted per trovare la tua partizione EFI. Avrà un'etichetta EFI. Monta questa partizione, sostituendo sdXY con il numero di partizione effettivo del tuo sistema:

     sudo mount /dev/sdXY /mnt/boot/efi
  6. Fate il chroot nella vostra installazione di Ubuntu:

     sudo chroot /mnt
  7. A questo punto, siete nella vostra installazione, non nella sessione live, ed eseguite come root. Aggiornate grub:

     update-grub

    Se ottieni errori o se andare fino al passo 7 non ha risolto il tuo problema, vai al passo 8. (Altrimenti, è opzionale).

  8. A seconda della tua situazione, potresti dover reinstallare grub:

     grub-install /dev/sda
     update-grub # Per trovare e aggiungere windows al menu di grub.
  9. Se Ubuntu è installato in modalità EFI, e l'UUID della partizione EFI è cambiato, potrebbe essere necessario aggiornarlo in /etc/fstab. Confrontatelo:

     blkid | grep -i efi
     grep -i efi /etc/fstab

    Se l'UUID della partizione EFI corrente (da blkid) differisce da quello in /etc/fstab, aggiornare /etc/fstab con l'UUID corrente.

  10. Se tutto ha funzionato senza errori, allora sei a posto:

     uscire
     sudo reboot
  11. A questo punto, dovreste essere in grado di avviarvi normalmente.

Se non è possibile avviare normalmente, e non avete fatto il passo 8 perché non c'erano messaggi di errore, riprovate con il passo 8.

  • A volte dare a GRUB2 la corretta configurazione per le vostre partizioni non è sufficiente, e dovete effettivamente installarlo (o reinstallarlo) nel Master Boot Record, cosa che il passo 8 fa. L'esperienza nell'aiutare gli utenti in chat ha mostrato che il passo 8 è a volte necessario anche quando non vengono mostrati messaggi di errore.
Commentari (20)

Boot-Repair ha funzionato per me. È un'applicazione grafica molto molto facile da usare, non c'è bisogno di usare la linea di comando, basta cliccare un pulsante :)

Tutte le opzioni di riparazione disponibili sono descritte nella documentazione di Ubuntu e c'è una pagina separata che spiega come avviare Boot-Repair (creando un disco avviabile o installandolo in un disco live di Ubuntu esistente) e come usarlo.

Basta avviare un CD live di Ubuntu, installare Boot-Repair ed eseguirlo.

Commentari (1)

Quando GRUB è rotto, l'utente generalmente non ha accesso ai sistemi, quindi la riparazione deve essere eseguita da una sessione live (live-CD o live-USB).

Ci sono molte possibili cause per una rottura di GRUB: Windows che scrive sull'MBR, DRM che impedisce a GRUB di installarsi correttamente, bug dell'installatore, cambio di hardware... Aggiornare GRUB come proposto inizialmente da Scott non è generalmente sufficiente, reinstallare GRUB come proposto da Marco è più efficiente, ma ci sono comunque varie situazioni che richiedono altri tweaks (aggiungere opzioni al kernel, togliere il menu di GRUB, cambiare le opzioni di GRUB, scegliere la giusta architettura host...). Altre difficoltà per riparare GRUB sono l'uso di chroot, e la scelta delle giuste partizioni/dischi.

Tutto questo è stato reso facile in un piccolo strumento grafico: Boot-Repair. Esso sarà integrato nel CD di Ubuntu 12.04 per un uso più facile, ma per le persone che ne hanno bisogno ora, ci sono già alcune distro che lo integrano: Ubuntu-Secured-Remix (CD di Ubuntu che integra Boot-Repair), Boot-Repair-Disk (CD che esegue Boot-Repair all'avvio), ...

Spero che questo aiuti.

Commentari (0)