L'aggiornamento a Windows 10 ha portato al salvataggio di grub


75

Stavo eseguendo il dual boot di Windows 7 e Linux Ubuntu sul mio desktop, e oggi è il giorno in cui hanno distribuito aggiornamenti gratuiti a Windows 10. Che emozione! Ho ricevuto l'aggiornamento, si stava installando e sono partito per fare un pisolino di 30 minuti. Tuttavia, quando sono tornato sul mio computer, mi ha portato al prompt di salvataggio di grub.

error: no such partition.
Entering rescue mode...
grub rescue>

Quando digito ottengo quanto segue ls:

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

Dopo una rapida occhiata alle persone che hanno riscontrato la richiesta di salvataggio di grub, ho digitato sete ottenuto il seguente

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

Ero ancora un po 'perso dopo aver scoperto che alcuni comandi come normalnon funzionavano, e poi ho trovato un tutorial video in cui si avvia da un cd di immagine Linux ed esegui alcuni comandi sul terminale. Fortunatamente, ho avuto il mio CD con me e sono partito da lì. Quando ho digitato sudo fdisk -lnel terminale, tuttavia, questo è quello che ho ottenuto:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Qui dice che nessuno dei miei dispositivi ha il sistema Linux in essi! E non ho potuto seguire il video tutorial più di così ...

Ho stuzzicato un po 'il cervello e ho determinato che sda2 conteneva il mio sistema Windows (poiché ricordo che il mio disco C: ha circa 700-GB di spazio). Dopo aver pensato un po 'di più, ricordo di aver assegnato circa 200 GB del mio spazio su disco rigido a qualcosa che è legato a Ubuntu durante l'installazione di Ubuntu. Non ricordo esattamente quale, ma penso che fosse sostanzialmente lo "spazio su disco rigido" di Ubuntu e non contenesse alcun file di avvio. Ho assegnato altre due cose per Linux, ma erano di dimensioni molto ridotte (non hanno ancora superato il limite di 1 GB).

Quindi, qualcuno qui può aiutarmi a riportare in pista il mio aggiornamento? Non mi dispiacerà se finirò per rimuovere completamente le partizioni che contengono Linux.


1
Se la partizione LInux è una logica, Windows non riscrive la tabella delle partizioni con essa. Usa testdisk. Alcuni hanno usato testdisk per ripristinarlo e hanno reinstallato grub su MBR e hanno riportato tutto alla normalità. Ma devi includere tutte le partizioni correttamente come Primarie e logiche affinché funzioni. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred

Nel layout sopra, sembra che alla fine del disco rimangano solo 3505 settori dopo il nuovo /dev/sda5o la (hd0,msdos5)partizione, il che ammonterebbe a soli 1,7 MB, quindi la partizione Linux difficilmente potrebbe nascondersi lì. La mia ipotesi migliore sarebbe che la voce della partizione Linux fosse in qualche modo spostata in quel posto (n. 5 anziché n. 6) e che il suo tipo fosse inspiegabilmente cambiato. La prima cosa da provare sarebbe ls (hd0,msdos5)/sul prompt di ripristino di GRUB.
Josip Rodin,

1
un motivo in più per non usare Windows, un sistema operativo così ignorante
Aydin K.,

Risposte:


64

Il mio computer è dotato di Windows 8 preinstallato, quindi ho ridotto la partizione di Windows per fare spazio a Ubuntu. È così che ha funzionato nell'ultimo anno. Dopo il secondo riavvio nell'aggiornamento di Windows 10, il computer non si è più avviato. GRUB ha visualizzato solo un grub rescueprompt dei comandi. Ho scoperto in seguito che il problema si è verificato perché Windows in qualche modo ha cambiato lo schema di partizione. La partizione di avvio (contenente i normali dati di GRUB) non era più dove GRUB se l'aspettava. Non so come e perché sia ​​successo.

La prima cosa che puoi fare nella modalità di salvataggio è vedere le partizioni con il lscomando. I miei erano:

  • (Hd0, gpt1),
  • (Hd0, GPT2),
  • eccetera.

Prova a scoprire quale partizione è la tua partizione di avvio. Non c'è Tabcompletamento, devi scriverlo completamente. Ho provato i seguenti comandi fino a quando non ho trovato la partizione giusta:

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

eccetera.

Quindi digitare setlo stesso prompt. Visualizzerà dove GRUB cerca i suoi file. Nel mio caso (hd0, gpt6) è passato a (hd0, gpt7). Il comando set visualizzato:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

Per tornare al normale GRUB, inizia cambiando l' prefiximpostazione per puntare alla partizione giusta. Nel mio caso il comando era:

set prefix=(hd0,gpt7)/boot/grub

Quindi è possibile passare dalla modalità di salvataggio alla modalità normale:

insmod normal
normal

Si potrebbe anche aver risolto l' rootimpostazione con:

set root=(hd0,gpt7)

Ma questo non è strettamente necessario, poiché non importa per le voci di caricamento della catena di Windows. Una volta entrato nel normale menu di GRUB, puoi avviare Windows e completare l'aggiornamento di Windows. Il problema è che devi dire a grub rescue delle partizioni giuste ad ogni riavvio. È così che l'ho fatto. Ho lasciato il problema di GRUB per dopo perché non ero sicuro se Windows avrebbe apportato ulteriori modifiche alle partizioni o all'avvio.

