Come posso riparare Grub? (Come riavere Ubuntu dopo aver installato Windows?)

304

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

Come posso riavere Ubuntu?

    
posta Salahuddin 17.12.2011 - 08:02

11 risposte

312

Quando installi Windows, Windows presume che sia l'unico sistema operativo (OS) sulla macchina, o almeno non è responsabile di Linux. Quindi sostituisce GRUB con il proprio boot loader. Quello che devi fare è sostituire il boot loader di Windows con GRUB. Ho visto varie istruzioni per sostituire GRUB con i comandi GRUB o altri, ma per me il modo più semplice è semplicemente chroot nell'installazione ed eseguire update-grub . chroot è ottimo perché ti consente di lavorare sulla tua installazione effettiva, invece di provare a reindirizzare le cose qua e là. È veramente pulito.

Ecco come:

  1. Avvia dal CD live o dal vivo USB, in modalità "Prova Ubuntu".
  2. Determina il numero della partizione della partizione principale. sudo fdisk -l , sudo blkid o GParted (che dovrebbe già essere installato, per impostazione predefinita, nella sessione live) possono aiutarti qui. In questa risposta assumerò che è /dev/sda2 , ma assicurati di utilizzare il numero di partizione corretto per il tuo sistema!

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

  3. Monta la tua partizione:

    sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 2
    

    Se disponi di partizioni /boot , /var o /usr , ripeti i passaggi 2 e 3 per montare queste partizioni su /mnt/boot , /mnt/var e /mnt/usr rispettivamente . Ad 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. Bind monta altri elementi necessari:

    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 partizione EFI. Avrà un'etichetta di EFI . Monta questa partizione, sostituendo sdXY con il numero di partizione effettivo per il tuo sistema:

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

    sudo chroot /mnt
    
  7. A questo punto, si sta eseguendo l'installazione, non la sessione live e si esegue come root. Aggiorna grub:

    update-grub
    

    Se si verificano errori o se passare al punto 7 non ha risolto il problema, andare al passaggio 8. (In caso contrario, è facoltativo.)

  8. A seconda della situazione, potrebbe essere necessario reinstallare grub:

    grub-install /dev/sda
    update-grub # In order to find and add windows to grub menu.
    
  9. Se Ubuntu è installato in modalità EFI e l'UUID della partizione EFI è cambiato, potrebbe essere necessario aggiornarlo in /etc/fstab . Confrontalo:

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

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

  10. Se tutto funziona senza errori, allora tutto è pronto:

    exit
    sudo reboot
    
  11. A questo punto, dovresti riuscire ad avviarlo normalmente.

Se non riesci ad avviarlo normalmente e non hai eseguito il passaggio 8 perché non c'erano messaggi di errore, riprova con il passaggio 8.

  • A volte dare a GRUB2 la configurazione corretta per le tue partizioni non è sufficiente, e devi installarlo (o reinstallarlo) sul Master Boot Record, come fa il punto 8. L'esperienza nell'aiutare gli utenti in chat ha dimostrato che talvolta il passaggio 8 è necessario anche quando non vengono visualizzati messaggi di errore.
risposta data Scott Severance 17.12.2011 - 13:23
91

Il programma di installazione di Windows non si preoccupa di altri sistemi operativi nel sistema. Quindi scrive il proprio codice sul record di avvio principale. Fortunatamente anche la soluzione è facile.

Devi riparare l'MBR. Fai quanto segue

Avvio usando un live usb / cd di ubuntu. Usa boot-repair per risolvere il problema.

Dopo l'avvio con live usb / cd, esegui il seguente comando nel terminale:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

Utilizza Recomended Repair .

Maggiori informazioni - link

    
risposta data Web-E 01.09.2012 - 08:59
33

Non ho mai avuto problemi usando queste istruzioni:
link

Prima di tutto, devi avviare il tuo sistema da un cd live. Poi

  

METODO 3 - CHROOT

     

