Ho installato Windows 7, che ha mangiato il file di avvio di Ubuntu. Quando si avvia il computer, ora passa direttamente a Windows, senza darmi la possibilità di avviare Ubuntu.
Come posso riavere Ubuntu?
Ho installato Windows 7, che ha mangiato il file di avvio di Ubuntu. Quando si avvia il computer, ora passa direttamente a Windows, senza darmi la possibilità di avviare Ubuntu.
Come posso riavere Ubuntu?
Risposte:
Quando si installa Windows, Windows presuppone che sia l'unico sistema operativo (SO) 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 facendo confusione con i comandi di GRUB o alcuni di questi, ma per me il modo più semplice è semplicemente chroot
installarlo ed eseguirlo update-grub
. chroot
è fantastico perché ti consente di lavorare sulla tua installazione reale, invece di provare a reindirizzare le cose qua e là. È veramente pulito.
Ecco come:
Determina il numero di partizione della partizione principale. sudo fdisk -l
, sudo blkid
O GParted (che dovrebbe essere già installato, per impostazione predefinita, sulla sessione dal vivo) può aiutare qui. In questa risposta suppongo che lo sia /dev/sda2
, ma assicurati di usare il numero di partizione corretto per il tuo sistema!
Se la partizione principale si trova in un LVM , il dispositivo sarà invece localizzato /dev/mapper/
, molto probabilmente, /dev/mapper/{volume}--{os}-root
dove si {volume}
trova il nome del volume LVM ed {os}
è il sistema operativo. Eseguire ls /dev/mapper
il nome esatto.
Monta la tua partizione:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Se si dispone di un separato /boot
, /var
o /usr
partizioni , ripetere i passaggi 2 e 3 per montare queste partizioni a /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
sostituendo sdXW
, sdXY
e sdXZ
con i rispettivi numeri di partizione.
Bind mount alcune altre cose necessarie:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
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 di EFI
. Montare questa partizione, sostituendo sdXY
con il numero di partizione effettivo per il proprio sistema:
sudo mount /dev/sdXY /mnt/boot/efi
chroot
nella tua installazione di Ubuntu:
sudo chroot /mnt
A questo punto, sei nella tua installazione, non nella sessione live, ed esegui come root. Aggiorna grub:
update-grub
Se ricevi errori o se vai al passaggio 7 non ha risolto il problema, vai al passaggio 8. (Altrimenti, è facoltativo.)
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.
Se Ubuntu è installato in modalità EFI e l'UUID della partizione EFI è cambiato, potrebbe essere necessario aggiornarlo /etc/fstab
. Confrontalo:
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.
Se tutto ha funzionato senza errori, allora sei pronto:
exit
sudo reboot
A questo punto, dovresti essere in grado di avviarlo normalmente.
Se non riesci ad avviare normalmente e non hai eseguito il passaggio 8 perché non c'erano messaggi di errore, riprova con il passaggio 8.
grub-efi-amd64
e se si utilizza l'avvio protetto, è consigliabile utilizzarlo grub-install --uefi-secure-boot
. Questo è anche dettagliato in superuser.com/a/376471/197980
Il programma di installazione di Windows non si preoccupa degli altri sistemi operativi nel sistema. Quindi scrive il proprio codice sul record di avvio principale. Fortunatamente anche la soluzione è semplice.
Devi riparare l'MBR. Fai quanto segue
Avvia utilizzando un live usb / cd di ubuntu. Utilizzare boot-repair
per risolvere il problema.
Dopo l'avvio con live usb / cd, eseguire 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
Usa Recomended Repair
.
Maggiori informazioni - https://help.ubuntu.com/community/Boot-Repair
Eseguire l'avvio da un pendrive o CD USB Ubuntu live e
installare Boot-Repair su Ubuntu seguendo i passaggi seguenti
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, è possibile avviarlo dal menu Sistema-> Amministrazione-> Ripristino avvio se si utilizza Gnome oppure cercare "Ripristino avvio" nel trattino se si utilizza Unity. Quindi seguire i seguenti screenshot:
Metodo 1
Premi Applica e riavvia il sistema
Metodo 2
Basta installare easyBCD
in Windows 7 e farlo
Aggiungi nuova voce> Linux / BSD> (seleziona) Grub2> (premi) Aggiungi voce
Quindi puoi scegliere Ubuntu sul bootloader di Windows 7 per accedere a Grub2 (bootloader precedente).
Su sistemi basati su EFI (come la maggior parte dei sistemi forniti con Windows 8 o versioni successive), Windows a volte aggiorna il proprio caricatore di avvio o lo reimposta come caricatore di avvio predefinito. Ciò è particolarmente comune quando si reinstalla il sistema operativo o si esegue un importante aggiornamento del sistema (ad esempio l'aggiornamento all'ultima versione di Windows). Si noti che è improbabile che Windows cancelli effettivamente qualsiasi file GRUB su un computer basato su EFI. Tutto il necessario per avviare Ubuntu è ancora in atto; è solo stato bypassato. In questi casi, una reinstallazione completa di GRUB è eccessiva e, di fatto, comporta una (piccola) possibilità che creerà nuovi problemi.
Pertanto, invece di reinstallare GRUB in questi casi, consiglio di reimpostare GRUB (o qualunque boot loader o boot manager che preferisci) come predefinito. Esistono diversi modi per farlo, tra cui:
ubuntu
voce nell'elenco delle opzioni di avvio e spostala in cima all'elenco. Al prossimo riavvio, GRUB dovrebbe presentarsi. (Se usi qualcosa di diverso da GRUB, dovrai individuare la sua voce.)bcdedit
- Lo bcdedit
strumento Windows 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 dell'amministratore , lo farà; tuttavia, se il tuo computer si avvia con Secure Boot attivo, bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
sarà invece richiesto. In effetti, quest'ultimo comando di solito funziona anche se Secure Boot non è in uso, quindi utilizzerei prima quel comando. Nota che esiste uno strumento di shell di Windows più avanzato che richiede una sintassi leggermente diversa da quella che ho presentato, ma non ricordo i dettagli.ubuntu
voce di avvio Ubuntu venga visualizzata in questo menu del gestore di avvio, consentendoti di avviare Ubuntu. In alternativa, è possibile avviare un supporto di emergenza Ubuntu, come il programma di installazione avviato in modalità "prova prima di installare". In entrambi i casi, è quindi possibile utilizzare efibootmgr
per regolare l'ordine di avvio:
sudo efibootmgr
per visualizzare le voci di avvio.BootOrder
riga corrente .ubuntu
e annotane il Boot####
numero.sudo efibootmgr -o xxxx[,yyyy,zzzz,....]
per modificare l'ordine di avvio, creando xxxx
il numero per Ubuntu. Ciò che segue probabilmente non è molto importante, anche se ho notato che sembra che Windows si aggiunga nuovamente all'inizio dell'ordine di avvio se non è nell'elenco. Pertanto, dovresti probabilmente assicurarti che Windows sia nell'elenco e potrebbe essere più sicuro riordinare l'elenco in modo che siano presenti tutte le voci originali, proprio con la ubuntu
voce spostata in cima all'elenco.Esistono altre varianti di queste procedure, come l'utilizzo bcfg
in una shell EFI, l'utilizzo bless
in macOS, l'utilizzo di my rEFInd per eseguire un avvio singolo, ecc. Tuttavia, inizierei con EasyUEFI; è probabilmente la soluzione più semplice. A volte, però, Windows insiste sul fatto di renderlo predefinito ogni volta che si avvia e i rapporti indicano che bcdedit
potrebbe fare un lavoro migliore per affrontare quel problema.
Si noti che nessuna delle precedenti si applica alle installazioni in modalità BIOS; tuttavia, poiché la maggior parte dei computer forniti con Windows 8 o versioni successive si avviano in modalità EFI, le installazioni in modalità BIOS stanno diventando sempre più rare, quindi in molti casi è meglio affrontare il problema in modo EFI piuttosto che reinstallare ciecamente GRUB.
efibootmgr
di riordinare l'ordine di avvio (come descritto da Rod -> grazie!) che è stato rovinato da una win10 aggiornare. Successivamente il bootmanager di GRUB appare come prima prima dell'aggiornamento, quindi posso confermare che la soluzione fornita ha funzionato per me. Non sono riuscito a trovare la versione base di EasyUEFI ma solo una versione di prova della versione pro non gratuita offerta.
Ora esiste una soluzione più semplice:
Questo è stato testato su un laptop Chronos Samsung Series 7 con doppio avvio di Windows 8 e Ubuntu 13.10, avvio sicuro disabilitato, UEFI e avvio legacy abilitato.
Boot-Repair ha funzionato per me. È molto facile da 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 c'è una pagina separata 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 CD live di Ubuntu, installare Boot-Repair ed eseguirlo.
chroot
riparazione che su Google in giro per qualche altro strumento da installare.
Quando GRUB viene interrotto, l'utente generalmente non ha accesso ai sistemi, quindi la riparazione deve essere eseguita da una sessione live (live-CD o live-USB).
Esistono molte cause possibili per un'interruzione di GRUB: Windows scrive su MBR, DRM impedisce a GRUB di installarsi correttamente, bug del programma di installazione, modifica dell'hardware ... L'aggiornamento di GRUB come proposto inizialmente da Scott non è generalmente sufficiente, reinstallare GRUB come proposto da Marco è più efficiente, ma ci sono ancora diverse situazioni che richiedono altre modifiche (aggiunta di opzioni al kernel, scoperta del menu di GRUB, modifica delle opzioni di GRUB, scelta dell'architettura host corretta ...). Altre difficoltà per riparare GRUB sono l'uso di chroot e la scelta delle partizioni / dischi giusti.
Tutto questo è stato semplificato in un piccolo strumento grafico: Boot-Repair . Deve essere 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 che esegue Boot -Ripara all'avvio), ...
Spero che sia di aiuto.
Le risposte fornite da Scott e Web-E sono abbastanza buone e hanno aiutato molte volte. Ma molte volte, lo strumento di riparazione di avvio non è in grado di riparare grub a causa di problemi relativi alla piattaforma i386 e amd64 o a quelli in cui grub non riesce a trovare la efi
directory.
Ciò che ha risolto il mio problema più di 10 volte è eliminare manualmente le vecchie installazioni di grub e installarne una nuova.
Quindi, prima esegui i primi 6 passaggi dalla risposta di Scott in cui puoi saltare il 5 ° passaggio se dà un errore:
- Avvia dal CD live o USB live, in modalità "Prova Ubuntu".
Determina il numero di partizione della partizione principale.
sudo fdisk -l
,sudo blkid
O GParted (che dovrebbe essere già installato, per impostazione predefinita, sulla sessione dal vivo) può aiutare qui. In questa risposta suppongo che lo sia/dev/sda2
, ma assicurati di usare il numero di partizione corretto per il tuo sistema!Se la partizione principale si trova in un LVM , il dispositivo sarà invece localizzato
/dev/mapper/
, molto probabilmente,/dev/mapper/{volume}--{os}-root
dove si{volume}
trova il nome del volume LVM ed{os}
è il sistema operativo. Eseguirels /dev/mapper
il nome esatto.Monta la tua partizione:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Se si dispone di un separato
/boot
,/var
o/usr
partizioni , ripetere i passaggi 2 e 3 per montare queste partizioni a/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
sostituendo
sdXW
,sdXY
esdXZ
con i rispettivi numeri di partizione.Bind mount alcune altre cose necessarie:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Se Ubuntu è installato in modalità EFI ([vedi questa risposta se non sei sicuro] [efi]), usa
sudo fdisk -l | grep -i efi
o GParted per trovare la tua partizione EFI. Avrà un'etichetta diEFI
. Montare questa partizione, sostituendosdXY
con il numero di partizione effettivo per il proprio sistema:sudo mount /dev/sdXY /mnt/boot/efi
chroot
nella tua installazione di Ubuntu:sudo chroot /mnt
Quindi procedere come segue:
sudo dpkg --configure -a
sudo apt install -fy
sudo apt purge -y grub*-common grub-common:i386 shim-signed
sudo apt install -y grub-pc
sdXY
per installare il bootloader. Trova dove è installato il tuo attuale sistema operativo usando il sudo fdisk -l
comando. Sarà etichettato come Linux
. Navigare in quella finestra usando il Tabtasto e selezionare un'opzione usando il Spacetasto.sudo grub-update
un doppio controllo.Se il problema persiste, puoi leggere la wiki di Arch per capire veramente di grub per affrontare molte altre varietà di problemi. (Sì, aiuta anche per Ubuntu!).
Windows non vede le 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 è dopo la partizione estesa poiché Windows non ripristina sempre correttamente la tabella delle partizioni. Meglio avere buoni backup e un backup separato della tabella delle partizioni.
Eseguire il backup della tabella delle partizioni in un file di testo e salvarlo su un dispositivo esterno.
sudo sfdisk -d /dev/sda > PTsda.txt
Questo è solo per i sistemi MBR (msdos). Se l'installazione di Ubuntu è nell'unità di partizione GPT, è possibile installare Windows solo in modalità UEFI o riconvertire l'unità in MBR (msdos).
Solo il fsck
comando ha riparato lo grub-rescue
schermo per me.
Utilizzare 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 *
nella 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 -y
Nota: / dev / sda2 è il dispositivo di avvio in questo esempio.
Riavvia al termine. Fatto.
La risposta di Scott Severance è valida e dettagliata, ma esiste una risoluzione che non richiede alcun dispositivo di avvio esterno e quindi non è necessario identificare e montare manualmente tutte le partizioni Ubuntu che portano al chroot
.
In Windows 10, è possibile utilizzare Advanced Recovery
per selezionare un dispositivo (partizione?) Da cui avviare.
Vai a Settings
e scegli Update & Security
:
Vai a Recovery
:
Da Advanced Startup
scegliereRestart Now
Quindi scegliere Use a Device
e tutte le opzioni di avvio dovrebbero essere presentate a voi. Scegli la partizione 'Ubuntu' e il tuo PC dovrebbe quindi avviarsi da quella partizione.
Una volta avviato nel mio solito ambiente Ubuntu, ho provato a correre grub-update
ma questo non ha fatto cambiamenti.
Ho quindi trovato la mia /boot/efi
partizione che era /dev/nvme0n1p1
e funzionava sudo grub-install /dev/nvme0n1p1
e poi sudo update-grub
.
Questo ha ripristinato più volte il mio record di avvio principale poiché sembra che ci sia una nuova politica di Windows 10 di sovrascrivere l'MBR su aggiornamenti minori .
Ho avuto un problema diverso, causato (probabilmente) boot-repair
cancellando i miei /etc/grub.d/
modelli, delineato nella mia domanda qui: Ubuntu 18.04 non si avvia dopo l'installazione di Windows 10
Come sottolineato dal commento di @karels, la configurazione di grub viene generata usando i file in /etc/grub.d
. La mia directory conteneva solo /etc/grub.d/25_custom
, che conteneva strane voci di menu che puntavano a immagini .efi inesistenti. Sembrava che /etc/grub.d
forse i miei modelli fossero stati eliminati boot-repair
.
Ho risolto questo problema con:
sudo mount /dev/sdxx /mnt
sudo cp /etc/grub.d/* /mnt/etc/grub.d/
sudo update-grub