Marchi
07-06-2009, 07:09
Escribo este post para comentar sobre un problema que me surgio con una maquina que me dieron para arreglar.
Se trataba de una computadora con un problema en el disco, clusters dañados. Asi que se me pidio mover todo los datos a un disco nuevo y dejar la unidad vieja como soporte auxiliar.
La maquina tenia 3 particiones, una particion primaria de unos 30 Gb para Win XP y dentro de una extendida, una unidad logica para Win Vista de unos 40 Gb y otra particion para datos de unos 80 Gb. De estas particiones, todas con ntfs, solo la primera tenia sectores inutilizados.
En principio habia pensado en instalar todo desde cero y pasar documentos y otro archivos, pero despues decidi clonar directamente las particiones de un disco a otro ya que si no tendria que intalar y configurar muchas cosas.
Para esto trate de usar Clonezilla (http://clonezilla.org/), un utilitario estilo Norton Ghost que compila varias herramientas como Partition Image, ntfsclone y partclone entre otras pero con la ventaja de ser Free Software, todo envasado en un Linux Live.
Lamentablemente no tuve en cuenta que no funcionaria con clusters dañados, asi que tuve que buscar otra cosa.
Buscando si habia alguna forma de usar Clonezilla teniendo en cuenta que habia clusters dañados encontre Clonezilla-SysRescCD (http://clonezilla-sysresccd.hellug.gr/), otro utilitario que trae ademas del Clonezilla y el System Rescue CD otras herramientas interesantes como Ranish Partition Manager.
Con esto pude usar el dd_rescue, para clonar el disco viejo en el nuevo tan solo con "dd_rescue -A -v -w -m 75G /dev/sda /dev/sdb". Con esto copie los primeros 75Gb (-m 75G) del disco viejo (/dev/sda) en el viejo (/dev/sdb), escribiendo 0 si el la informacion del disco viejo fuera ilegible (-A) y abortando en caso de que halla un error de escritura en el nuevo (-w).
Despues de algo mas media hora y algunos errores de lectura termino, asi que apague la maquina desconecte el disco viejo y bootee desde el nuevo, aparece el menu del inicio dual (XP/VISTA) elijo XP y comienza a cargar, aparece chkdsk para comprobar la unidad E (la de datos, la tercera en el disco con 80Gb) asi que presiono una tecla para evitarlo ya que esta particion no la copie entera a proposito, y luego aparece chkdsk para comprobar C: (particion con XP y sectores defectuosos) asi que aca si dejo que chkdsk haga su trabajo. Despues de corregir algunas pocas cosas termina y prosigue la carga de windows. Inicia windows sin problemas, reinicio y compruebo que tambien funciona VISTA.
Despues de esto apago la maquina, y con Ranish PM en el disco nuevo borro la particion de datos (si bien solo se habia copiado unos 4 o 5 Gb, la informacion de particion se guarda en el MBR), redimensiono la particion extendida para que termine donde termina la particion de VISTAy apago. Conecto el disco viejo pero booteo desde el nuevo, cargo XP perfectamente y desde el administrador de discos (o algo asi, no me acuerdo como se llama) creo una nueva particion en el disco nuevo destinada a datos, pero ahora de unos 500-600 Gb (usando el resto del disco). Paso los archivos de la particion de datos del disco viejo a la nueva particion y apago de nuevo.
Ahora desconecto el disco viejo e intento cargar con el disco nuevo solo, para mi sorpresa al intentar cargar xp me dice que falta el ntldr y al intentar cargar vista me dice que falta Windows/system32/winload.exe (o parecido no recuerdo). Asi que vuelvo a conectar el disco viejo y al intentar cargar esta vez todo va en orden.
Extrañado, trato de empezar de nuevo y volver a copiar todo el disco viejo en el nuevo, pero esta vez con algunos cambios. Para evitar alargarlo mas les cuento que termino pasando lo mismo, solo cargaba cuando ambos discos estaban enchufados, pero erroneamente no me di cuenta de esto y pensando que no sucedia borre las particiones del disco viejo, resultando que ya no podia volver a cargar ningun windows ni en los discos viejos ni nuevos. Si bien pudo haber sido un poco desesperante, por el hecho de siquiera pensar en haber perdido toda la informacion de un cliente, en realidad Con una aplicacion tan simple como Ranish PM esto se puede arreglar poniendo los valores correctos de inicio y finalizacion de cada una de las particiones eliminadas.
Por suerte recorde algo que habia leido sobre un posible error con el archivo winload.exe debido a la modificacion de un campo en el mbr usado para identificar discos, el mbr pose un valor de 32 bits en el offset 1B8 usado por systemas nt para reconocer a un disco de manera unica (creo que fue usado al principio por los nt, pero hoy en dia su uso se amplio a otros sistemas).
Ahi me puse a pensar que al copiar el disco entero se copio tambien este identificador y mientras usase solo un disco conectado no habia problema, pero al conectar los dos e intentar bootear desde uno con windows, de alguna forma se daba cuenta de que los 2 discos tenian el mismo identificador y entonces se cambiaba uno. De forma que mientras tubiera ambos discos conectados y con las particiones donde esta la carpeta boot, el ntldr y otros datos necesarios para la carga de los SO no abria problema, pero al dejar solo el disco cuyo identificador fue cambiado, no se podria cargar ninguno de los SO.
Para ver si esta idea era real o solo un razonamiento incorrecto o no aplicable, cargue con el live del System Rescue CD y habri ambos mbr y los compare en la posicion 1B8, afortunadamente los valores eran distintos, asi que modifique el valor del mbr del disco nuevo con el del disco viejo, previo guardado del mbr original, intente bootear con solo el disco nuevo y al fin pude bootear correctamente ambos SO.
Bueno despues quedo trabajo por hacer, pero esto era lo importante.
Cuando se hacen clonaciones de discos con herramientas que copian byte por byte desde el primer sector hasta el ultimo (o el que se quiera), y se estan usando sistemas windows xp o vista (en realidad supongo que puede ser para cualquier nt o basado en nt, como 2000, 2003 y otro, pero no puedo asegurarlo) hay que tener cuidado con intentar bootear uno de los sistemas con el otro disco conectado, ya que automaticamente se modificara alguno de los identificadores de disco haciendo que sea imposible la carga de un SO hubicado en este cuando el otro disco no este conectado.
La verdad que esto no podia creerlo :confused: hasta que no se me ocurrio la solucion, porque en pocas palabras sucedia que tenia un disco andando, le conectaba otro booteaba y lo desconectaba y desde ese momento no podia volver a cargar el primero. Realmente parecia de locos :eek: y por eso la empresa de Redmond se comio unas cuantas puteadas de mi persona :mad:, ahora ya sabiendo la causa del problema sepan bien que no les quitaria ninguna puteada. :mad::mad::mad:
Bueno, espero que hallan llegado hasta el final y no se hallan perdido o dormido con mi mala redaccion.
Saludos
Se trataba de una computadora con un problema en el disco, clusters dañados. Asi que se me pidio mover todo los datos a un disco nuevo y dejar la unidad vieja como soporte auxiliar.
La maquina tenia 3 particiones, una particion primaria de unos 30 Gb para Win XP y dentro de una extendida, una unidad logica para Win Vista de unos 40 Gb y otra particion para datos de unos 80 Gb. De estas particiones, todas con ntfs, solo la primera tenia sectores inutilizados.
En principio habia pensado en instalar todo desde cero y pasar documentos y otro archivos, pero despues decidi clonar directamente las particiones de un disco a otro ya que si no tendria que intalar y configurar muchas cosas.
Para esto trate de usar Clonezilla (http://clonezilla.org/), un utilitario estilo Norton Ghost que compila varias herramientas como Partition Image, ntfsclone y partclone entre otras pero con la ventaja de ser Free Software, todo envasado en un Linux Live.
Lamentablemente no tuve en cuenta que no funcionaria con clusters dañados, asi que tuve que buscar otra cosa.
Buscando si habia alguna forma de usar Clonezilla teniendo en cuenta que habia clusters dañados encontre Clonezilla-SysRescCD (http://clonezilla-sysresccd.hellug.gr/), otro utilitario que trae ademas del Clonezilla y el System Rescue CD otras herramientas interesantes como Ranish Partition Manager.
Con esto pude usar el dd_rescue, para clonar el disco viejo en el nuevo tan solo con "dd_rescue -A -v -w -m 75G /dev/sda /dev/sdb". Con esto copie los primeros 75Gb (-m 75G) del disco viejo (/dev/sda) en el viejo (/dev/sdb), escribiendo 0 si el la informacion del disco viejo fuera ilegible (-A) y abortando en caso de que halla un error de escritura en el nuevo (-w).
Despues de algo mas media hora y algunos errores de lectura termino, asi que apague la maquina desconecte el disco viejo y bootee desde el nuevo, aparece el menu del inicio dual (XP/VISTA) elijo XP y comienza a cargar, aparece chkdsk para comprobar la unidad E (la de datos, la tercera en el disco con 80Gb) asi que presiono una tecla para evitarlo ya que esta particion no la copie entera a proposito, y luego aparece chkdsk para comprobar C: (particion con XP y sectores defectuosos) asi que aca si dejo que chkdsk haga su trabajo. Despues de corregir algunas pocas cosas termina y prosigue la carga de windows. Inicia windows sin problemas, reinicio y compruebo que tambien funciona VISTA.
Despues de esto apago la maquina, y con Ranish PM en el disco nuevo borro la particion de datos (si bien solo se habia copiado unos 4 o 5 Gb, la informacion de particion se guarda en el MBR), redimensiono la particion extendida para que termine donde termina la particion de VISTAy apago. Conecto el disco viejo pero booteo desde el nuevo, cargo XP perfectamente y desde el administrador de discos (o algo asi, no me acuerdo como se llama) creo una nueva particion en el disco nuevo destinada a datos, pero ahora de unos 500-600 Gb (usando el resto del disco). Paso los archivos de la particion de datos del disco viejo a la nueva particion y apago de nuevo.
Ahora desconecto el disco viejo e intento cargar con el disco nuevo solo, para mi sorpresa al intentar cargar xp me dice que falta el ntldr y al intentar cargar vista me dice que falta Windows/system32/winload.exe (o parecido no recuerdo). Asi que vuelvo a conectar el disco viejo y al intentar cargar esta vez todo va en orden.
Extrañado, trato de empezar de nuevo y volver a copiar todo el disco viejo en el nuevo, pero esta vez con algunos cambios. Para evitar alargarlo mas les cuento que termino pasando lo mismo, solo cargaba cuando ambos discos estaban enchufados, pero erroneamente no me di cuenta de esto y pensando que no sucedia borre las particiones del disco viejo, resultando que ya no podia volver a cargar ningun windows ni en los discos viejos ni nuevos. Si bien pudo haber sido un poco desesperante, por el hecho de siquiera pensar en haber perdido toda la informacion de un cliente, en realidad Con una aplicacion tan simple como Ranish PM esto se puede arreglar poniendo los valores correctos de inicio y finalizacion de cada una de las particiones eliminadas.
Por suerte recorde algo que habia leido sobre un posible error con el archivo winload.exe debido a la modificacion de un campo en el mbr usado para identificar discos, el mbr pose un valor de 32 bits en el offset 1B8 usado por systemas nt para reconocer a un disco de manera unica (creo que fue usado al principio por los nt, pero hoy en dia su uso se amplio a otros sistemas).
Ahi me puse a pensar que al copiar el disco entero se copio tambien este identificador y mientras usase solo un disco conectado no habia problema, pero al conectar los dos e intentar bootear desde uno con windows, de alguna forma se daba cuenta de que los 2 discos tenian el mismo identificador y entonces se cambiaba uno. De forma que mientras tubiera ambos discos conectados y con las particiones donde esta la carpeta boot, el ntldr y otros datos necesarios para la carga de los SO no abria problema, pero al dejar solo el disco cuyo identificador fue cambiado, no se podria cargar ninguno de los SO.
Para ver si esta idea era real o solo un razonamiento incorrecto o no aplicable, cargue con el live del System Rescue CD y habri ambos mbr y los compare en la posicion 1B8, afortunadamente los valores eran distintos, asi que modifique el valor del mbr del disco nuevo con el del disco viejo, previo guardado del mbr original, intente bootear con solo el disco nuevo y al fin pude bootear correctamente ambos SO.
Bueno despues quedo trabajo por hacer, pero esto era lo importante.
Cuando se hacen clonaciones de discos con herramientas que copian byte por byte desde el primer sector hasta el ultimo (o el que se quiera), y se estan usando sistemas windows xp o vista (en realidad supongo que puede ser para cualquier nt o basado en nt, como 2000, 2003 y otro, pero no puedo asegurarlo) hay que tener cuidado con intentar bootear uno de los sistemas con el otro disco conectado, ya que automaticamente se modificara alguno de los identificadores de disco haciendo que sea imposible la carga de un SO hubicado en este cuando el otro disco no este conectado.
La verdad que esto no podia creerlo :confused: hasta que no se me ocurrio la solucion, porque en pocas palabras sucedia que tenia un disco andando, le conectaba otro booteaba y lo desconectaba y desde ese momento no podia volver a cargar el primero. Realmente parecia de locos :eek: y por eso la empresa de Redmond se comio unas cuantas puteadas de mi persona :mad:, ahora ya sabiendo la causa del problema sepan bien que no les quitaria ninguna puteada. :mad::mad::mad:
Bueno, espero que hallan llegado hasta el final y no se hallan perdido o dormido con mi mala redaccion.
Saludos