jueves, 15 de octubre de 2009

windows 7 en mi Tablet

Hace unos meses me compre una tablet viejita pero linda (Pentium M, 1.5GB RAM, 30GB drive, wireless, bluetooth) para experimentar y usarla como eBook (en mi opinión es muchísimo mejor que Kindle, el eReader de Amazon).

Una de las cosas que quería experimentar son las nuevas funcionalidades de Windows 7, pero la maquina no tiene CD/DVD y yo no tengo ninguna unidad de DVD por USB.

Había leído hace tiempo que era posible crear una versión de XP que entrara en (y booteara desde) un USB, y me puse a investigar si era posible usar el USB para instalar Windows 7.
Tal parece que mi idea no era nada original, ya que me encontré una docena de blogs y artículos describiendo como lo habían logrado.

Después de leer "Install Windows 7 From a USB Flash Drive" y "Windows 7 on LE1600 - Installation from pen drive", me decidí a hacerlo.

Me baje el Windows 7 Profesional de Microsoft.com y pedí prestado un USB Sony de 5 Gb en el laburo.

Seguí las instrucciones al pie de la letra, pero cada vez que intente botear, veía que el USB era accedido unas cuantas veces y después la luz quedaba prendida y el display solo mostraba un cursor titilante.
Evidentemente era un tema de booteo ... Intente haciendo un bootsect /nt60, pero tampoco ayudo ...

Pensé que quizás la PC fuera muy lenta accediendo a ese USB y que quizás solo fuera un tema de paciencia, ya era la 1 de la mañana, con lo cual me fui a dormir y lo deje trabajando, pero a la mañana siguiente estaba todo tal cual.

Al día siguiente volví a pedir prestado el USB y decido a volver a intentarlo ...

Investigando un poco mas encontré que "How To: Install Windows 7 Beta from a USB Key!" recomendaba formatear el disco como NTFS en lugar de FAT.

Intente eso, y esta vez el sistema comenzaba a bootear pero después me tiraba un error:

File: \Boot\BCD
Status: 0xc0000001
Info: An error occurred while trying to read the boot configuration data


