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


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?


307
2017-12-17 07:02


origine


Penso che sia un compito comune, ho anche due HDD e Ubuntu + Windows. Spero che tu possa ripararlo nel modo giusto. Prova a seguire Questo tutorial. Qualsiasi domanda, chiedimi! - antivirtel
Correlato (quando GRUB è stato installato su MBR del disco errato): Problema di salvataggio di Grub dopo aver installato Ubuntu - Eliah Kagan
Sì, puoi, devi solo fare un normale avvio e installare con Windows e poi dovrebbe apparire nel menu di avvio di Grub all'avvio del computer. - Rampoo1208
So che questo è un thread vecchio, ma ho risolto il problema cambiando la modalità di avvio nel BIOS da UEFI a Legacy.
NOTA: la risposta accettata è un'istruzione generale su come riparare grub. È applicabile anche all'ampia varietà di circostanze in cui GRUB è scritto in modo errato dall'installatore (ubiquità). - Danatela


risposte:


Quando si installa Windows, Windows presuppone che sia l'unico sistema operativo (sistema operativo) sulla macchina, o almeno non tiene conto 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 alcuni di questi, ma per me il modo più semplice è semplicemente chroot nella tua installazione ed esegui update-grub. chroot è ottimo perché ti permette di lavorare sulla tua installazione vera e propria, 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 essere già installato, per impostazione predefinita, nella sessione live) può aiutarti qui. Assumo in questa risposta che è così /dev/sda2, ma assicurati di utilizzare il numero di partizione corretto per il tuo sistema!

    Se la partizione principale è in un LVM, il dispositivo verrà invece posizionato in /dev/mapper/, più 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. Monta la tua partizione:

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

    Se hai un separato /boot, /var o /usr partizioni, ripetere i passaggi 2 e 3 per montare queste partizioni su /mnt/boot, /mnt/var e /mnt/usr rispettivamente. Per esempio,

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

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

  4. Bind montare alcune 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), uso sudo fdisk -l | grep -i efi o GParted per trovare la partizione EFI. Avrà un'etichetta di EFI. Montare 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 è nell'installazione, non nella sessione live e in esecuzione come root. Aggiorna grub:

    update-grub
    

    Se si verificano errori o se passare al passaggio 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 è stato modificato, potrebbe essere necessario aggiornarlo /etc/fstab. Confrontalo:

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

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

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

    exit
    sudo reboot
    
  11. A questo punto, dovresti essere in grado di avviarsi normalmente.

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

  • A volte dare a GRUB2 il corretto configurazione per le tue partizioni non è sufficiente, e devi installarlo (o reinstallarlo) sul Master Boot Record, come fa il punto 8. L'esperienza di aiutare gli utenti in chat ha dimostrato che talvolta è necessario eseguire il passaggio 8 anche quando non vengono visualizzati messaggi di errore.

314
2017-12-17 12:23



I commenti non sono per discussioni estese; questa conversazione è stata trasferito in chat. - Thomas Ward♦
Voglio comunque che Windows sia il mio sistema operativo di avvio principale. È ancora la soluzione giusta? Come faccio a scegliere quale sistema operativo avviare? F11? - Jeff
@ScottSeverance Ho visto dal tuo profilo che vivi in ​​DFW. Hai preso in considerazione l'idea di dare lezioni o esercitazioni dal vivo per portare le persone in profondità in Linux? - Mohammed Joraid
Questi problemi non invecchiano: D - Non che quando si ha a che fare con EFI, potrebbe essere necessario installare grub-efi-amd64 e se si utilizza l'avvio sicuro che si desidera utilizzare grub-install --uefi-secure-boot. Questo è anche dettagliato in superuser.com/a/376471/197980 - Raffael
Questa soluzione è applicabile anche per Windows 10 su computer con BIOS (ad es. UEFI). La domanda su quale dei due si può rispondere con questo suggerimento - thewindowsclub.com/check-if-uefi-or-bios. - okolnost


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. Fare quanto segue

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

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

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

Uso Recomended Repair.

enter image description here

Ulteriori informazioni - https://help.ubuntu.com/community/Boot-Repair


92
2017-09-01 06:59



intendi dire che è intenzionale dalle persone Microsoft ?? Anche il dual boot ha funzionato con Windows 7, quindi non contraddice la prima linea che "Il programma di installazione di Windows non si occupa di altri sistemi operativi nel sistema." - Shagun Sodhani
Windows si interrompe sempre più e 'un problema molto comune e uno ha avuto a che fare con me stesso. La risposta è ancora valida e dovrebbe risolvere il problema. - damien
hai installato Windows 7 prima di Linux. Quindi linux riconosce Windows non Windows riconosciuto Linux. Prima di reinstallare windows7, vedrai cosa intendo. - Web-E
Non farlo quando hai partizioni crittografate (luks), lo ha incasinato. Installa anche GRUB con apt-get - nessuna idea del perché lo stia facendo. - Meng Tian
la riparazione di avvio supporta molto bene la modalità legacy, forse è necessario avviare il cd / usb live anche in modalità legacy @fuzzyanalysis :) - Web-E