Questo metodo di installazione utilizza il comando chroot per accedere a   i file del sistema danneggiato. Una volta emesso il comando chroot, il comando   LiveCD tratta il sistema danneggiato / come proprio. I comandi vengono eseguiti in a   l'ambiente chroot influirà sui filesystem di sistema non funzionanti   quelli del LiveCD.

     
  1. Avvio sul desktop LiveCD (Ubuntu 9.10 o successivo). Tieni presente che il Live CD deve essere uguale al sistema che stai correggendo   32-bit o 64-bit (in caso contrario il chroot fallirà).

  2.   
  3. Apri un terminale (Applicazioni & gt; Accessori & gt; Terminale).

  4.   
  5. Determina la tua partizione di sistema normale - (l'interruttore è una "L" minuscola)

    sudo fdisk -l
    
         

    Se non sei sicuro, esegui

    df -Th  
    
         

    Cerca la dimensione corretta del disco e il formato ext3 o ext4.

  6.   
  7. Monta la tua normale partizione di sistema:

         

    Sostituisci la partizione corretta: sda1, sdb5, ecc.

    sudo mount /dev/sdXX /mnt  
    
         

    Esempio: sudo mount /dev/sda1 /mnt

  8.   
  9. Solo se hai una partizione di avvio separata:   sdYY è la designazione della partizione / boot (ad esempio sdb3)

    sudo mount /dev/sdYY /mnt/boot
    
  10.   
  11. Monta i filesystem virtuali critici:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /dev/pts /mnt/dev/pts
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  12.   
  13. Chroot nel tuo normale dispositivo di sistema:

    sudo chroot /mnt
    
  14.   
  15. Se non c'è /boot/grub/grub.cfg o non è corretto, creane uno usando

    update-grub
    
  16.   
  17. Reinstalla GRUB 2:

         

    Sostituisci il dispositivo corretto: sda, sdb, ecc. Non specificare un numero di partizione.

    grub-install /dev/sdX
    
  18.   
  19. Verifica l'installazione (usa il dispositivo corretto, ad esempio sda. Non specificare una partizione):

    sudo grub-install --recheck /dev/sdX
    
  20.   
  21. Esci da chroot: CTRL-D sulla tastiera

  22.   
  23. Smonta filesystem virtuali:

    sudo umount /mnt/dev/pts
    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    
  24.   
  25. Se hai montato una partizione / boot separata:

    sudo umount /mnt/boot
    
  26.   
  27. Smonta la directory / usr del LiveCD:

    sudo umount /mnt/usr
    
  28.   
  29. Smonta ultimo dispositivo:

    sudo umount /mnt
    
  30.   
  31. Reboot.

    sudo reboot
    
  32.   
    
risposta data desgua 27.04.2012 - 04:15
18

Avvia da una pendrive USB o CD Ubuntu dal vivo e
Installa Boot-Repair su ubuntu seguendo i passaggi

Apri il terminale ed esegui i seguenti comandi

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair

Dopo aver completato l'installazione, puoi lanciarlo dal menu System- & gt; Administration- & gt; Boot-Repair se usi Gnome, o cerca "boot-repair" nel dash se usi Unity. Quindi segui le seguenti schermate:

Metodo 1

  • Fai clic sulle opzioni avanzate

  • Spunta le opzioni mostrate sotto

  • Cambia la scheda in Grub Location Tab e seleziona le opzioni mostrate nella figura

Premi Applica e riavvia il sistema

Metodo 2

  • Seleziona le opzioni di riparazione di avvio consigliate come mostrato nella prima schermata

Documentazione:

    
risposta data Stormvirux 30.07.2013 - 21:25
10

Installa easyBCD in Windows 7 e fai

Aggiungi nuova voce & gt; Linux / BSD & gt; (seleziona) Grub2 & gt; (push) Aggiungi voce

Quindi puoi scegliere Ubuntu sul bootloader di Windows 7 per andare a Grub2 (bootloader precedente).

    
risposta data hamed 11.03.2012 - 23:09
5

Ora c'è una soluzione più semplice:

  1. Riavvia e inserisci le opzioni del BIOS del tuo computer (F2 o talvolta F11).
  2. vai al menu Boot e seleziona Priorità dispositivo di avvio
  3. Controlla se Boot Manager di Windows è sopra l'unità di avvio principale (solitamente HDD SATA ... o IDE HDD ... ). In tal caso, spostare la priorità del disco di avvio su quella di Windows Boot Manager.
  4. Salva le opzioni del BIOS e esci (in genere F10).

Questo è stato testato su un laptop Samsung Series 7 Chronos con doppio avvio di Windows 8 e Ubuntu 13.10, avvio protetto disabilitato, UEFI e avvio legacy abilitato.

    
risposta data scruss 15.12.2013 - 14:04
2

Boot Repair ha funzionato per me. È molto facile usare l'applicazione grafica, non è necessario utilizzare la riga di comando, è sufficiente fare clic su un pulsante:)

Tutte le opzioni di riparazione disponibili sono descritte nella documentazione di Ubuntu e vi è un separate page che spiega come avviare Boot-Repair (creando un disco di avvio o installandolo in un disco live di Ubuntu esistente) e come usarlo.

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

    
risposta data lorenzo-s 18.12.2011 - 02:41
2

Sui sistemi basati su EFI (come la maggior parte dei sistemi forniti con Windows 8 o versioni successive), Windows a volte aggiornerà il suo boot loader o lo ripristinerà come boot loader predefinito. Ciò è particolarmente comune durante la reinstallazione del sistema operativo o l'esecuzione di un importante aggiornamento del sistema (ad esempio l'aggiornamento all'ultima versione di Windows). Si noti che è improbabile che Windows cancelli effettivamente i file GRUB su un computer basato su EFI. Tutto ciò che è necessario per avviare Ubuntu è ancora a posto; è solo essere aggirato. In questi casi, una completa reinstallazione di GRUB è eccessiva, e infatti ha una (piccola) possibilità che crei nuovi problemi.

Quindi, invece di reinstallare GRUB in questi casi, ti consiglio di resettare il GRUB (o qualunque boot loader o boot manager che preferisci) come predefinito. Ci sono diversi modi per farlo, tra cui:

  • EasyUEFI : il modo più semplice per regolare l'ordine di avvio, se il sistema sta avviando direttamente su Windows, è utilizzare EasyUEFI, che è uno strumento GUI di terze parti gratuito (per la versione di base) per la gestione dell'ordine di avvio EFI. È abbastanza intuitivo: individua la voce ubuntu nell'elenco delle opzioni di avvio e spostalo in cima all'elenco. La prossima volta che riavvierai, GRUB dovrebbe venire. (Se usi qualcosa di diverso da GRUB, dovrai trovare la sua voce.)
  • bcdedit : lo strumento Windows bcdedit può essere utilizzato per impostare GRUB sull'ordine di avvio predefinito. Il comando bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi , digitato in una finestra del prompt dei comandi Administrator , lo farà; tuttavia, se il tuo computer si avvia con Secure Boot attivo, sarà richiesto bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi . In effetti, quest'ultimo comando di solito funziona anche se Secure Boot non è in uso, quindi prima userei quel comando. Nota che c'è uno strumento shell Windows più avanzato che richiede una sintassi leggermente diversa da quella che ho presentato, ma non ricordo i dettagli.
  • Avvio una tantum a Ubuntu - La maggior parte degli EFI fornisce un gestore di avvio integrato, a cui si accede premendo un tasto funzione, Esc o Invio all'inizio del processo di avvio del sistema. Le probabilità sono la voce ubuntu per l'avvio Ubuntu apparirà in questo menu di boot manager, che ti permetterà di avviare ad Ubuntu. In alternativa, è possibile avviare un supporto di emergenza Ubuntu, come il programma di installazione avviato in modalità "prova prima dell'installazione". In ogni caso, puoi utilizzare efibootmgr per regolare l'ordine di avvio:
    1. Digita sudo efibootmgr per vedere le voci di avvio.
    2. Prendi nota della BootOrder attuale.
    3. Trova la voce per ubuntu e nota il suo Boot#### number.
    4. Digita sudo efibootmgr -o xxxx[,yyyy,zzzz,....] per modificare l'ordine di avvio, rendendo xxxx il numero di Ubuntu. Probabilmente ciò che segue non è molto importante, anche se ho notato che sembra che Windows possa aggiungersi di nuovo all'inizio dell'ordine di avvio, se non è nella lista. Pertanto, dovresti probabilmente assicurarti che Windows sia nell'elenco e potrebbe essere più sicuro riordinare l'elenco in modo che tutte le voci originali siano presenti, solo con la voce ubuntu spostata in cima all'elenco.
  • Utilità di impostazione del firmware : alcune utilità di configurazione di EFI consentono di regolare l'ordine di avvio. I dettagli variano molto da un EFI all'altro, quindi non entrerò nello specifico, ma potresti cercare tale opzione nel tuo programma di installazione.

Ci sono altre varianti su queste procedure, come usare bcfg in una shell EFI, usando bless in macOS, usando il mio RINUNCIARE a fare un avvio una tantum, ecc. Avrei comunque iniziato con EasyUEFI; è probabile che sia la soluzione più semplice. A volte Windows insiste a fare di se stesso il valore predefinito ogni volta che si avvia, tuttavia, e i rapporti indicano che bcdedit potrebbe fare un lavoro migliore per gestire quel problema.

Si noti che nessuno dei precedenti si applica alle installazioni in modalità BIOS; tuttavia, dal momento che la maggior parte dei computer forniti con Windows 8 o successivo si avviano in modalità EFI, le installazioni in modalità BIOS stanno diventando sempre più rare, quindi in molti casi è meglio gestire il problema in modalità EFI piuttosto che reinstallare ciecamente GRUB.

    
risposta data Rod Smith 13.07.2017 - 17:03
1

Quando GRUB è danneggiato, l'utente in genere 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 di un'interruzione di GRUB: scrittura su MBR di Windows, DRM che impedisce a GRUB di installarsi correttamente, bug di installazione, modifica dell'hardware ... L'aggiornamento di GRUB come inizialmente proposto da Scott non è in genere sufficiente, reinstallare GRUB come proposto da Marco è più efficiente, ma ci sono comunque varie situazioni che richiedono altre modifiche (aggiungendo opzioni al kernel, nascondendo il menu di GRUB, cambiando le opzioni di GRUB, scegliendo la giusta architettura host ...). Altre difficoltà per la riparazione di GRUB sono l'uso di chroot e la scelta delle partizioni / dischi giusti.

Tutto questo è stato reso semplice con un piccolo strumento grafico: Boot-Repair . esso sarà integrato nel CD di Ubuntu 12.04 per un uso più semplice, 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 in esecuzione Boot- Riparazione all'avvio), ...

Spero che questo aiuti.

    
risposta data LovinBuntu 20.12.2011 - 09:58
0

Windows non vede partizioni formattate Linux. È necessario utilizzare gparted da un liveCD e creare una partizione primaria formattata NTFS con il flag di avvio.

Alcuni hanno avuto problemi se la nuova partizione primaria si trova dopo la partizione estesa dato che Windows non ripristina sempre correttamente la tabella delle partizioni. Meglio avere un buon backup e un backup separato della tabella delle partizioni.

Tabella delle partizioni di backup su file di testo & amp; salva su dispositivo esterno.

sudo sfdisk -d /dev/sda > PTsda.txt

Questo è solo per i sistemi MBR (msdos). Se l'installazione di Ubuntu si trova nell'unità di partizione GPT, è possibile installare Windows solo in modalità UEFI o convertire l'unità in MBR (msdos).

    
risposta data oldfred 30.07.2013 - 22:01
0

Solo il comando fsck ha corretto per me lo schermo grub-rescue .

Usa Boot-Repair per avviare da Live-CD, quindi apri Terminale

Ottieni il dispositivo corretto:

sudo fdisk -l

Devi trovare il dispositivo di avvio, il dispositivo di avvio ha * nella categoria di avvio come qui:

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1          2048   2000895   1998848  976M 82 Linux swap / Solaris
/dev/sda2  *    2000896 943716351 941715456  449G 83 Linux

Ora ripara il disco usando:

sudo fsck /dev/sda2

Nota: / dev / sda2 è il dispositivo di avvio in questo esempio.

Inserisci Y per correggere i problemi

Dopo aver inserito Y circa 2 volte, puoi fermare il processo fsck inserendo CTRL + C , perché la parte critica già fatto.

Reboot. Fatto.

    
risposta data Benny 25.07.2018 - 09:51

Leggi altre domande sui tag