Arqueología informática

Pila de disquetes de 3''1/2

Pila de disquetes

Uno de los grandes problemas que tiene la informática, es que su avance es extremadamente rápido y acceder a sistemas de hace un par de décadas es prácticamente arqueología. Es una tecnología que apenas tiene un siglo de vida y si nos limitamos a los ordenadores personales, no llega ni a medio siglo. Se ha extendido y ha sido adoptada por toda la sociedad, permitiendo un rápido avance, pero esto ha causado que parte de la tecnología de hace unos años se encuentre ya desfasada y sea difícil hacerla funcionar actualmente. Entre mis trastos viejos figuran un montón de cajas con disquetes de 3”1/2, que obviamente ahora no son útiles, pero almacenan información valiosa para mí, desde mis primeros trabajos del instituto, de la facultad, juegos, programas… En definitiva un pedacito de mi historia particular.

Quitando el polvo

A la hora de poder acceder de nuevo a esa información, nos encontramos básicamente con dos problemas diferentes. Por un lado está el problema del hardware. Quizás, si se es nostálgico y se ha tenido espacio suficiente para almacenarlo, se conserve algún ordenador completo y funcional que pueda encenderse, cruzando los dedos para que el tiempo pasado no haya estropeado ningún componente. Lo normal suele ser que el cambio de un ordenador antiguo a uno nuevo haya sido precedido de un fallo del anterior. En general la gente suele guardar su información (discos, disquetes…) y renovar el ordenador, con lo que muchas veces no tendremos acceso a ese hardware antiguo. De momento y si no es algo excesivamente raro suelen encontrarse adaptadores, por ejemplo, disqueteras de 3”1/2 que podemos conectar al puerto USB, igual para discos duros IDE, que todavía hay adaptadores a SATA o USB sin problemas.

El segundo problema que nos podemos encontrar es debido al software. Aunque muchas veces se mantiene la compatibilidad hacia atrás en los sistemas operativos y en los programas, muchas veces no es posible o es muy limitada y nos encontramos con programas antiguos que ya no se pueden ejecutar en los sistemas modernos. El problema se agrava cuando realmente lo que queremos es acceder a algún documento generado por un programa antiguo que no funciona en los sistemas nuevos. Nuestra información está secuestrada por ese programa y nos complica su recuperación. Este punto es importante ya que es una de las bases para que mucha gente se empeñe en usar formatos libres y abiertos. Si nuestra información está almacenada en un formato de un programa viejo que usaba un formato cerrado y propietario, cuya empresa ya ni exista, recuperar esa información puede ser prácticamente imposible. Es como si estuviese escrita en un idioma que solo hablaba una persona que ha desaparecido.

Virtualizando

Logo VirtualBox

Logo VirtualBox

Cuando no disponemos del hardware antiguo que pueda volver a funcionar, una posible solución nos la ofrecen los sistemas virtuales. Actualmente y gracias también al avance en este campo de los procesadores modernos, tenemos muchas facilidades para montar máquinas virtuales, es decir, emular dentro de nuestro sistema otro sistema configurado según nuestras necesidades. Quizá uno de los programas más conocidos sea Virtual Box, con él podemos configurar una máquina virtual e intentar revivir el sistema y programa que necesitemos.

Revivir un backup de hace 5 años

Hasta hace 5 años mantenía un servidor web en mi casa con mi línea ADSL. El ordenador falló y ya decidí montarlo todo en internet, así que guardé los discos (que afortunadamente no habían fallado) y hasta ahora no había tenido necesidad de volver a acceder a esa web. El disco principal, con el sistema operativo y la web, es un disco IDE, por lo que usando un adaptador (una carcasa USB para discos duros que admite IDE y SATA) lo pude enchufar para acceder a sus datos. Mi intención era volver a arrancar el sistema, así que saqué imágenes de las dos particiones que necesitaba para revivirlo. Todos los comandos, hacerlos como root (sudo -s).

dd if=/dev/sda3 of=./part1.hdd bs=64k conv=noerror,sync
dd if=/dev/sda7 of=./part2.hdd bs=64k conv=noerror,sync