Non ho mai avuto problemi usando queste istruzioni:
https://wiki.ubuntu.com/Grub2#Recover 

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. Avviare sul LiveCD Desktop (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. Aprire un terminale (Applicazioni> Accessori> Terminale).

  3. Determina la tua normale partizione di sistema (lo switch è una "L" minuscola)

    sudo fdisk -l
    

    Se non sei sicuro, corri

    df -Th  
    

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

  4. 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 

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

    sudo mount /dev/sdYY /mnt/boot
    
  6. Montare 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
    
  7. Chroot nel tuo normale dispositivo di sistema:

    sudo chroot /mnt
    
  8. Se non c'è /boot/grub/grub.cfg o non è corretto, crearne uno usando

    update-grub
    
  9. Reinstallare GRUB 2:

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

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

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

  12. Smontare i filesystem virtuali:

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

    sudo umount /mnt/boot
    
  14. Smontare la directory / usr del LiveCD:

    sudo umount /mnt/usr
    
  15. Smonta ultimo dispositivo:

    sudo umount /mnt
    
  16. Reboot.

    sudo reboot
    

34
2018-04-27 02:15



Solo una nota che non è necessario preoccuparsi di cose da smontare, perché il reboot si prenderà automaticamente cura di questo. invio umount i comandi fanno perdere tempo. - Scott Severance
sudo umount -a dovrebbe prendersi cura di loro, pure. Non è una cattiva pratica se hai i pochi momenti. Almeno ti ricorda cosa sta succedendo, e in alcuni casi (angolari / marginali) può impedire il riavvio per avvisarti o aspettare input. - belacqua
+1 per attenzione sulla partizione separata / di avvio. - qed
L'ho fatto più volte su sistemi diversi e sono d'accordo sul fatto che i risultati parlano da soli (anche se salgo anch'io l'umount). - Elder Geek


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

Aprire il terminale ed eseguire 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 Sistema-> Amministrazione-> Ripristino all'avvio se usi Gnome, o cerca "boot-repair" nel cruscotto se usi Unity. Quindi segui i seguenti screenshot:

Metodo 1

  • Clicca sulle opzioni avanzate

Initial screen

  • Spunta le opzioni mostrate sotto

advanced option

  • Modificare la scheda in Grub Location Tab e selezionare le opzioni mostrate nella figura

enter image description here

Premere Applica e riavviare il sistema

Metodo 2

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

Documentazione :


19
2017-07-30 19:25



Web-E ha già dato questo risposta. Forse migliorare quello invece? Ho lasciato un commento sul motivo per cui non ha funzionato. - Dan Dascalescu
Questo metodo ha funzionato per me dopo un caso particolarmente brutto di un aggiornamento di Windows 10 che sovrascriveva GRUB e quindi rompeva il proprio boot loader. Seguendo questa procedura ho riaperto Windows e Linux. Nel mio caso si trattava di Linux Mint 18.1, ei menu di riparazione all'avvio sembravano leggermente diversi, ma tutto funzionava bene. Grazie! - TheBigH


Basta installare easyBCD in Windows 7 e fare

Aggiungi nuova voce> Linux / BSD> (selezionare) Grub2> (push) Aggiungi voce

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


11
2018-03-11 22:09



Queste istruzioni da sole non ripristinano il Grub Bootloader - quando li ho provati, hanno aggiunto un'opzione di avvio extra in Windows che alla selezione, ha riavviato la mia macchina e poi mi ha portato a un prompt grub>. Quindi uno avrebbe bisogno di ulteriori passi su cosa fare dopo. - therobyouknow
easyBCD mi ha permesso di aggiungere e rimuovere le opzioni di avvio che potevo vedere sia in Windows Boot Loader che in BIOS, ma non hanno mai funzionato perché easyBCD si basa su una sorta di magia automatica per trovare partizioni Linux ... non funzionava con la mia partizione Linux era su un hard disk separato. - Fuzzy Analysis


Ora c'è una soluzione più semplice:

  1. Riavvia e inserisci le opzioni del BIOS del tuo computer (F2 o talvolta F11).
  2. Vai al Avvio menu e selezionare Priorità del dispositivo di avvio
  3. Controlla se Windows Boot Manager è sopra l'unità di avvio principale (di solito 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.


5
2017-12-15 13:04



Questo finì per essere l'opzione più pulita per me. Sono pochi altri colpi di chiave, ma hey, funziona. Ho una combinazione di dispositivi avviati Legacy e UEFI. Se gli utenti stanno avviando un SO molto più di un assortimento di altri, questo può essere più veloce (e più sicuro) nel lungo periodo. - Fuzzy Analysis
Questo ha funzionato anche per me, dopo che Windows 10 si è aggiornato automaticamente. - luis_js
Questa soluzione ha funzionato per me quando ho cancellato Ubuntu da Windows 10. - Vikas Gupta


Sui sistemi basati su EFI (come la maggior parte dei sistemi forniti con Windows 8 o versioni successive), Windows a volte aggiorna il proprio boot loader o lo ripristina 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 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, è da utilizzare EasyUEFI, che è uno strumento GUI di terze parti gratuito (per la versione di base) per la gestione dell'ordine di avvio EFI. È abbastanza auto-esplicativo: individuare il ubuntu voce nell'elenco delle opzioni di avvio e spostarlo 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 -- Le finestre bcdedit lo strumento può essere utilizzato per impostare GRUB sull'ordine di avvio predefinito. Il comando bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi, digitato in un Amministratore Finestra del prompt dei comandi, lo farà; tuttavia, se il tuo computer si avvia con Secure Boot attivo, bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi sarà richiesto invece. In effetti, l'ultimo comando lo farà generalmente funziona anche se Secure Boot non è in uso, quindi dovrei usare prima questo comando. Si noti 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 le ubuntu entrata per l'avvio Ubuntu apparirà in questo menu di boot manager, permettendoti 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 usare efibootmgr per regolare l'ordine di avvio:
    1. genere sudo efibootmgr per vedere le voci di avvio.
    2. Nota la corrente BootOrder linea.
    3. Trova la voce per ubuntu e nota il suo Boot#### numero.
    4. genere sudo efibootmgr -o xxxx[,yyyy,zzzz,....] per cambiare l'ordine di avvio, facendo 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. Quindi, probabilmente dovresti assicurarti che Windows sia nella lista, e potrebbe essere più sicuro riordinare l'elenco in modo che tutte le voci originali siano lì, solo con il ubuntu voce spostata in cima alla lista.
  • Utilità di installazione del firmware - Alcune utilità di configurazione di EFI consentono di regolare l'ordine di avvio. I dettagli variano molto da un EFI a un altro, quindi non entrerò nello specifico, ma potresti cercare tale opzione nel tuo programma di installazione.

Ci sono altre varianti su queste procedure, come l'uso bcfg in una shell EFI, utilizzando bless in macOS, usando il mio Ritrovato per fare un avvio una tantum, ecc. Avrei comunque iniziato con EasyUEFI; è probabile che sia la soluzione più semplice. A volte Windows insiste a fare il proprio valore predefinito ogni volta che si avvia, tuttavia, e i rapporti lo indicano bcdedit potrebbe fare un lavoro migliore per affrontare 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.


3
2017-07-13 15:03



manualmente l'avvio una tantum in linux (fedora28 nel mio caso) attraverso il boot manager EFI incorporato mi permetteva di usare efibootmgr per riordinare l'ordine di avvio (come descritto da Rod -> grazie!) che è stato modificato da un aggiornamento di win10. Successivamente, GRUB-bootmanager appare come prima dell'aggiornamento, quindi posso confermare che la soluzione fornita funzionava per me. Non sono riuscito a trovare la versione base di EasyUEFI ma solo una versione di prova della versione pro non libera offerta. - antiplex


Boot Repair ha funzionato per me. È molto semplice 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 nel Documentazione di Ubuntu e c'è un pagina separata spiegando 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.


2
2017-12-18 01:41



Sarebbe bello se ci fosse un modo più semplice per ottenere Boot Repair, però. È più veloce impostare solo a chroot riparazione rispetto a Google in giro per qualche altro strumento da installare. - Scott Severance


Quando GRUB è guasto, 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 installare 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 ciò è 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 ti aiuti.


1
2017-12-20 08:58





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 poiché Windows non ripristina sempre correttamente la tabella delle partizioni. Meglio avere un buon backup e un backup separato della tabella delle partizioni.

Backup della tabella delle partizioni in un file di testo e salvataggio 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).


0
2017-07-30 20:01



Le nuove versioni di sfdisk e fdisk che funzionano con unità partizionate con gpt in 16.04 o successive, eseguiranno anche il backup delle unità partizionate con gpt con il comando precedente. oldfred non ricorda cosa ha mangiato a cena ieri sera, quindi non so cosa abbia pubblicato nel 2013. :) - oldfred
Ciao Fred quando sto cucinando dimenticando la cena la scorsa notte è una benedizione. Abbiamo cancellato i nostri commenti precedenti. - WinEunuuchs2Unix


Solo fsck comando risolto il grub-rescue schermo per me.

Uso Boot-Repair per avviare da Live-CD, quindi aprire Terminale

Ottieni il dispositivo corretto:

sudo fdisk -l

È necessario trovare il dispositivo di avvio, il dispositivo di avvio ha * sotto la categoria Boot 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.


0
2017-07-25 07:51