Atualização do Windows 10 levou ao resgate do grub


75

Eu estava inicializando o Windows 7 e o Linux Ubuntu na minha área de trabalho e hoje é o dia em que eles lançam atualizações gratuitas do Windows 10. Que legal! Recebi a atualização e ela estava sendo instalada e saí para tirar uma soneca de 30 minutos. No entanto, quando voltei ao meu computador, ele me levou ao prompt de resgate do grub.

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

Recebo o seguinte quando digito ls:

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

Após uma rápida olhada nas pessoas que encontraram o prompt de resgate do grub, digitei sete obtive o seguinte

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

Eu ainda estava meio perdido depois de descobrir que certos comandos normalnão funcionavam, e então encontrei um tutorial em vídeo onde você inicializa a partir de um CD de imagem do Linux e executa alguns comandos no terminal. Felizmente, eu tinha meu CD comigo e inicializei a partir daí. Quando digitei sudo fdisk -lo terminal, porém, foi o que obtive:

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

Diz aqui que nenhum dos meus dispositivos possui o sistema Linux! E eu não pude seguir o tutorial em vídeo mais do que isso ...

Eu provoquei um pouco meu cérebro e determinei que o sda2 continha meu sistema Windows (desde que me lembro que minha unidade C: tem cerca de 700-ish GB de espaço). Depois de pensar um pouco mais, lembro-me de atribuir cerca de 200 GB de espaço em disco a algo relacionado ao Ubuntu ao instalar o Ubuntu. Não me lembro exatamente qual, mas acho que era basicamente o "espaço em disco" do Ubuntu e não tinha nenhum arquivo de inicialização. Eu designei duas outras coisas para o linux, mas elas eram muito pequenas (ainda não quebrando a marca de 1 GB).

Então, alguém aqui pode me ajudar a recuperar minha atualização? Não me importarei se acabar removendo completamente as partições que possuem o Linux.


1
Se a partição do Linux for uma lógica, o Windows não reescreve a tabela de partições. Use testdisk. Alguns usaram o testdisk para restaurá-lo e reinstalaram o grub no MBR, e tudo voltou ao normal. Mas você deve incluir todas as partições corretamente como Primárias e lógicas para que funcione. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred

No layout acima, parece que restam apenas 3505 setores no final do disco após o novo /dev/sda5ou (hd0,msdos5)partição, o que equivaleria a apenas 1,7 MB, portanto a partição Linux dificilmente poderia estar escondida lá. Meu melhor palpite seria que a entrada da partição Linux de alguma forma foi deslocada para esse local (nº 5 em vez de nº 6) e que seu tipo foi inexplicavelmente alterado. A primeira coisa a tentar seria ls (hd0,msdos5)/no prompt de resgate do GRUB.
21416 Josip Rodin

1
mais uma razão para não usar o Windows, como um SO ignorante
Aydin K.

Respostas:


64

Meu computador veio com o Windows 8 pré-instalado, então reduzi a partição do Windows para abrir espaço para o Ubuntu. Foi assim que funcionou no último ano. Após a segunda reinicialização no Windows 10, o computador não inicializou mais. O GRUB exibiu apenas um grub rescueprompt de comando. Descobri mais tarde que o problema ocorreu porque o Windows de alguma forma mudou o esquema de partição. A partição de inicialização (contendo dados normais do GRUB) não estava mais onde o GRUB esperava. Não sei como e por que isso aconteceu.

A primeira coisa que você pode fazer no modo de recuperação é ver as partições com o lscomando Os meus eram:

  • (hd0, gpt1),
  • (hd0, gpt2),
  • etc.

Tente descobrir qual partição é sua partição de inicialização. Não há Tabconclusão, você precisa digitá-la completamente. Tentei os seguintes comandos até encontrar a partição correta:

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

etc.

Em seguida, digite seto mesmo prompt. Ele exibirá onde o GRUB procura seus arquivos. No meu caso (hd0, gpt6) mudou-se para (hd0, gpt7). O comando set exibido:

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

Para voltar ao GRUB normal, comece alterando a prefixconfiguração para apontar para a partição correta. No meu caso, o comando foi:

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

Depois, você pode alternar do modo de recuperação para o modo normal:

insmod normal
normal

Também se poderia ter fixado a rootconfiguração com:

set root=(hd0,gpt7)

Mas isso não é estritamente necessário, pois não importa para entradas de carregamento em cadeia do Windows. Uma vez no menu normal do GRUB, você pode inicializar o Windows e concluir sua atualização. O problema é que você precisa informar ao grub rescue as partições corretas em cada reinicialização. Foi assim que eu fiz. Deixei o problema do GRUB para mais tarde, porque não tinha certeza se o Windows faria mais algumas alterações nas partições ou na inicialização.

Quando o Windows terminou, comecei a resolver os problemas do GRUB. Pressione epara editar as opções de inicialização do Ubuntu. Mudei tudo (hd0,gpt6)para (hd0,gpt7)e o Ubuntu inicializou.

No entanto, eu uso partição criptografada e cryptswap. Na inicialização, o Ubuntu me pediu a senha. Felizmente eu salvei na instalação do Ubuntu e entrei na inicialização. Ubuntu inicializado sem problemas.

Eu, então, corrigiu o /boot/grub/grub.cfgarquivo onde eu substituído (hd0,gpt6)com (hd0,gpt7)e executadas:

sudo grub-install

Nesse ponto, o único problema restante era a criptografia. Como o número da partição raiz do Ubuntu foi aumentado em um (7 em vez de 6), a partição swap sofreu uma alteração semelhante. Eu tive que mudar o /etc/crypttabarquivo para apontar para em /dev/sda8vez de /dev/sda7.

Estou usando apenas duas partições para o Ubuntu (root e swap). Se outros sistemas operacionais coexistentes com o Windows usarem mais partições, poderá haver mais alterações. Especialmente se as partições forem montadas de acordo com seus números e não por seus UUIDs. Dê uma olhada no seu /etc/fstab. Se as partições forem identificadas pelo UUID, não haverá problemas. Mas se houver /dev/...linhas, o número deverá ser corrigido se essas partições tiverem sido renumeradas.


2
Essa foi uma ótima resposta para mim. Eu não tinha disco do Ubuntu e estava atualizando meu Windows de 8.1 para 10 e tive o mesmo problema. Portanto, essa resposta recebe crédito extra de mim, pois eu era capaz de inseri-la e continuar até a atualização ser concluída. Obrigado por salvar meu bacon.
dibs

2
Esta solução funcionou perfeitamente para mim quando Win 10 decidiu atualizar-se e confuso os registros de inicialização (meu upgrade 7-10 saiu sem um engate)
pedorro

9
Tentei o comando ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.para todas as entradas do lscomando e toda vez que ele aparecer error: unkown filesystem.
Jacques MALAPRADE

2
Obrigado, isso ajudou. Uma coisa que não ficou clara para mim (porque eu sou novo no Ubuntu e no Grub) foi que a edição da configuração do grub precisava ser feita após a inicialização no Ubuntu (e não no mini Emacs, que não suporta salvar o arquivo arquivo aparentemente.) Então eu inicializei, editei a configuração sudo nano /boot/grub/grub.cfge executei sudo grub-install /dev/sda(por algum motivo, a chamada sem o parâmetro falhou para mim). E só então as mudanças permanentes funcionaram.
Nikita G.

1
Tentei ls (hdo, msdos1) etc para todas as entradas. Erro de sistema de arquivos desconhecido
Ashley G

13

Instalar o Windows (ou atualizá-lo) ao lado do Linux pode ser problemático.

Tente isto: https://help.ubuntu.com/community/Boot-Repair