Al termine di Windows ho iniziato a risolvere i problemi di GRUB. Premere eper modificare le opzioni di avvio per Ubuntu. Ho cambiato tutto (hd0,gpt6)in (hd0,gpt7)e Ubuntu avviato.

Tuttavia, utilizzo una partizione crittografata e cryptswap. All'avvio Ubuntu mi ha chiesto la passphrase. Fortunatamente l'ho salvato durante l'installazione di Ubuntu e l'ho inserito all'avvio. Ubuntu si è avviato senza problemi.

Ho poi corretto il /boot/grub/grub.cfgfile in cui ho sostituito (hd0,gpt6)con (hd0,gpt7)ed eseguito:

sudo grub-install

A quel punto l'unico problema rimasto era la crittografia. Poiché il numero della partizione di Ubuntu root è stato aumentato di uno (7 anziché 6), la partizione di swap ha subito un cambiamento simile. Ho dovuto modificare il /etc/crypttabfile in modo che punti /dev/sda8invece di /dev/sda7.

Sto usando solo due partizioni per Ubuntu (root e swap). Se altri sistemi operativi che coesistono con Windows utilizzano più partizioni, potrebbero essere necessarie ulteriori modifiche. Soprattutto se le partizioni sono montate in base al loro numero e non ai loro UUID. Dai un'occhiata al tuo /etc/fstab. Se le partizioni sono identificate da UUID non dovrebbero esserci problemi. Ma se ci sono /dev/...righe, il numero dovrebbe essere corretto se queste partizioni fossero state rinumerate.


2
Questa è stata un'ottima risposta per me. Non avevo un disco di Ubuntu e stavo aggiornando Windows da 8.1 a 10 e ho avuto lo stesso problema. Quindi questa risposta mi dà ulteriore credito dato che sono stato in grado di inserirlo e continuare fino a quando l'aggiornamento è stato completato. Grazie per avermi salvato la pancetta.
dibs

