2012-08-12 18:06:22 +0000 2012-08-12 18:06:22 +0000
123
123

Como posso reparar o Bootloader EFI do Windows 8?

Instalei o Windows 7 e o Windows 8 em modo EFI num disco rígido há alguns dias. Hoje, o bootloader ficou em falta/corrompido.

Actualmente tenho o instalador do Windows 8 numa pen drive e tentei usar a opção Reparação Automática para reparar o bootloader mas não fez nada. A opção Reparação do Arranque também está em falta no instalador do Windows 8.

Como posso reparar/recriar o gestor de arranque EFI a partir do Prompt de Comando?

BCDEDIT devolve a seguinte mensagem:

The requested system device cannot be found.

Respostas (10)

182
182
182
2012-11-12 00:27:03 +0000

Passei muito tempo a tentar que o meu PC Windows 8 arrancasse novamente depois de clonar uma nova SSD e tentar resumir como finalmente consegui que tudo funcionasse -

Em primeiro lugar, arranque a partir de um disco de recuperação UEFI Windows 8 (CD/DVD/USB) - descobri que o processo de recuperação automática não encontrou a partição Windows correcta, nem quando consegui adicioná-la às definições do BCD a tornaria e. g. Usando o BCDEDIT consegui encontrar e iniciar a partição do Windows mas recusava-se a arrancar a frio ou não “mantinha” as definições após um 2º reinício ou desligar.

Entre nas opções Avançadas e execute o Prompt de Comando.

Introduza diskpart para utilizar a ferramenta DiskPart para garantir que tem todas as partições certas e para identificar a sua partição EFI - a chave aqui é que a sua partição EFI está formatada como FAT32:

DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list vol

  Volume ### Ltr Label Fs Type Size Status Info
  ---------- --- ----------- ----- ---------- ------- --------- --------
  Volume 0 E DVD-ROM 0 B No Media
  Volume 1 C NTFS Partition 195 GB Healthy Boot
  Volume 2 WINRE NTFS Partition 400 MB Healthy Hidden
  Volume 3 FAT32 Partition 260 MB Healthy System

Depois atribua uma letra de unidade à partição EFI:

DISKPART> sel vol 3

Volume 3 is the selected volume.

DISKPART> assign letter=b:

DiskPart successfully assigned the drive letter or mount point.

Sair da ferramenta DiskPart entrando em exit e no prompt de comando execute o seguinte:

cd /d b:\EFI\Microsoft\Boot\

bootrec /fixboot

Apagar ou renomear o ficheiro BCD:

ren BCD BCD.bak

Utilize bcdboot.exe para recriar o ficheiro BCD:

bcdboot c:\Windows /l en-gb /s b: /f ALL

O parâmetro /f ALL actualiza as definições da BIOS incluindo firmware UEFI/NVRAM, /l en-gb é para localizar para locale UK/GB. A localização é feita em inglês americano, ou use en-US.

Reinicie e cruze os dedos.

Isto deu-me dores de cabeça. Estive a andar em círculos durante muito tempo. Não há muita informação fiável sobre como corrigir o UEFI/Windows 8 na altura de escrever.

[EDIT]

Para voltar a activar o Hyper-V, também tive de correr o seguinte a partir de um Prompt de Comando do Administrador dentro do Windows após reiniciar:

bcdedit /set {default} hypervisorlaunchtype Auto
bcdedit /set {default} nx OptIn
22
22
22
2012-12-12 06:01:57 +0000

As outras respostas são úteis, mas era isto que eu tinha de fazer para corrigir a minha.

Eu tinha um disco rígido de 1,5 TB com o Windows 7 instalado nele. Depois instalei o Windows 8 num SSD de 150 GB que comprei. O disco rígido de 1,5 TB falhou e eu podia ouvi-lo a fazer barulho, o meu computador já não arrancava, dizendo “por favor insira o disco do sistema”. Pensei que o bootloader estava em falta, pois devia estar no disco de 1,5 TB. Acontece que era, mas o problema então eram os guias que eu segui não reconstruiria o bootloader ou como quer que se chame, pois eu não tinha uma partição EFI no disco mais pequeno de 150 GB (isto pode ter existido no disco avariado), só tinha 1 partição que enchia o disco inteiro.