Lo siguiente consiste en montar la máquina virtual, para ello vamos a simular un sistema linux de 32 bits, con 1024 mb de ram y 128 de vídeo. La conexión serán dos tarjetas de red, una con NAT y la otra sólo anfitrión y crearemos un disco duro virtual nuevo con el tamaño de las dos particiones más el de la ram para la partición de swap. Como el disco virtual nuevo no tiene nada, tendremos que usar una imagen de un cd para arrancar el sistema, en mi caso usé un Ubuntu 14.10 desktop, con lo que poder arrancar y tener una terminal para ‘re-instalar’ el sistema. Además hay que ‘conectar’ los dos archivos de las particiones como dos discos virtuales más. Una vez configurado todo se arranca la máquina virtual, con lo que se cargará Ubuntu 14.10, que nos preguntará si queremos probar el sistema o instalarlo. Lo vamos a usar para restaurar nuestro antiguo sistema, así que lo ejecutaremos sin instalarlo.

Lo primero que necesitamos es particionar el disco virtual, para ello podemos usar gparted, que nos permite hacerlo gráficamente. Seleccionamos el dispositivo del disco que está vacío (generalmente será /dev/sda) y nos dirá que hay que crear la tabla de particiones (tipo msdos). Creamos una partición para swap y las otras dos particiones cada una del tamaño y tipo (en mi caso son ext3) que necesite o superior. Una vez particionado y aplicado los cambios, vamos a copiar toda la información a cada partición, lo volvemos a hacer con dd y como root.

dd if=/dev/sdb of=/dev/sda2 bs=64k conv=noerror,sync
dd if=/dev/sdc of=/dev/sda3 bs=64k conv=noerror,sync
fsck -f /dev/sda2
fsck -f /dev/sda3
e2resize /dev/sda2
e2resize /dev/sda3

Con fsck -f verificamos la partición y arreglamos los posibles problemas que pueda tener. Después con e2resize hacemos que cada partición ocupe todo el espacio que pueda para que no quede espacio desperdiciado. Con esto ya tendremos un disco duro virtual con las particiones replicadas, pero todavía no arrancará. Tendremos que re-instalar el cargador de arranque que usemos (en este caso grub).

Aunque esto lo vamos a hacer en una máquina virtual, es el mismo procedimiento que cuando por alguna razón (re-instalar windows) se pierde el gestor de arranque. Lo que vamos a hacer es enjaular el sistema con el comando chroot para desde dentro de esa jaula instalar grub en el disco virtual. Para ello, tenemos que montar la partición del sistema operativo, conectar los directorios de dispositivos, sistema y proc y después realizar el chroot.

mount /dev/sda2 /mnt

mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

chroot /mnt

Una vez ejecutado ese comando, estaremos ‘dentro’ del sistema antiguo. Ahora, antes de hacer nada, hay que revisar lo primero el fichero mtab, que indica qué sistemas de archivos están montados actualmente. Seguramente no coincida con lo ‘real’, por lo que hay que actualizarlo. Para ello:

cp /etc/mtab /etc/mtab.old
grep -v rootfs /proc/mounts > /etc/mtab

Ahora ya el comando ‘mount’ nos devolverá la información correcta sobre los puntos de montaje y los dispositivos. Habría que revisar y en su caso cambiar el fichero fstab que contiene la lista de particiones/discos que se montan automáticamente al principio. Al haber ‘sacado’ las particiones del disco donde estaban, podría haber referencias a otros discos o particiones que en la máquina virtual no existen. Para saber los UUID de los discos, se pueden comprobar en /dev/disk/by-uuid.

Una vez hechos estos ajustes, sólo queda reinstalar grub en el disco virtual:

grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub

exit

Bueno, creo que los dos últimos quizá no sean necesarios, pero tampoco rompen nada ;-). Con ‘exit’ salimos del entorno chroot y ya podemos reiniciar sin la imagen de Ubuntu 14.10.

En mi caso después de arrancar, tuve que hacer unos pequeños ajustes a la configuración de la red, pero el sistema funcionó sin problemas y tal y como estaba hace 5 años!

 

Share on Google+0Tweet about this on TwitterShare on Facebook0Share on LinkedIn0Email this to someone