Archivo por días: 25 marzo, 2011

Instalando Windows desde un pen

Por una serie de circunstancias, este fin de semana necesité instalar un Windows XP en mi portátil, y una tarea tan aparentemente sencilla se convirtió en una tortura. ¿Por qué?

Lo que todo el mundo pensará es que basta con meter el CD en la unidad, reiniciar, y listo. Pero mi portátil es un EEE PC sin lector de CDs. Así que lo siguiente que se piensa es en utilizar un lector de CDs por USB… pero no tenía ninguno a mano, y no me apetecía comprar uno sólo para una vez.

Una opción era utilizar WinToFlash, una utilidad que permite meter el instalador en un pendrive; por desgracia sólo funciona en Windows… y no tengo ningún windows a mano. Incluso intenté hacerlo desde una máquina virtual, pero no funciona: es muy exigente y quiere un pincho «de verdad», no le sirve un disco duro, y la emulación de pinchos USB en KVM da problemas (ya ni hablemos de VirtualBox…).

También intenté utilizar UnetBootin, que está disponible para Linux, pero desgraciadamente no sirve para el instalador de XP.

Sin embargo, a tozudo no me gana nadie, y al final conseguí instalarlo con mucha paciencia, así que aquí está el método, por si a alguien más le puede ser de utilidad.

Lo primero, avisar que el proceso de instalación será mucho más lento de lo normal, así que tomadlo con mucha paciencia y una buena infusión.

Ingredientes necesarios:

Lo primero, copiamos cualquier dato importante que tengamos en nuestro pincho USB a otro lado, porque vamos a tener que formatearlo.

Antes de comenzar la instalación, necesitamos disponer de una partición primaria reservada para el nuevo disco. En caso de que no la tengamos, la mejor opción consiste en crear, mediante UnetBootin, un pincho USB de Ubuntu, arrancar con ella el portátil y utilizar GParted para reducir el tamaño de una de las particiones actuales y dejar sitio para la nueva. Sobre como hacer esto hay  abundante material en Internet, así que no profundizaré.

Cuando ya tengamos una partición primaria en el disco, etiquetada con sistema de archivos FAT32 (importante) y situada antes que cualquier otra partición primaria de tipo FAT en el disco, procedemos a particionar el pincho USB. Lanzamos GParted, borramos todas las particiones que hubiese, creamos una partición extendida, y dentro una unidad lógica, etiquetándola como de tipo FAT32.

Una vez hecho esto, arrancamos UnetBootin, escogemos la imagen de CD fdfullws.iso, y la volcamos en el pincho. Cuando esté listo, copiamos en el pincho todos los archivos del CD de instalación de Windows.

Ahora estamos listos para hacer la instalación de FreeDOS: reiniciamos el ordenador con el pincho, y cuando pregunte, iniciamos con HYMEM y EMM386. Nos saldrá un prompt de DOS, en el que teclearemos D:. Gracias a que el pincho tiene solamente una partición extendida, C: se corresponderá con la partición primaria del disco duro, y D: será el pincho en sí. Si hubiésemos utilizado una partición primaria en el pincho, como éste aparece como primer disco haría que C: fuese el pincho en sí, con lo que no podríamos instalar correctamente FreeDOS.

Ahora tecleamos setup para iniciar la instalación de FreeDOS. Instalamos todo (excepto las fuentes, que no son necesarias), y salimos de nuevo al prompt. Ahora copiamos también todo el CD de instalación de Windows al disco duro mediante xcopy:

    xcopy /E d:*.* c:

Ahora tenemos que asegurarnos de que podremos iniciar el sistema correctamente, para lo que tecleamos

    sys c:
    fdisk /mbr

El primero asegura de que el sistema de arranque de FreeDOS está instalado en C:; el segundo borra el MBR (lo que incluye a GRUB; luego lo recuperaremos) y pone en su lugar el código de arranque básico de DOS.

Reiniciamos el ordenador y debería arrancar FreeDOS. Ahora tecleamos:

    ./i386/winnt.exe

lo que lanzará el instalador de Windows XP. Nos dirá que la caché de disco no está instalada y que podemos cancelar el proceso. No lo haremos; eso sí, la copia de archivos se demorará durante un par de horas (y no sirve la caché que incluye el propio FreeDOS: no funciona). Nos tomaremos un buen café hasta que, por fin, termine de copiar los archivos básicos y reinicie, continuando, ahora sí, por fin, la instalación como siempre.

En determinado punto nos indicará que la unidad está en formato FAT32 y si queremos convertirla a NTFS. En teoría el cambio no supone la pérdida de los datos, pero por si acaso yo preferí hacer la conversión después de instalar todo, y, efectivamente, se puede hacer sin riesgo.

Recuperando GRUB

Ahora que ya está instalado Windows nos queda recuperar GRUB para poder arrancar de nuevo Linux. Para ello volvemos a particionar el pincho, dejando una única partición primaria, instalamos en ella un CD Live de Ubuntu u otra distribución preferida y arrancamos desde él.

Una vez hecho, abrimos un terminal y procedemos a montar la partición raíz de nuestro sistema Linux, así como enlazar los pseudo sistemas de archivos /proc, /dev y /sys. Finalmente, usamos chroot para entrar en nuestro viejo sistema. Si la partición raíz está en /dev/sda1 y tenemos el directorio /tmp disponible para montar en él lo que queramos, haríamos:

    mount /dev/sda1 /mnt
    mount -o bind /proc /mnt/proc
    mount -o bind /dev /mnt/dev
    mount -o bind /dev/pts /mnt/dev/pts
    mount -o bind /sys /mnt/sys
    sudo chroot /mnt /bin/bash

Ahora ya estamos dentro de nuestro sistema como root,  y podemos proceder a reinstalar GRUB. En Ubuntu es tan sencillo como

    dpkg-reconfigure grub-common

el cual reconfigurará GRUB para añadir automáticamente el nuevo windows instalado. En otras distribuciones de Linux es necesario utilizar un editor para modificar el fichero de configuración de GRUB y luego ejectuar grub-install /dev/sda para reinstalarlo en el MBR.

¡Y listo!