Torne o Windows inicializável após copiar de uma partição para outra

Torne o Windows inicializável após copiar de uma partição para outra

Recuperei o Windows7 do DVD de resgate, que veio junto com meu laptop. A recuperação reparticiona a unidade SSD de acordo com os padrões de fábrica, mas eu gostaria de mudar isso. Mais exatamente, após a conclusão da recuperação, as partições são as seguintes:

root@ubuntu:~# fdisk -l /dev/sda

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419432447   209715200   27  Hidden NTFS WinRE
/dev/sda2   *   419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200    7  HPFS/NTFS/exFAT

Comentários:

  • /dev/sda2é uma pequena partição que possui bootmgre Boot.
  • O Windows7 está instalado em /dev/sda3, o que não existe bootmgrnessa partição.

Agora eu gostaria de copiar o Windows7 para /dev/sda3e /dev/sda1torná-lo inicializável. Como as partições têm o mesmo tamanho, isso é muito simples no Linux:

root@ubuntu:~# dd if=/dev/sda3 of=/dev/sda1 bs=4096

Depois disso, mudei o tipo de partição:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419432447   209715200    7  HPFS/NTFS/exFAT
/dev/sda2   *   419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200    7  HPFS/NTFS/exFAT

Então eu reiniciei. O Windows7 inicializa a partir de /dev/sda3(que se torna C:) e /dev/sda1se torna D:. Agora eu torno a cópia do Windows7 inicializável (vejaMudando meu disco de inicialização do Windows 7 de D para C com BCDBooteÉ possível copiar todos os arquivos do Windows 7 de um HD para outro?):

C:\> bcdboot d:\windows /s d:
Boot files successfully created.

C:\> bootsect /nt60 d: /mbr
Target volumes will be updated with BOOTMGR compatible bootcode.
F: (\\?\Volume{b6e65e71-6179-11e5-82c7-806e6f6e6963})
Successfully updated NTFS filesystem bootcode.
\??\PhysicalDrive0
Successfully updated disk bootcode.
Bootcode was successfully updated on all targeted volumes.

Dupla verificação:

C:\> bcdedit

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {0b9ac060-6182-11e5-b742-8dbb81fd6d74}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
nx                      OptIn

C:\> bcdedit /store D:\Boot\BCD

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=D:
description             Windows Boot Manager
locale                  en-us
inherit                 {globalsettings}
default                 {default}
resumeobject            {f38db522-680d-11e5-829a-18f46ae2d7b0}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {default}
device                  partition=D:
path                    \windows\system32\winload.exe
description             Windows 7
locale                  en-us
inherit                 {bootloadersettings}
osdevice                partition=D:
systemroot              \windows
resumeobject            {f38db522-680d-11e5-829a-18f46ae2d7b0}
nx                      OptIn
detecthal               Yes

Depois de inicializar o Linux e marcar a partição como inicializável (pode-se fazer isso no Windows, mas uso as ferramentas com as quais estou familiarizado):

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   419432447   209715200    7  HPFS/NTFS/exFAT
/dev/sda2       419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200   27  Hidden NTFS WinRE

O conteúdo de /dev/sda1é o seguinte (verifique novamente):

root@ubuntu:~# ls -l /mnt/sda1
total 10749077
drwxrwxrwx 1 root root       4096 Sep 25 06:11 Boot
-rwxrwxrwx 1 root root     383786 Nov 20  2010 bootmgr
drwxrwxrwx 1 root root          0 Sep 23 21:50 Config.Msi
lrwxrwxrwx 2 root root         60 Jul 14  2009 Documents and Settings -> /mnt/sda1/Users
-rwxrwxrwx 1 root root 4717092864 Sep 23 21:50 hiberfil.sys
-rwxrwxrwx 1 root root 6289461248 Sep 23 21:50 pagefile.sys
drwxrwxrwx 1 root root          0 Jul 14  2009 PerfLogs
drwxrwxrwx 1 root root       4096 Sep 23 20:35 ProgramData
drwxrwxrwx 1 root root       8192 Sep 23 21:26 Program Files
drwxrwxrwx 1 root root      12288 Sep 23 21:12 Program Files (x86)
drwxrwxrwx 1 root root       4096 Sep 22 22:00 $Recycle.Bin
drwxrwxrwx 1 root root      20480 Sep 23 21:50 System Volume Information
drwxrwxrwx 1 root root       4096 Sep 23 21:05 Temp
drwxrwxrwx 1 root root          0 Sep 23 21:50 Update
drwxrwxrwx 1 root root       4096 Sep 22 21:58 Users
-rwxrwxrwx 1 root root       4112 Jul 19  2011 version
drwxrwxrwx 1 root root      24576 Sep 23 21:02 Windows

Parece bom. Infelizmente quando eu inicializo eu receboBootmgr is missing. Press Ctrl+Alt+Del to restart.

Eu instalei o Grub em /dev/sda1(substitui o carregador de inicialização padrão):

grub-install --force --no-floppy --boot-directory=/mnt/sda1/Boot /dev/sda1