Lo GOOGLie y lo BINGie, pero no encontré ninguna solución convincente ... decidí volver a intentarlo de cero ... y volvió a fallar (como diría Einstein: “Sólo un tonto hace lo mismo una y otra vez esperando obtener resultados distintos").

Ahí me acorde que hace unos días, al actualizar el firmware de un sistema del laburo, un proveedor me insistió en no bootear con un USB de más de 2 GB, y supuse que por ahí podía estar el problema.
Yo tenía un USB de 2 GB, el tema es que el DVD de instalación de Windows 7 tiene más de 2 GB y por eso ni lo había intentado.

Decidí hacer la prueba, al menos para poder determinar mejor el problema. Copie todo al disco excepto por un archivo (\sources\install.wim), sabía bien que ese archivo es el más importante del proceso de instalación, pero esto era tan solo una prueba para ver si podía bootear.

Puse el USB, rebootie la tablet, y OH MARAVILLA ! El Setup de Windows 7 comenzó a ejecutarse. Claro que cuando hice click en instalar, el programa se quejo de que no podía hallar aquel archivo.

OK, un paso adelante y otro nuevo desafío ...

Conecte el USB de 5 GB (aun tenia la imagen de mis intentos anteriores), e hice click en instalar, el USB de 5 GB no fue accedido ni una vez y la instalación fallo igual que antes ...

Rebootie el sistema en intente de nuevo. Esta vez, el USB de 5 GB fue leído, pero la instalación fallo igual que antes.

Encontré una forma de acceder al CMD, y me puse a investigar.

Mi disco rígido estaba ahí, en el viejo y querido C:, mi USB de 2GB estaba como D: y el de 5GB como E:, el sistema estaba corriendo desde un disco virtual X: (que después determine que estaba basado en la información del \sources\boot.wim).

Como el año pasado creamos las imágenes para las 1200+ Windows vista del laburo me volví bastante conocedor del proceso de instalación de Windows, con lo cual sabia que al programa de instalación se le puede indicar desde donde tomar la información del install.wim.
Esta opción es primariamente para que las organizaciones puedan poner el archivo en un servidor centralizado, o para una versión modificada del OS, pero me debería servir.
Hasta donde yo recordaba hay dos formas de pasarle esta indicación al programa instalador: por medio de un archivo de instalación desatendida (lo que habíamos hecho en el laburo para las maquinas VISTA), o por medio de un parámetro al ejecutable.

Como yo no tenía un archivo de instalación desatendida (ni tenía el tiempo ni las ganas de crear uno), decidí usar el parámetro INSTALLFROM del exe.

Una vez más, salí a CMD, y ejecute "setup.exe /INSTALLFROM:e:\sources\INSTALL.WIM", el instalador corrió, pero me dio el mismo error que antes, intente unas cuantas variaciones (sin el nombre del archivo, desde distintas locaciones, agregando el directorio al path, etc), pero ninguna funciono.
Me puse a revisar el disco virtual X: y navegue hasta el directorio Phanter que, según recordaba de mi experiencia con VISTA, tiene el log y los registros del proceso de instalación.

Después de un rato de leer esos archivos (algo muy entretenido, más aun cuando se lo hace mediante TYPE MORE), me di cuenta de cuál era mi problema: La instalación ya estaba corriendo. Esa ventana de CMD en la que yo trabajaba había sido lanzada desde el instalador y estaba corriendo dentro del ambiente del programa de instalación, con lo cual cada vez que yo ejecutaba el instalador, se reiniciaba el que estaba en memoria y no uno nuevo, era por eso que ignoraba mis parámetros.
El programa estaba seteado para encontrar los instaladores en D:\Sources, y no había lola.

Con lo cual tenía dos opciones: crear un archivo de instalación automatizada, o engañar al sistema para que use el USB de 5 GB en lugar del de 2 GB. Ahora bien, yo necesitaba reemplazar un disco existente (el D:) con otro disco (el E:), pero sabía que el disco E: tenía toda la misma información del D:, con lo cual si lo podía reemplazar no debería tener problemas aun cuando el sistema buscara algún archivo.

Si hubiera tenido acceso al disk manager hubiera cambiado las letras y listo, pero este no era el caso.

Ahí me acorde de un viejo comando del DOS 3.11 SUBST que permite asignar una letra de unidad a un directorio. Era un comando muy útil, allá lejos y hace tiempo cuando jugaba con la PC XT, copiábamos los disquetes con juegos al HD y si algún programa protestaba que no le gustaba ejecutarlo desde un directorio usábamos el SUSBST para hacerle creen que se trataba de un disco verdadero.

No sabía si el comando seguía existiendo, más aún en la reducida consola de CMD del instalador, pero resulto estar ahí.

Probé para ver si funcionaria: SUBST R: E:\ se ejecuto sin problemas, y un DIR R: me retorno el resultado esperado.
Ahora bien, yo sabía que el subst no permite usar la letra de un disco existente, con lo cual necesitaba eliminar el D: para poder reemplazarlo, pero si booteaba sin ese USB estaría en la misma de antes.
Ahí recordé que el instalador estaba corriendo en Windows (una versión reducida, pero Windows al fin y al cabo), y ya sabía que el plug-and-play funcionaba (había detectado mi teclado ni bien lo puse) con lo cual, con un poco de suerte si sacaba el USB de 2GB el sistema liberaría la letra correspondiente ... o el sistema se colgaría por completo :-P
Cruce los dedos y saque el USB de 2GB ... el sistema siguió funcionando, buena señal :-)
ejecute el SUBST D: E:\ y se ejecuto sin problemas, el DIR dio el resultado que esperaba, era hora de la prueba máxima: hice click en instalar y aguarde la respiración hasta que el sistema comenzó a instalar alegremente...

Unos minutos más tarde mi tablet ingresó a la familia de los Windows 7. ¡!!!! :-)

Lecciones aprendidas:
"Retroceder nunca, rendirse jamás"
Me llevo 3 días y un montón de intentos, pero finalmente logre lo que quería ¡!!!

"Aguante el DOS viejo y querido !”
La mayor parte de la investigación la hice con comandos re viejos TYPE y MORE, y la solución fue también un comando viejo SUBST.