Haga que Windows sea arrancable después de copiar de una partición a otra

Haga que Windows sea arrancable después de copiar de una partición a otra

Recuperé Windows7 del DVD de rescate que venía junto con mi computadora portátil. La recuperación vuelve a particionar la unidad SSD según los valores predeterminados de fábrica, pero me gustaría cambiar eso. Más exactamente, una vez completada la recuperación, las particiones son las siguientes:

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

Comentarios:

  • /dev/sda2Es una pequeña partición que tiene bootmgry Boot.
  • Windows7 está instalado en /dev/sda3, que no está bootmgren esa partición.

Ahora me gustaría copiar Windows7 de /dev/sda3a /dev/sda1y hacerlo arrancable. Como las particiones tienen el mismo tamaño, esto es muy sencillo en Linux:

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

Después de eso cambié el tipo de partición:

   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

Luego he reiniciado. Windows7 arranca desde /dev/sda3(que se convierte en C:) y /dev/sda1se convierte en D:. Ahora hago que la copia de Windows7 sea de arranque (verCambiar mi disco de arranque de Windows 7 de D a C con BCDBooty¿Es posible copiar todos los archivos de Windows 7 de un disco duro a otro?):

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.

Doble verificación:

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

Después de iniciar Linux y marcar la partición como de inicio (se puede hacer eso en Windows, pero uso las herramientas con las que estoy 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

El contenido de /dev/sda1es el siguiente (verificar dos veces):

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

Se ve bien. Desafortunadamente cuando inicio me saleBootmgr is missing. Press Ctrl+Alt+Del to restart.

He instalado Grub en /dev/sda1(sobrescribe el cargador de arranque predeterminado):

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

con lo siguiente /mnt/sda1/Boot/grub/grub.cfg:

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

Grub pasó el control bootmgrcorrectamente, pero arranca persistentemente desde /dev/sda3. Cuando elimino la partición /dev/sda3, elpantalla de inicio inicialse muestra pero luego no sucede nada (el arranque simplemente se bloquea).

A continuación lo he instalado ntldren /dev/sda1(copiado NTDETECT.COM, NTLDRdesde64ntfile.zip) con sector de arranque "nativo":

C:\> bootsect /nt52 d:

y esto 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

Después del arranque, muestra "Se produjo un error de lectura del disco". Seguramente es poco probable que la unidad SSD falle de esa manera, por lo que creo que el problema está en el código de bytes/lógica de arranque que no puede manejar correctamente el direccionamiento/diseño de la unidad. He instalado Grub (como arriba) con esta configuración:

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

y luego pude ver mi menú como se boot.inimuestra arriba. Cuando continúo, la computadora se reinicia sin ningún mensaje de error (así que entré en el bucle).

¿Como solucionar el problema? Cualquier solución para iniciar Windows desde la primera partición es bienvenida.

Otras publicaciones sobre el tema que he inspeccionado:

PD: No hay otras unidades o memorias USB conectadas al portátil durante la prueba.

Respuesta1

Después de haber copiado sda3 a sda1, todavía hay algunos "punteros" en el registro de Windows en sda1 que apuntan a sda3. Verifique el contenido de HKLM\SYSTEM\MountedDevices\DosDevices\C: y D: si apuntan a la partición correcta. (\DosDevices\C: el valor es la firma de la partición; debería ser la firma de sda1)

Para crear archivos de inicio para sda1: (cuando se inicia en sda3 asignado a c:, sda1 asignado a d:)

  1. bootsect /nt60 d: /mbr - para configurar el código de inicio de la partición sda1 (no hace daño escribir el código de inicio de Windows en MBR)

  2. bcdboot d:\windows /sd: - para crear BCD en sda1

¡¡¡No es necesario editar el BCD del sistema existente en sda2 y el BCD en sda1!!!

Por último, cambie la partición activa a sda1.

Reiniciar.

VerCómo mover archivos de arranque de Windows 7 a otra unidad/particiónpor ayuda.

Respuesta2

Escribí algunos pasos que tomé para resolver este problema y funcionó para mí, así que espero que también ayude a futuros lectores, y tal vez incluso al OP, aunque ha pasado un tiempo.


Procedimiento que utilicé para migrar Windows 7 desde una partición en un disco duro más pequeño y lento a una partición de disco duro más rápida en una Dell OptiPlex 780 MT

  1. Obtener unidades flash USB
    • Se recomiendan 32 GB o más
    • Utilicé Amazon Smiles para poder generar una donación a organizaciones benéficas mientras compraba.
  2. Cree un CD de rescate del sistema en una de las unidades flash USB de arranque
    • Se ha vuelto ENORME desde la última vez que lo usé y requiere más de 16 GB
    • Siga las instrucciones del CD SysResc desde Windows usando Rufus
  3. Reduzca los volúmenes al tamaño mínimo, dejando ~40 GB libres en las particiones del sistema operativo
    • El objetivo es tener suficiente espacio no asignado en el nuevo disco duro para igualar o superar el tamaño de la partición original de Windows 7.
    • Copia de seguridad/mover datos de particiones a una unidad flash USB u otra unidad externa
    • Ejecute la limpieza y desfragmentación del disco
    • DiskMgmt.MSC en W7 se puede utilizar para ampliar/reducir volúmenes ahora
  4. Arrancar en el CD de rescate del sistema
    • Advertencia: si tiene contraseñas de administrador y sistema BIOS que usan letras mayúsculas, System Rescue CD pensará que está intentando iniciarlo de forma personalizada. Lo dejará en el indicador de inicio estilo LILO: sin instrucciones, ayuda, comandos, etc. para iniciar. Borré la contraseña del sistema BIOS para que llegara al menú de inicio predeterminado
    • Una vez que se inicie correctamente, ejecútelo startxpara ingresar a la GUI
      • Ejecute GPartEd
        • Vaya a la unidad anterior más lenta con la instalación actual de Windows 7 y copie la partición de Windows
        • Vaya a la nueva unidad más rápida con el espacio no asignado y pegue la partición copiada.
        • La operación puede tardar unos minutos dependiendo de su hardware, pero proporciona una barra de progreso.
        • Marque la partición copiada de Windows 7 como activa
      • Ir a una ventana de Terminal/comando
        • Ejecute testdisky cree/restablezca el sector de arranque de la nueva partición de Windows 7 (no sé si este paso es necesario, pero es justo lo que hice)
          • Google Usando testdisk para restaurar el sector de arranque en una partición
        • Cree las carpetas /mnt/Dell y /mnt/Win7 usandomkdir
          • Estos desaparecerán la próxima vez que inicie el CD/memoria USB de System Rescue.
        • Monte la antigua partición de Dell Recovery en /mnt/Dell usando el mountcomando
          • mount /dev/hdb1 /mnt/Dell
        • Monte la nueva partición de Windows 7 en /mnt/Win7
          • mount /dev/hda4 /mnt/Win7
        • Copie los archivos del gestor de arranque de Windows a la nueva partición de Windows 7
          • Cree la carpeta /mnt/Win7/Boot usandomkdir
          • Copie /mnt/Dell/bootmgr a /mnt/Win7/ usando cpel comando
          • cp /mnt/Dell/boot.sdi /mnt/Win7/
          • cp /mnt/Dell/Boot/BCD /mnt/Win7/Boot/
          • También puede copiar el archivo /Boot/BCD.LOG, pero no estoy seguro si es necesario.
          • Tenga en cuenta que esta configuración de arranque todavía apunta a las antiguas particiones de arranque y sistema de Windows 7. Será necesario editarlo para que apunte a las nuevas particiones de arranque y sistema de Windows 7 (la misma en mi caso)
  5. Arrancar en BIOS
    • Cambie el dispositivo de arranque de la unidad antigua a la nueva
    • Alternativamente, puede usar el menú de inicio. Arrancar desde la nueva partición de Windows 7 con éxito
  6. Arrancar en Windows 7
    • Dado que apunta a las antiguas particiones de arranque y del sistema, todavía funciona en el disco duro antiguo.
    • La unidad C: es el sistema antiguo.
    • Abra un mensaje de Cmd como administrador
      • Ejecute DiskMgmt.MSC
        • Asigne una letra de unidad a la nueva partición de Windows 7 si aún no tiene una asignada (G: en mi caso)
      • Navegue hasta el directorio G:\Boot
        • G:
        • cd Boot
      • Muestre la configuración de arranque en la nueva partición usandobcedit /store BCD
        • Tome nota del GUID de arranque antiguo actual ({d57db94d-450e-11e5-a383-b8ac6f1ac098} en mi caso)
      • Edite la nueva configuración de arranque copiada para agregar la nueva partición de Windows 7
        • ReferenciaAgregar entradas de arranque
        • bcdedit /store /copy {d57db94d-450e-11e5-a383-b8ac6f1ac098} /d "Win7 Debug"
          • Nuevo GUID de partición W7 ahora {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
        • bcdedit /store BCD /enum /v(Para ver los GUID como referencia)
        • Referencia¿Cómo muevo los archivos de arranque de Windows 7 bootmgr a una unidad diferente?(¡Muchas gracias por que red.october haya publicado su pregunta y respuesta en este sitio!)
        • bcdedit /store BCD /set {bootmgr} device partition=G:
        • Pasos adicionales en mi 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, haga que la nueva partición de inicio sea la predeterminada
            • bcdedit /default {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
  7. Reinicie en el CD/USB de rescate del sistema
    • Utilice GPartEd para marcar la antigua partición de Windows 7 como oculta
    • Desmarque la marca de inicio en la antigua partición de Dell System Recovery
  8. Reinicie Windows 7 en la nueva unidad

Si no cometió errores y no tuvo dificultades ni errores con ninguno de los pasos, entonces, como yo, ha migrado con éxito tanto la partición de Windows 7 como el administrador de arranque de Windows 7 de una partición en el disco duro original a una nueva partición en otro diferente. disco duro, sin utilizar un disco de recuperación de Windows 7 (que los revendedores OEM no proporcionan con una PC) y sin utilizar aplicaciones de terceros cuestionables. Una agradable sorpresa es que si tenía archivos o carpetas cifrados con EFS antes de la migración, aún podrá acceder a ellos en la nueva partición sin tener que descifrarlos primero. DiskMgmt.MSC ahora muestra la nueva partición de Windows 7 como C: y la antigua partición de Windows 7 sin letra de unidad.

Una vez iniciado en la nueva partición de Windows 7 de forma completamente independiente del disco duro original, puede explorar cómo limpiar el cargador de arranque en esa partición para que todo apunte a ella en lugar de a la antigua partición de Windows 7. Si tiene una partición de Windows XP en la nueva unidad como yo, entonces puede agregar una entrada para iniciarla usando bcdedit también. Una vez que esté seguro de que todo está estable, puede borrar la partición anterior y usarla para otros fines. Realmente espero que esto ayude a alguien más a lograr esfuerzos similares.


Administración de disco W7 después de la migración:

Administración de disco W7 después de la migración

información relacionada