Eu não queria perder todos os meus dados por isso introduzi o Prompt de Comando ao arrancar a partir da minha drive USB de instalação do Windows 8 (repare que não pode arrancar a versão UEFI se esta aparecer, seleccione arrancar a partir da drive USB apenas sem que a UEFI apareça antes dela).

Uma vez no Prompt de Comando (veja as outras respostas para instruções) precisa de encolher a partição. Para o fazer, introduza os seguintes comandos, pressionando Enter depois de cada um:

diskpart

list disk

select disk 0

list partition

select partition 1

shrink desired=200 minimum=200

create partition efi

list partition

select partition 2

format fs=fat32

Estes comandos irão criar a partição EFI. Verifique tudo ao digitar list vol. Deverá ver uma partição de 200 MB. Tem agora de lhe atribuir uma letra. Faça isto digitando assign, depois list vol novamente para ver que letra foi atribuída.

Agora isto é feito, precisa de copiar os ficheiros de arranque para esta nova partição criada:

bcdboot C:\Windows /l en-gb /s B: /f ALL

Note: deve substituir C: pela letra da drive da partição que contém o Windows, e B: pela letra atribuída à partição EFI que acabou de criar.

Também introduzi os seguintes comandos:

bootrec /fix

bootrec /fixmbr

Estes dois comandos voltaram com sucesso, não faço ideia se realmente fizeram alguma coisa, mas quem se importa. O Windows está agora totalmente recuperado.

9
9
9
2012-11-28 03:14:27 +0000

Tive tempo para elaborar aqui um esboço adequado. É longo, mas é bastante completo e deve ajudá-lo a ver o que se passa.

Primeiro, uma forma de isto poder acontecer:

  1. A sua BIOS perde as suas configurações.
  2. Não há problema, todas essas coisas estão armazenadas na partição EFI.
  3. …excepto a configuração SATA IDE vs AHCI, por razões óbvias.
  4. Estava a utilizar o SATA-AHCI? Provavelmente está a usar SATA-IDE agora.
  5. tentou arrancar antes de descobrir isso?
  6. se o fez, falhou. Deixou o Windows tentar arrancar?
  7. Se o fez, BLAM, pode muito bem ter destruído a Base de Dados de Configuração de Arranque.
  8. Certifique-se que está a usar a configuração SATA correcta que estava a usar da última vez.

Aqui está o que provavelmente já fez por esta altura. SE ALGUM DESTINO NÃO SE SEGUIR, AVALIE CUALMENTE O QUE ESTÁ EM FACTO SEU PROBLEMA, e LEIA isto para ideias mas não SE SEGUIR sem pensar primeiro.

  1. Ignorou HOPEFULMENTE toda a porcaria sobre a fixação do Master Boot Record (MBR), tabela de partição, bandeiras de partição e outro lixo que NÃO SE APLICA a um cenário de arranque EFI. AT ALL. Na melhor das hipóteses, você seria capaz de reconstruir completamente uma nova solução de arranque unrelated, NON-EFI. Isso pode não ser trivial, no entanto, porque:
  2. Você descobriu que o Windows tem a certeza que não tem uma Base de Dados de Configuração de Arranque, mas, infelizmente, ou é completamente sem pistas ou tem MUITO a certeza para onde vai - não se consegue dizer qual.
  3. Você sabe que a loja de boot é normalmente (somewhere)\Boot\BCD e que o ficheiro é HIDDEN; veja-o usando dir /a:hs.
  4. Você já se familiarizou um pouco com o BCDedit.exe e descobriu que ele lhe permitirá “fazer mock up” de uma Base de Dados de Configuração de Arranque num ficheiro de encenação usando o /CreateStore (e por favor não lhe chame “BCD”), que pode usar explicitamente o ficheiro de encenação com a opção /Store, que pode adicionar uma entrada de menu para o Gestor de Arranque do Windows usando o /Create {bootmgr}, e que DEVERIA ser capaz de o importar usando o /Import
  5. …mas quando tenta fazer isto, não consegue. Você olha para a opção /SysStore, o que soa bem, mas não consegue que ele use outra loja porque é “ambíguo”. Tem um palpite que sabe onde a loja está - ou deveria estar - mas não a consegue encontrar.
  6. Já tentou usar o MountVol para montar a divisória EFI, mas nem sequer aparece na lista, por isso não consegue.

Se tudo isso se aplicar a si, eis o que PODE estar a acontecer:

  1. O Windows pode dizer que você está configurado para o EFI (você iniciou o DVD através de uma inicialização UEFI, você tem uma partição EFI, etc.).
  2. Sabe, portanto, ONDE LER para o ficheiro BCD - no entanto, ou de alguma forma tem a localização errada (não este problema, mas semelhante) ou o BCD foi apagado.
  3. Aparentemente, porque sabe onde DEVERIA estar, isto quebra /SysStore - e na verdade, isso é provavelmente um comportamento correcto, porque de outra forma colocá-lo-ia no lugar errado.
  4. Tanto quanto posso dizer, o MountVol esconde deliberadamente a divisória EFI (ou é de alguma forma incapaz de reparar). Isto impede a montagem do sistema de ficheiros, o que impede encontrar o subdirectório correcto, verificar se a base de dados existe, etc.

Então, finalmente, aqui está o que precisa de fazer acerca disto. A boa notícia é que provavelmente é muito mais simples do que se espera neste momento.

  1. Na verdade, tenho um palpite que não está estritamente correcto– suspeito fortemente que a partição EFI esteja pronto montada por algum subsistema interno, e é por isso que o BCDedit fica rabugento– não vê a base de dados, mas sabe para onde deve ir. O que não tem, no entanto, é uma letra de drive. Então, o que fazer?

Bem…até onde vão as suas raízes DOS? Lembra-se do comando Assign? Adivinhe. 2. Iniciar DiskPart. 3. Se não está familiarizado com DiskPart, a forma como funciona basicamente é uma hierarquia de conjuntos; tem de seleccionar exactamente um elemento num nível para avançar para o seguinte. Assim, List Disk, e depois Select Disk n onde n é o que for apropriado para si. 4. Use List Partition e List Volume (nota não plural) para obter alguma informação e identificar a sua partição EFI.

É normalmente uma partição FAT32 de 100MB marcada com System. Tenha em mente que o seu disco já deve estar a utilizar uma tabela de partições GPT, pelo que poderá ver bastantes partições. Algumas delas são para recuperação de emergência - muito bom que elas fazem para problemas EFI, eh? Oh bem.

Repare que a partição EFI, e algumas outras, não têm letras de unidade. Se está tão inclinado, também pode ver os atributos da partição GPT, o que também lhe pode dar alguns momentos “Aha” tangencialmente relacionados. 5. Select Partition n onde n é a partição EFI. (espero que possa seleccionar o volume, se necessário.) 6. Assign. É isso mesmo. Não especifique uma letra de unidade; apenas Assign. 7. List Volume. Deve agora ver uma letra de unidade atribuída à partição EFI. 8. Exit DiskPart.

E agora… um grande aviso de gordura. Provavelmente irá Vá directamente para S: (ou o que quer que tenha recebido de Assign) e repare numa divisória de Boot. “AHA!”. Você vai dizer. “Não há aqui nenhum ficheiro BCD!” Primeiro… lembre-se que o ficheiro está escondido. Segundo… escave um pouco mais, e vai reparar que enquanto houver S:\EFI\Boot e também S:\EFI\Microsoft\Boot

precisa de verificar ambos para problemas.S:\EFI\Boot é para a motherboard, e contém o Windows Boot LOADER (e possivelmente outras coisas para outros sistemas operativos). Isto tem este nome porque a placa-mãe não faz ideia se vai ou não ter Windows, e precisa de um caminho fixo que faça sentido. 9. Inspeccionar S:\EFI\Boot. Para Windows 7 Professional, 64-bit, deverá ver: bootx64.efi Se tiver instalado uma shell EFI (sempre uma boa ideia), poderá ver adicionalmente shellx64.efi.

NOTA: Utilizadores de Linux dual-boot usando chainloader+1 NÃO irão ver uma entrada extra aqui. 10. Inspeccione S:\EFI\Microsoft\Boot usando both dir e dir a:h. Para Windows 7 Professional, 64-bit, deverá ver um monte de templates de idiomas (en_US, etc.) e os seguintes ficheiros: bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002 …excepto que provavelmente não verá BCD, pois não? Mas esses ficheiros de cópia de segurança parecem mesmo tentadores. 11. Determine qual o ficheiro de cópia de segurança que pretende utilizar. Quaisquer que sejam as alterações recentes que lhe faltam, não são tão importantes como a sua capacidade de arrancar o sistema, por isso vá para aquele que está mais intacto. Provavelmente irá ver um grande e um bastante pequeno. O pequeno já está corrompido e é um artefacto do processo de reparação falhado - não o use. Se ambos forem grandes, use o mais antigo. EM QUALQUER CASO, faça CÓPIAS DE VOLTA ADICIONAIS DOS BACKUPS em qualquer outro lugar. 12. Copie o backup que decidiu utilizar para BCD. 13. Saia do invólucro, desligue limpo e reinicie. 14. Diga ao Windows para iniciar NORMALMENTE. Nesta altura, deve iniciar.

P: E se não tiver um BCD de backup?

R: Bem, isso realmente não deve acontecer. Provavelmente significa que ou está no directório errado, suporta o EFI mas não o estava a utilizar, ou de alguma forma reconstruiu toda a sua partição EFI sem todos os materiais necessários do Windows (possível, especialmente quando utiliza múltiplas versões do Windows). Nesse caso, terá de copiar os materiais EFI do DVD, depois modificar ou reconstruir a base de dados de configuração de arranque usando o BCDedit.

P: Pode dar-me um exemplo de um cenário em que o BCDedit /SysStore pode ser usado para fazer qualquer coisa num sistema EFI?

R: Até ao momento, não.

De qualquer forma, espero que isto ajude a resolver alguns problemas para as pessoas, ou pelo menos que as faça pensar. Como ponto final muito importante, note que pode montar e inspeccionar a sua partição EFI _ sob Windows normalmente_ utilizando a técnica DiskPart: Assign acima. Deve fazer isto pelo menos uma vez, para obter uma cópia de segurança completa da sua partição EFI, _ ANTES_ de se deparar com este tipo de problemas. Recomendo uma cópia de segurança para uma subdirectoria na sua unidade C:, e outra numa unidade flash USB.

Desculpe por ter sido tão demorado. Preciso de transformar isto num artigo adequado em algum momento, mas há tantas pessoas que estão tão frustradas que senti a necessidade de documentar a minha experiência o mais completa e rapidamente possível.

5
5
5
2012-08-25 20:45:34 +0000

O Windows 8 ainda não saiu na sua forma final, pelo que são de esperar problemas. Encontra-se numa área nova para a maioria de nós, onde os comandos que usávamos podem já não funcionar. Aos comandos listados por @soandos, acrescento este que reconstrói completamente o BCD :

bootrec /rebuildbcd

Tente também usar o menu de arranque avançado do Windows 8 e diga-nos o que acontece.

Se nada funcionar, o artigo Repararar o Windows 7 quando não consegue arrancar tem alguns conselhos para usar bcdedit para corrigir erros de arranque. De qualquer forma seria interessante ver qual é a saída do bcdedit no seu computador.

[EDIT]