2
Questa soluzione ha funzionato perfettamente per me quando Win 10 ha deciso di aggiornarsi e ha incasinato i record di avvio (il mio aggiornamento dalle 7 alle 10 è andato in
onda

9
Ho provato ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.per tutte le voci dal lscomando e ogni volta che ne viene fuori error: unkown filesystem.
Jacques MALAPRADE,

2
Grazie, mi ha aiutato. Una cosa che non era chiara per me (perché sono nuovo sia per Ubuntu che per Grub) era che la modifica della configurazione di grub doveva essere effettuata dopo l'avvio in Ubuntu (e non nel mini Emacs, che non supporta il salvataggio del file apparentemente.) Quindi ho avviato, quindi modificato la configurazione sudo nano /boot/grub/grub.cfge quindi eseguito sudo grub-install /dev/sda(per qualche motivo, la chiamata senza il parametro non è riuscita per me). E solo allora i cambiamenti permanenti hanno funzionato.
Nikita G.

1
Ho provato ls (hdo, msdos1) ecc. Per tutte le voci. Ottieni errore file system sconosciuto
Ashley G

13

Installare Windows (o aggiornarlo) insieme a Linux può essere problematico.

Prova questo: https://help.ubuntu.com/community/Boot-Repair



L'ho usato per risolvere un problema dopo aver installato l'anteprima tecnica di Windows 10 e ha funzionato. Fondamentalmente, ciò che fa è reinstallare grub per funzionare con tutti i sistemi operativi attualmente installati. Assicurati di dirlo per installare grub sulla tua partizione linux (sd #).

In bocca al lupo!


Ciao! Grazie per il tempo dedicato ad aiutare! In realtà non sono troppo sicuro di quale partizione sia! Ma giocherò un po 'per vedere se funziona.
LChaos2,

Nessun problema! Sono sempre felice di aiutarti.
Patrick,

Ciao! Quindi ho avviato il disco di riparazione-avvio e ho usato la riparazione consigliata. L'ho fatto e riavviato il mio computer, ma mi porta a Windows Boot Manager e mi dice che una recente modifica hardware o software potrebbe aver installato un file che è stato firmato in modo errato o danneggiato. Il file è \ Windows \ system32 \ winload.exe, stato 0xc0000428. Premendo invio mi porta al boot manager per scegliere quale sistema operativo avviare, mostrando solo Windows 7. Premendo invio su Windows 7 mi riporta alla stessa schermata di errore, risultante in un ciclo.
LChaos2,

Dopo aver effettuato alcune ricerche, sembra che il codice di errore (0xc000428) sia associato a winload.exe non verificato da una firma digitale. Dice qualcosa al riguardo?
Patrick,

1
Qualche aggiornamento sulla situazione @ LChaos2?
hg8

10

Prima di modificare le partizioni, eseguire un backup e salvare su un altro dispositivo. In caso contrario, passare all'unità corretta. Quindi puoi ricominciare da capo se ripristini un set errato con testdisk. Vuoi solo tutto il più logico mancante quando esegui il ripristino con testdisk.

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

La partizione mancante è qui o tra l'inizio della partizione estesa al 1547 ... e la prima partizione mostrata al 1915 ...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Puoi usare testdisk, ma usa CHS. Devi scegliere tutte le partizioni esistenti e la partizione mancante come logica. Potrebbe mostrare molte versioni a seconda di quante volte hai cambiato partizioni. Quindi scegli la dimensione che corrisponde a quella mancante senza sovrapporre altre partizioni correnti. Alcuni che hanno ripristinato correttamente sono stati solo in grado di avviarsi, altri devono reinstallare grub. E alcuni non sono stati in grado di correggere la partizione di ripristino.

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Un altro strumento di ripristino è il salvataggio parziale. Utilizza settori, ma l'intervallo fornito deve essere appena fuori dalla partizione mancante senza sovrapposizioni con le partizioni correnti. Meglio se conosci l'inizio e la fine esatti. Vedi uomo separato

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Utente che ha utilizzato il salvataggio parted:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969


3
Ho incontrato lo stesso identico problema e ho diviso "spazio libero" dove c'era Linux. Esegui il salvataggio con da / a dello "spazio libero" ed ext4 è tornato!
speedogoo,

3
Voglio solo andare in giro per dire che gparted ha mostrato spazio libero dove era ext4. Ho eseguito la divisione, impostato su settori, stampa partizioni, salvataggio con da / a dello "spazio libero" (non dimenticare di aggiungere una s per settori ai tuoi valori) ed ext4 è tornato, esattamente come @speedogoo. Non c'è bisogno di giocherellare con grub.
Amedee Van Gasse,

2
Dal momento che più persone hanno partizioni mancanti, cosa sta facendo ***** Windows 10 con la tabella delle partizioni? Nel mio caso ext4 era in una partizione logica.
Amedee Van Gasse,

Grazie per questo pangrattato. Sono stato in grado di recuperare la partizione Linux persa di mia moglie usando il salvataggio parziale. Una grub-install più tardi, eravamo di nuovo in azione.
bheeshmar,

7

È un brutto bug nel partizionatore di Windows e non specifico di Linux. Nel mio caso ha ironicamente cancellato una partizione NTFS.

Il programma di installazione di Windows 10 crea una nuova partizione (tua /dev/sda3) ritagliata alla fine della partizione di Windows principale sda2se la partizione di avvio di Windows sda1è troppo piccola per contenere l'ambiente di recupero di Windows 10.

Quando riscrive la tabella delle partizioni per fare ciò, per ogni partizione logica nella tabella delle partizioni estesa sda4, se si trova sul disco prima del numero di partizione precedente, si arrende.

Nel tuo caso le tue partizioni Linux si trovavano sul tuo disco prima del tuo nuovo sda5, ma avevano un numero di partizioni più elevato rispetto a sda5prima del ripartizionamento.

Se guardi attraverso gli enormi log di aggiornamento di Windows 10, vedrai un messaggio simile a "6 prima di 5, Nothing to do", insieme alle vecchie e alle nuove tabelle delle partizioni.

Windows non sovrascrive il contenuto delle partizioni che elimina, quindi è possibile recuperarle se riesci a trovare dove si trovano. Nel mio caso avevo dei backup della tabella delle partizioni, ma usare testdisk come spiegato nella risposta di oldfred ha ottime possibilità di trovarli tutti. Il salvataggio parziale sarà difficile da utilizzare poiché nel tuo caso è stata eliminata più di una partizione.

Per utilizzare testdisk dal tuo Live CD di Ubuntu, in un tipo di terminale sudo apt-get install testdiskper installarlo ed sudo testdiskeseguirlo.

Dopo aver riparato la tabella delle partizioni, la partizione Linux contenente GRUB ora potrebbe avere un numero diverso da prima, quindi potresti comunque finire al prompt di ripristino di GRUB. In tal caso, Boot Repair sarà ora in grado di riparare GRUB.

Ancora una volta, usando il tuo Live CD di Ubuntu, digita:

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

per installarlo ed eseguirlo.

Ora Windows può completare l'aggiornamento.


Grazie per la chiara spiegazione di quale sia il problema, questo mi ha aiutato molto. Ero nella stessa situazione descritta nella domanda. Tuttavia testdisk non è stato in grado di trovare la partizione linux cancellata. Per me il salvataggio parziale ha fatto il trucco e sono stato in grado di continuare l'aggiornamento di Windows 10 in seguito
entro il

"Windows non sovrascrive il contenuto delle partizioni che elimina" Come può essere? La nuova partizione creata per me (dopo aver ucciso le mie partizioni Linux) occupò l'intero disco. Quindi questo non significa che le scritture potrebbero andare ovunque.
Greg Bell,

Non posso esprimere quanto ti amo
aviggiano,

1

Per utilizzare la riparazione di avvio è necessario impostare nel BIOS:

  • Abilita UEFI (nel mio BIOS è :)

    Supporto legacy DISABLE

  • Disabilita l'avvio protetto

Probabilmente hai Secure Boot abilitato, quindi ricevi l'errore "File con firma errata".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.