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/sda2
es una pequeña partición que tienebootmgr
yBoot
.- Se instala Windows7
/dev/sda3
, que no tienebootmgr
esa partición.
Ahora me gustaría copiar Windows 7 a partir /dev/sda3
de /dev/sda1
y 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/sda1
convierte 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/sda1
es 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 bootmgr
correctamente, 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 ntldr
a /dev/sda1
(copiado NTDETECT.COM
, NTLDR
desde 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.ini
arriba. 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:
- ¿Qué utilidad puede mover mi partición de arranque de Windows a otro disco duro?
- Construya un BCD de arranque desde cero con Bcdedit
- ¿Deben los parámetros del dispositivo y del dispositivo ser la partición de arranque o de Windows?
- Arreglando Windows7 Bootmgr
- ¿Puedo reparar el error 0xc0000225 sin reinstalar Windows?
PD: no hay otras unidades o memorias USB conectadas a la computadora portátil durante la prueba.
bootrec /rebuildbcd
eso. Finalmente, después de días de intentarlo, me di por vencido y dejé que Windows se fuera en la tercera partición (/dev/sda3
en mi ejemplo), sin embargo, pude copiarbcdboot
de la partición oculta a esa. El espacio al comienzo de la unidad que he asignado para la unidadD:
. 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.Respuestas:
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 :)
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)
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.
fuente
bcdboot d:\windows /s d:
ybootsect /nt60 d: /mbr
como usted sugirió (también he actualizado la pregunta con información adicional, es decir, con labcdedit
salida). Aún lo entiendoBootmgr 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.