Usei-o para corrigir um problema depois de instalar a pré-visualização técnica do Windows 10 e funcionou. Basicamente, o que ele faz é reinstalar o grub para funcionar com todos os sistemas operacionais atualmente instalados. Não deixe de pedir para instalar o grub na sua partição linux (sd #).

Boa sorte!


Oi! Obrigado por tomar o tempo para ajudar! Na verdade, não tenho muita certeza de qual partição é! Mas vou mexer um pouco para ver se funciona.
LChaos2

Sem problemas! Sempre feliz em ajudar.
287 Patrick

Oi! Então, eu inicializei o disco de reparo de inicialização e usei o reparo recomendado. Fiz isso e reiniciei o computador, mas ele me leva ao gerenciador de inicialização do Windows e informa que uma alteração recente de hardware ou software pode ter instalado um arquivo assinado incorretamente ou danificado. O arquivo é \ Windows \ system32 \ winload.exe, status 0xc0000428. Pressionar enter leva-me ao gerenciador de inicialização para escolher qual sistema operacional iniciar, mostrando apenas o Windows 7. Pressionar enter no Windows 7 leva-me de volta à mesma tela de erro, resultando em um loop.
LChaos2

Depois de fazer algumas pesquisas, parece que o código de erro (0xc000428) está associado ao winload.exe que não está sendo verificado por alguma assinatura digital. Diz alguma coisa sobre isso?
317 Patrick

1
Alguma atualização sobre a situação @ LChaos2?
Hg8 31/07/2015

10

Antes de alterar partições, faça um backup e salve em outro dispositivo. Caso contrário, sda altere para corrigir a unidade. Em seguida, você poderá recomeçar se restaurar o conjunto incorreto com testdisk. Você deseja apenas toda a lógica atual e a falta de lógica ao restaurar com o testdisk.

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

Sua partição ausente está aqui ou entre o início da partição estendida em 1547 ... e a primeira partição mostrada em 1915 ...:

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

Você pode usar o testdisk, mas ele usa o CHS. Você precisa escolher todas as partições existentes e a partição ausente como lógica. Pode mostrar muitas versões, dependendo de quantas vezes você mudou as partições. Portanto, escolha o tamanho que corresponda à falta, sem sobrepor nenhuma outra partição atual. Alguns que foram restaurados corretamente foram capazes de inicializar, outros precisam reinstalar o grub. E alguns não conseguiram corrigir a partição de restauração.

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

Outra ferramenta de restauração é o resgate separado. Ele usa setores, mas o intervalo fornecido deve estar fora da partição ausente, sem sobreposição com as partições atuais. Melhor se você souber o início e o fim exatos. Veja o homem se separou

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

Usuário que usou o resgate separado:

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


3
Eu encontrei exatamente o mesmo problema e separei mostra "espaço livre" onde havia Linux. Execute o resgate com de / para o "espaço livre" e o ext4 está de volta!
speedogoo

3
Quero apenas dizer que o gparted mostrava espaço livre onde o ext4 costumava estar. Ran partiu, defina setores, imprima partições, salve com o / para o "espaço livre" (não esqueça de adicionar um s para setores aos seus valores) e ext4 estava de volta, exatamente o mesmo que @speedogoo. Não há necessidade de mexer com o grub.
Amedee Van Gasse

2
Como mais pessoas têm partições ausentes, o que o Windows 10 está fazendo com a tabela de partições? No meu caso, ext4 estava em uma partição lógica.
Amedee Van Gasse

Obrigado por esta trilha de navegação. Consegui recuperar a partição Linux perdida da minha esposa usando o resgate separado. Uma instalação do grub mais tarde, estávamos de volta à ação.
precisa saber é o seguinte

7

É um bug desagradável no particionador do Windows, e não específico do Linux. Ironicamente, ele excluiu uma partição NTFS no meu caso.

O instalador do Windows 10 cria uma nova partição (sua /dev/sda3) cortada no final da partição principal do Windows, sda2se a partição de inicialização do Windows sda1for muito pequena para conter o Windows 10 Recovery Environment.

Quando reescreve a tabela de partição para fazer isso, para todas as partições lógicas na tabela de partição estendida sda4, se estiver localizada no disco antes do número da partição anterior, ela desiste.

No seu caso, suas partições Linux estavam localizadas no seu disco antes do seu novo sda5, mas tinham números de partição mais altos do que sda5antes do reparticionamento.

Se você examinar os enormes logs de atualização do Windows 10, verá uma mensagem como "6 antes das 5, nada a fazer", junto com as tabelas de partição antigas e novas.

O Windows não substitui o conteúdo das partições excluídas, portanto, é possível recuperá-las se você puder encontrar onde elas estão. No meu caso, eu tinha backups da tabela de partição, mas usar o testdisk, conforme explicado na resposta do oldfred, tem uma excelente chance de encontrar todos eles. O resgate com partição será difícil de usar, pois mais de uma partição foi excluída no seu caso.

Para usar o testdisk do seu CD do Ubuntu Live, em um tipo de terminal sudo apt-get install testdiskpara instalá-lo e sudo testdiskexecutar.

Depois de reparar a tabela de partições, a partição Linux que contém o GRUB agora pode ter um número diferente de antes, então você ainda pode acabar no prompt de resgate do GRUB. Nesse caso, o Reparo de inicialização agora poderá corrigir o GRUB.

Novamente, usando o seu Ubuntu Live CD, digite:

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

para instalar e executá-lo.

Agora o Windows pode concluir sua atualização.


Obrigado pela explicação clara de qual é o problema, isso me ajudou muito. Eu estava na mesma situação descrita na pergunta. No entanto, o testdisk não conseguiu encontrar a partição linux excluída. Para mim, o Rescue Parted fez o truque e eu fui capaz de continuar a atualização do Windows 10 depois
25/10/2015

"O Windows não substitui o conteúdo das partições excluídas" Como pode ser isso? A nova partição que ele criou para mim (depois de matar minhas partições linux) ocupou todo o disco. Portanto, isso não significa que as gravações podem ir a qualquer lugar.
Greg Sino

Eu não posso expressar o quanto eu te amo
aviggiano

1

Para usar o reparo de inicialização, você precisa definir no BIOS:

  • Ativar UEFI (no meu BIOS é :)

    Suporte herdado DISABLE

  • Desativar inicialização segura

Provavelmente você tem o Secure Boot ativado, para obter o erro "arquivo assinado incorretamente".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.