Cuando muevo una partición NTFS de arranque con Windows a un desplazamiento de bloque diferente, ¿qué necesita actualizarse para que pueda arrancar nuevamente?
Fondo: Planeo escribir un programa que realice las acciones necesarias., es por eso que no busco guías sobre cómo usar las herramientas de Microsoft arrancando desde un DVD de Windows. En cambio, necesito cómo modificar estas cosas yo mismo, para poder escribir una solución que sea más fácil para el usuario promedio de PC cuando quiere mover su sistema Windows a un disco duro más grande.
En particular, esto es lo que probé:
Tengo un disco con varias particiones, una de las cuales es la partición NTFS con Windows, y el disco usa el antiguo bloque MBR 0 para el diseño de las particiones (no más de 4 particiones).
Ahora formateo y particiono un disco nuevo y más grande. Allí hago espacio para la partición NTFS y copio el contenido de la partición NTFS de Windows del disco antiguo. Y hago la partición "activa".
Sin embargo, cuando intento arrancar desde este disco, aparece inmediatamente un mensaje de "error de lectura" y el arranque se detiene. El texto exacto es:
A disk read error occurred
Press Ctrl+Alt+Del to restart
Verifiqué que ambos discos tienen el mismo código de sector de arranque en el bloque 0.
Me parece que quizás sea necesario actualizar algo más. Supongo que en algún lugar hay unabsolutoreferencia de bloque que necesito actualizar, probablemente apuntando al cargador del siguiente nivel o al kernel NT.
Actualizar:encontréesteartículo que profundiza bastante en lo que quiero saber. Sin embargo, dice modificar boot.ini, pero tengo Windows 7 instalado aquí, donde esas cosas parecen haber cambiado: No boot.ini sino una carpeta llamadaInformación del Volumen del Sistemacon GUID y otros datos que suenan relacionados con mi problema. Voy a seguir investigando...
Actualización 2:Gracias al aspecto terrible pero muy informativo.sitio web porhombre estrella, pude descubrir el primer paso: el sector de arranque NTFS tiene un campo para sectores "ocultos". Este campo debe contener el número de sector del sector de arranque. Esto resuelve el mensaje de "error de lectura". Ahora, sin embargo, aparece el error "Falta BOOTMGR". Parece que hay otro lugar donde se debe ajustar un número de bloque, pero no puedo encontrar nada sobre esto en la lista de códigos.
Encuentro muchos sitios de ayuda que sugieren herramientas de Windows para solucionar este problema de "falta BOOTMGR", pero ninguno parece saber qué sucede detrás de escena. Algo así como sugerir reinstalar Windows cuando hay un pequeño problema. Al menos, esas correcciones parecen funcionar, principalmente involucrando las herramientas Bcdedit y Bootrec. Ahora bien, ¿quién sabe qué hacen, especialmente estos últimos, con respecto a una partición movida?
Actualización 3:Después de muchos intentos de prueba y error, ahora creo que la solución está enPlantilla BCDarchivo de registro, que normalmente reside dentro de \Windows\System32\config. Si actualizo esto usando el comando "bcdboot", Windows se inicia desde allí. Ahora estoy averiguando qué información contiene este registro relevante para la pregunta anterior. Cualquier sugerencia sobre el contenido de este registro es bienvenida.
Actualización 4:Resulta que si bien el archivo BCD-Template se reescribe y tiene contenidos binarios diferentes a los de su predecesor, los valores internos no cambian. Entonces debe ser algo más lo que escribe bcdboot.exe. Anteriormente ya había comprobado si cambia los primeros 32 bloques de arranque de la partición, pero parece que permanecen sin cambios. El mapa de partición tampoco cambia. Entonces, ¿qué es lo que modifica bcdboot además del registro BCD? ¿Algún consejo sobre cómo puedo rastrear eso? ¿Existen herramientas de bajo nivel que me muestren en qué archivos escribe un programa?
Actualización 5:La respuesta parece ser: c:\Boot\BCD también ha cambiado, y ese parece ser el archivo clave para el proceso del administrador de arranque. Investigaré esto más tarde...
Actualización 6:Parece ser un detalle importante que originalmente había creado dos particiones cuando instalé Windows 7: una pequeña partición de 204800 sectores que parece ser una partición de arranque, seguida de la partición grande real que contiene el sistema Windows (unidad C: ). Cuando intenté transferir esta instalación a un disco nuevo y más grande, mantuve las mismas dos particiones intactas en el nuevo disco, aunque terminaron en un desplazamiento diferente. Esto por sí solo llevó al mensaje "Falta BOOTMGR". Desde entonces, he usado bcdboot.exe sólo en la partición de Windows, lo queagregadoel archivo \Boot\BCD en esa partición. Ese archivo (y carpeta) originalmente solo existía en la partición más pequeña. Por lo tanto, este problema puede ser más complicado en mi caso, ya que una partición (la de arranque) se refiere a otra partición (la que contiene el sistema operativo), mientras que otras personas pueden tener que lidiar solo con una partición que contiene ambas, y tal vez ahí esté la solución. es más simple.
Actualización 7:Encontré un detalle más: El archivo \Boot\BCD registra el número de serie del MBR. Si ese número no coincide, el sistema no arrancará. A continuación, probaré si también hay una referencia de bloque absoluta almacenada allí.
Respuesta1
¿La forma más fácil?
Coloque el disco de instalación de Windows Vista o Windows 7 en la unidad de disco y luego inicie la computadora.
Presione una tecla cuando se le solicite.
Seleccione un idioma, una hora, una moneda, un teclado o un método de entrada y luego haga clic en Siguiente.
Haga clic en Reparar su computadora.
Haga clic en el sistema operativo que desea reparar y luego haga clic en Siguiente.
En el cuadro de diálogo Opciones de recuperación del sistema, haga clic en Símbolo del sistema.
Escriba Bootrec.exe y luego presione ENTRAR.
Opciones de Bootrec.exe
La herramienta Bootrec.exe admite las siguientes opciones. Utilice la opción que sea apropiada para su situación.
Nota Si reconstruir el BCD no resuelve el problema de inicio, puede exportar y eliminar el BCD y luego ejecutar esta opción nuevamente. Al hacer esto, se asegura de que el BCD esté completamente reconstruido.
Para hacer esto, escriba los siguientes comandos en el símbolo del sistema de Windows RE:
bcdedit /export C:\BCD_Backup
c:
cd boot
attrib bcd -s -h -r
ren c:\boot\bcd bcd.old
bootrec /RebuildBcd
o /FixMbr o /FixBoot o /ScanOs o /RebuildBcd dependiendo de la situación.
Ver:Soporte.Microsoft.compara más detalles.