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

0

He recuperado Windows7 del DVD de rescate, que vino junto con mi computadora portátil. La recuperación vuelve a particionar la unidad SSD en cuanto a los valores predeterminados de fábrica, pero me gustaría cambiar eso. Más exactamente, después de completar 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.
  • Se instala Windows7 /dev/sda3, que no tiene bootmgresa partición.

Ahora me gustaría copiar Windows 7 a partir /dev/sda3de /dev/sda1y hacer un dispositivo de inicio. Como las particiones tienen el mismo tamaño, esto es muy simple en Linux:

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

Después de eso he cambiado 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

Entonces he reiniciado. Windows7 arranca desde /dev/sda3(que se convierte C:) y se /dev/sda1convierte en D:. Ahora hago que Windows7 copie de arranque (consulte Cambio de mi disco de arranque de Windows 7 de D a C con BCDBoot y ¿Es posible copiar todos los archivos de Windows 7 de un HD 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 haber arrancado Linux y marcado la partición de arranque (uno puede hacerlo 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 (doble comprobación):

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. Lamentablemente cuando arranco me sale Bootmgr 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 a bootmgrcorrectamente, pero arranca de manera persistente /dev/sda3. Cuando elimino la partición /dev/sda3, se muestra la pantalla de arranque inicial pero luego no sucede nada (el arranque simplemente se bloquea).

A continuación se ha instalado ntldra /dev/sda1(copiado NTDETECT.COM, NTLDRdesde 64ntfile.zip ) con el 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 de disco". Por supuesto, es poco probable que la unidad SSD falle así, así que creo que el problema está en el bytecode / 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 boot.iniarriba. Cuando continúo, la computadora se reinicia sin ningún mensaje de error (así que me puse al día).

¿Como solucionar el problema? Cualquier solución para arrancar 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 a la computadora portátil durante la prueba.

dma_k
fuente
Cuando use el arranque dual de Linux / Windows, recomendaría usar el administrador de arranque grub.
Ivan Viktorovic
No estoy usando el arranque dual de Windows / Linux. Solo tengo Windows.
dma_k
Lo estás haciendo mal. Empezar de nuevo. Esta vez elimine la segunda partición después de haberla copiado y no reinicie en Windows. Actualice sus entradas de arranque desde un disco WinRE o recuperación.
qasdfdsaq
Ese es el punto: no tengo un disco de recuperación. Lo que dices significa que no puedo recuperarme sin bootrec /rebuildbcdeso. Finalmente, después de días de intentarlo, me di por vencido y dejé que Windows se fuera en la tercera partición ( /dev/sda3en mi ejemplo), sin embargo, pude copiar bcdbootde la partición oculta a esa. El espacio al comienzo de la unidad que he asignado para la unidad D:. Si puede explicar por qué no pude arrancar desde la primera partición ( /dev/sda1), lo agradeceré. Sin embargo, como último recurso, he utilizado la función de restauración. Ha creado la partición oculta nuevamente, sin embargo, el arranque ha fallado.
dma_k

Respuestas:

0

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; debe 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 arranque de la partición sda1 (no hace daño escribir el código de arranque de Windows en MBR)

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

¡No tiene que editar el sistema BCD existente en sda2 y BCD en sda1!

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

Reiniciar.

Consulte Cómo mover archivos de arranque de Windows 7 a otra unidad / partición para obtener ayuda.

snayob
fuente
Lo hice bcdboot d:\windows /s d:y bootsect /nt60 d: /mbrcomo usted sugirió (también he actualizado la pregunta con información adicional, es decir, con la bcdeditsalida). Aún lo entiendo Bootmgr is missing. Creo que eso es producido por el código en el sector de arranque: no puede acceder al registro de Windows. Cualquier consejo adicional es bienvenido.
dma_k