Estes links podem conter algumas ideias úteis : Recuperar o Bootloader do Windows a partir do DVD Problema de Recuperação do Gestor de Arranque do Windows 7 Windows 7 Suddenly Won’t Boot - Repararar o Bootloader do Windows 7

3
3
3
2012-11-29 01:17:10 +0000

A maneira mais fácil:

  • Siga os passos do post acima para localizar o arquivo BCD e vá para o seu diretório.

  • Se o arquivo BCD estiver oculto, digite attrib bcd -s -h -r e pressione Enter. Isto permitir-lhe-á modificar e escrever por cima do ficheiro.

  • Digite ren bcd bcd.old e prima Enter. Isto renomeia o ficheiro BCD actual.

  • Digite Bootrec /RebuildBCD e prima Enter para forçar o Windows 8 a reconstruir o menu de arranque a partir do zero.

  • Sair do prompt de comando e desligar. Remova o Windows Recovery Media e reinicie o sistema operativo. Está feito!

2
2
2
2013-02-06 11:50:32 +0000

Em DISKPART eu tinha apenas o vol 0 ou D (o DVD) e o vol 1 ou C (a partição NTFS do Windows). Nada funcionava para mim até eu fazer o vol 1 ACTIVE.

Depois de sair do DISKPART eu só digitei:

bootrec /fixboot
bootrec /rebuildbcd

depois o sistema foi devidamente reparado. Não usei os

bootrec /fixmbr

porque estava a usar o GAG (gestor de arranque gràfico) no MBR para multiboot.

1
1
1
2012-12-05 14:29:49 +0000

Após 6 horas de luta, consegui resolver o meu problema de arranque do Windows 8.

Hoje, após um reinício normal, recebi a mensagem MBR not found ou semelhante, já não me lembro de mais nada. Tentei os comandos bootrec, a reparação automática do Windows (não conseguia encontrar nenhum Windows instalado), um milhão de outras formas e nada.

O problema foi quando executei o bootrec /rebuildbcd que correu normalmente, e depois quando tive de entrar no yes se quisesse guardar a configuração, recebi a mensagem, the file is not accessible because it is used by a another process.

Após horas de rachadura mental, finalmente resolvi-o.

Nesta ordem…

  • Primeiro, iniciei o master da partição easyup e FORMATO o volume reservado do sistema que atribuí como activo mais tarde (no qual estava a minha pasta de arranque). Quando reiniciei recebi um erro NTLDR missing.

  • Depois inicializei na recuperação do Windows, abri um prompt de comando e entrei bootrec /fixmbr, /fixboot, /scanos, /rebuildbcd(que agora executou fine :] )

  • Saí do cmd e cliquei na reparação automática.

  • Depois, consegui seleccionar o Windows 8. Quando reiniciei, consegui ver o logotipo do Windows 8.

0
0
0
2015-12-19 14:57:30 +0000

O meu cenário; não perdi a partição do sistema EFI, mas mudar de unidade e instalar o Windows parece ter estragado a entrada UEFI boot Manager do Windows para a primeira unidade; tive de usar a entrada UEFI que aponta directamente para a unidade para arrancar. Acho que a corrigi corrigindo/adicionando a configuração “device partition=\Device\HarddiskVolumeX” (X=2 no meu caso; a minha 2ª partição é a partição do sistema EFI, mapeada para Z: com diskpart.exe):

Bcdedit /set {bootmgr} device partition=Z:

view with: bcdedit.exe /enum firmware

-1
-1
-1
2012-08-13 00:06:38 +0000

Use:bootrec /fixmbr (actualiza o MBR, provavelmente não fará nada neste caso, mas também não fará mal)

bootrec /fixboot para reescrever o sector de arranque da partição do sistema.

bootrec /scanos para procurar os SOs que estão na drive e adicioná-los ao bootloader.

Basta correr os comandos por ordem.

-4
-4
-4
2012-08-25 20:41:13 +0000

Consegui corrigi-lo utilizando o seguinte comando na consola de recuperação:

bootcfg C:\Windows /l en-us