com o seguinte /mnt/sda1/Boot/grub/grub.cfg:

menuentry "Windows 7" {
    insmod ntfs
    insmod ntldr
    ntldr (hd0,msdos1)/bootmgr
}

O Grub passou o controle bootmgrcorretamente, mas inicializa persistentemente a partir do /dev/sda3. Quando eu removo a partição /dev/sda3, otela inicial de inicializaçãoé mostrado, mas nada acontece (a inicialização simplesmente trava).

Em seguida, instalei ntldrem /dev/sda1(copiado NTDETECT.COM, NTLDRde64ntfile.zip) com setor de inicialização "nativo":

C:\> bootsect /nt52 d:

e isto boot.ini:

[Boot Loader]
timeout=30
Default=multi(0)disk(0)rdisk(0)partition(1)\Windows

[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows 7 (boot.ini)" /fastdetect

Após a inicialização, ele exibe "Ocorreu um erro de leitura de disco". Com certeza é improvável que a unidade SSD falhe assim, então acho que o problema está no bytecode/lógica de inicialização que não consegue lidar corretamente com o endereçamento/layout da unidade. Eu instalei o Grub (como acima) com esta configuração:

menuentry "Windows 7" {
    insmod ntfs
    insmod ntldr
    ntldr (hd0,msdos1)/ntldr
}

e então pude ver meu menu boot.iniacima. Quando continuo, o computador reinicia sem nenhuma mensagem de erro (então entrei no circuito).

Como resolver o problema? Qualquer solução para inicializar o Windows a partir da primeira partição é bem-vinda.

Outras postagens sobre o assunto que inspecionei:

PS: Nenhuma outra unidade ou pendrive está conectada ao notebook durante o teste.

Responder1

Depois de copiar sda3 para sda1, ainda existem alguns "ponteiros" no registro do Windows em sda1 que apontam para sda3. Verifique o conteúdo de HKLM\SYSTEM\MountedDevices\DosDevices\C: e D: se eles apontam para a partição correta. (\DosDevices\C: o valor é a assinatura da partição - deve ser a assinatura do sda1)

Para criar arquivos de inicialização para sda1: (quando inicializado em sda3 mapeado para c:, sda1 mapeado para d:)

  1. bootsect /nt60 d: /mbr - para definir o código de inicialização da partição sda1 (não faz mal gravar o código de inicialização do Windows no MBR)

  2. bcdboot d:\windows /sd: - para criar BCD em sda1

Você não precisa editar o System BCD existente em sda2 e BCD em sda1!!!

Por fim, mude a partição ativa para sda1.

Reinício.

VerComo mover arquivos de inicialização do Windows 7 para outra unidade/partiçãopara ajuda.

Responder2

Escrevi algumas etapas que executei para resolver esse problema e funcionou para mim, por isso espero que ajude futuros leitores também, e talvez até mesmo o OP, mesmo que já faça algum tempo.


Procedimento que usei para migrar o Windows 7 de uma partição em um disco rígido menor e mais lento para uma partição de disco rígido mais rápida em um Dell OptiPlex 780 MT

  1. Obtenha unidades flash USB
    • 32 GB+ recomendado
    • Usei o Amazon Smiles para gerar uma doação para instituições de caridade enquanto fazia compras
  2. Crie o CD de resgate do sistema em uma das unidades flash USB inicializáveis
    • Tornou-se ENORME desde a última vez que o usei, exigindo 16 GB+
    • Siga as instruções do CD SysResc do Windows usando Rufus
  3. Reduza os volumes para tamanhos mínimos, deixando aproximadamente 40 GB livres nas partições do sistema operacional
    • O objetivo é ter espaço não alocado suficiente no novo disco rígido para corresponder ou exceder o tamanho da partição original do Windows 7
    • Faça backup/mova dados de partições para uma unidade flash USB ou outra unidade externa
    • Execute a limpeza e desfragmentação do disco
    • DiskMgmt.MSC no W7 pode ser usado para estender/diminuir volumes agora
  4. Inicialize no CD de resgate do sistema
    • Advertência: Se você tiver sistema BIOS e senhas de administrador que usam letras maiúsculas, o System Rescue CD pensará que você está tentando inicializá-lo de forma personalizada. Isso deixará você no prompt Boot: estilo LILO sem instruções, ajuda, comandos, etc. Limpei a senha do sistema BIOS para que ele chegasse ao menu de inicialização padrão
    • Depois de inicializar com sucesso, execute startxpara entrar na GUI
      • Execute o GPartEd
        • Vá para a unidade antiga mais lenta com a instalação atual do Windows 7 e copie a partição do Windows
        • Vá para a nova unidade mais rápida com o espaço não alocado e cole a partição copiada
        • A operação pode demorar alguns minutos dependendo do seu hardware, mas fornece uma barra de progresso
        • Marque a partição copiada do Windows 7 como ativa
      • Vá para uma janela de terminal/comando
        • Execute testdiske crie/redefinir o setor de inicialização da nova partição do Windows 7 (não sei se esta etapa é necessária, mas foi exatamente o que fiz)
          • Google Usando testdisk para restaurar o setor de inicialização em uma partição
        • Crie pastas /mnt/Dell e /mnt/Win7 usandomkdir
          • Eles desaparecerão na próxima inicialização do CD/pendrive do System Rescue
        • Monte a partição antiga do Dell Recovery em /mnt/Dell usando o mountcomando
          • mount /dev/hdb1 /mnt/Dell
        • Monte a nova partição do Windows 7 em /mnt/Win7
          • mount /dev/hda4 /mnt/Win7
        • Copie os arquivos do bootloader do Windows para a nova partição do Windows 7
          • Crie a pasta /mnt/Win7/Boot usandomkdir
          • Copie /mnt/Dell/bootmgr para /mnt/Win7/ usando cpo comando
          • cp /mnt/Dell/boot.sdi /mnt/Win7/
          • cp /mnt/Dell/Boot/BCD /mnt/Win7/Boot/
          • Você também pode copiar o arquivo /Boot/BCD.LOG, mas não tenho certeza se isso é necessário
          • Tenha em mente que esta configuração de inicialização ainda aponta para a inicialização antiga do Windows 7 e partições do sistema. Ele precisará ser editado para apontar para a nova inicialização do Windows 7 e partições de sistema (a mesma no meu caso)
  5. Inicialize no BIOS
    • Alterar o dispositivo de inicialização da unidade antiga para a nova unidade
    • Alternativamente, você pode usar o menu de inicialização Inicialize a partir da nova partição do Windows 7 com sucesso
  6. Inicialize no Windows 7
    • Como está apontando para as partições antigas de inicialização e sistema, ele ainda está funcionando no disco rígido antigo
    • A unidade C: é o sistema antigo
    • Abra um prompt do Cmd como administrador
      • Execute DiskMgmt.MSC
        • Dê à nova partição do Windows 7 uma letra de unidade, se ela ainda não tiver uma atribuída (G: no meu caso)
      • Navegue até o diretório G:\Boot
        • G:
        • cd Boot
      • Mostre a configuração de inicialização na nova partição usandobcedit /store BCD
        • Anote o GUID de inicialização antigo atual ({d57db94d-450e-11e5-a383-b8ac6f1ac098} no meu caso)
      • Edite a nova configuração de inicialização copiada para adicionar a nova partição do Windows 7
        • ReferênciaAdicionando entradas de inicialização
        • bcdedit /store /copy {d57db94d-450e-11e5-a383-b8ac6f1ac098} /d "Win7 Debug"
          • Novo GUID de partição W7 agora {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
        • bcdedit /store BCD /enum /v(Para visualizar os GUIDs para referência)
        • ReferênciaComo movo os arquivos de inicialização do Windows 7 bootmgr para uma unidade diferente(Muito obrigado por red.october postar sua pergunta e resposta neste site!)
        • bcdedit /store BCD /set {bootmgr} device partition=G:
        • Etapas adicionais no meu caso
          • bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} device partition=G:
          • bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} osdevice partition=G:
          • bcdedit /store BCD /displayorder {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} {d57db94d-450e-11e5-a383-b8ac6f1ac098}
          • Opcionalmente, torne a nova partição de inicialização o padrão
            • bcdedit /default {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
  7. Reinicializar no CD/USB de resgate do sistema
    • Use GPartEd para marcar a partição antiga do Windows 7 como oculta
    • Desmarque o sinalizador de inicialização na partição antiga do Dell System Recovery
  8. Reinicie o Windows 7 na nova unidade

Se você não cometeu erros e não teve dificuldades ou erros em nenhuma das etapas, então você como eu migrou com sucesso a partição do Windows 7 e o gerenciador de inicialização do Windows 7 de uma partição no disco rígido original para uma nova partição em um diferente disco rígido, sem usar um disco de recuperação do Windows 7 (que os revendedores OEM não fornecem com um PC) e sem usar aplicativos de terceiros questionáveis. Uma surpresa agradável é que se você tivesse arquivos ou pastas criptografados por EFS antes da migração, eles ainda estarão acessíveis na nova partição sem precisar descriptografá-los primeiro. DiskMgmt.MSC agora mostra a nova partição do Windows 7 como C: e a partição antiga do Windows 7 sem uma letra de unidade.

Uma vez inicializado na nova partição do Windows 7 completamente independente do disco rígido original, você pode explorar como limpar o carregador de inicialização nessa partição para apontar tudo para ela em vez de para a partição antiga do Windows 7. Se você tiver uma partição do Windows XP na nova unidade como eu, poderá adicionar uma entrada para inicializá-la usando bcdedit também. Depois de ter certeza de que tudo está estável, você poderá limpar a partição antiga e usá-la para outros fins. Eu realmente espero que isso ajude alguém a realizar empreendimentos semelhantes.


Gerenciamento de disco W7 após a migração:

Gerenciamento de disco W7 após migração

informação relacionada