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 possuibootmgr
eBoot
.- O Windows7 está instalado em
/dev/sda3
, o que não existebootmgr
nessa partição.
Agora eu gostaria de copiar o Windows7 para /dev/sda3
e /dev/sda1
torná-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/sda1
se 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 bootmgr
corretamente, 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 ntldr
em /dev/sda1
(copiado NTDETECT.COM
, NTLDR
de64ntfile.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.ini
acima. 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:
- Qual utilitário pode mover minha partição de inicialização do Windows para outro disco rígido?
- Crie um BCD inicializável do zero com Bcdedit
- Os parâmetros device e osdevice devem ser a partição de inicialização ou do Windows?
- Corrigindo o Bootmgr do Windows7
- Posso corrigir o erro 0xc0000225 sem reinstalar o Windows?
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:)
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)
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
- Obtenha unidades flash USB
- 32 GB+ recomendado
- Usei o Amazon Smiles para gerar uma doação para instituições de caridade enquanto fazia compras
- 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
- 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
- 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
startx
para 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
testdisk
e 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 usando
mkdir
- 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
mount
comandomount /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 usando
mkdir
- Copie /mnt/Dell/bootmgr para /mnt/Win7/ usando
cp
o 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)
- Crie a pasta /mnt/Win7/Boot usando
- Execute
- Execute o GPartEd
- 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
- 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 usando
bcedit /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}
- Execute DiskMgmt.MSC
- 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
- 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: