Discos flexibles frente al Linux del siglo XXI

Los titulares proclaman la desaparición del soporte del núcleo para las unidades de disquete. Aquí tienes qué hacer con tu colección de disquetes y cómo hacerlo.

Philip L. Gilmer, 11 de agosto de 2019

Recientes titulares proclaman la inminente desaparición del soporte para la venerable disquetera en el núcleo de Linux. Se me revolvió el estómago y mi corazón dio un vuelco. Llevo bastantes años en este negocio y mi colección de disquetes se remonta a los de 8 pulgadas. «¡Otra vez no!», pensé.

Afortunadamente, investigaciones posteriores indicaron que los titulares exageraban un poco la situación. No va a desaparecer todo el soporte de disquetes, sólo el soporte de unidades conectadas a controladores de disquetes dedicados. Esa unidad USB que compraste para llevar la capacidad de lectura/escritura de disquetes a los nuevos ordenadores utiliza un mecanismo de soporte diferente y seguirá siendo compatible, por ahora. De todos modos, parecía que era un buen momento para hacer algo con todos esos disquetes.

Historia

Los primeros disquetes tenían 8 pulgadas de diámetro y fueron introducidos por IBM a finales de los años 60 como componentes de mainframe. IBM los designó como su «disquete de tipo 1», pero el término «disquete» se impuso rápidamente. Las últimas versiones de doble cara eran capaces de contener unos 1,2 megabytes de datos.

Pronto siguieron las unidades de 5-1/4 pulgadas. Aunque eran menos caras, sólo podían contener una cantidad modesta de datos. Al principio sólo podían contener unos 72 kilobytes de datos, pero la competencia aumentó su capacidad hasta unos 630 kilobytes.

La primera unidad de disquete de 3-1/2 pulgadas fue una maravilla en su época. El «disquete» ya no era tan disquete. Los primeros ordenadores Macintosh de Apple utilizaban un tamaño de 400 kilobytes. IBM introdujo el factor de forma en 1986 para su línea IBM PC Convertible, aportando la capacidad de almacenar la «friolera» de 720 kilobytes. La posterior serie PS/2 de ordenadores IBM aumentó la capacidad a 1,44 e incluso 2,88 megabytes de datos. Pero el tiempo avanza. Innovaciones como launidad Zip de Iomega y las unidadesSuperDisk LS-120 y LS-240 de 3M llevaron las capacidades hasta la marca de 750 megabytes.

Los avances en las tecnologías de CD y DVD supusieron prácticamente el fin de los disquetes. Aunque al principio los CD eran soportes de sólo lectura, pronto aparecieron dispositivos de escritura que llevaron las capacidades de almacenamiento de 650 megabytes a la gama de los gigabytes, y los DVD de doble capa tenían una capacidad de 8 gigabytes.

Hoy en día, las unidades de disco duro son las armas preferidas por la mayoría de nosotros. Pequeños, baratos y manejables, ofrecen capacidades de almacenamiento que ahora se acercan al terabyte.

¡Genial! Utilizo las nuevas tecnologías como todo el mundo. Pero, ¿qué hago con todos estos disquetes que tengo?

El dilema

Sin duda, muchos de estos viejos disquetes contienen archivos de datos de un tipo u otro y los archivos podrían copiarse a un directorio de mi sistema Linux. Como uso Linux Mint KDE, ni siquiera tengo que montar manualmente los disquetes. Mint se ofrece a hacerlo por mí cuando se inserta el disquete. Abro mi gestor de archivos y simplemente puedo arrastrar y soltar los archivos a sus nuevas ubicaciones.

Gestor de archivos

Puede que otras distribuciones de Linux lo hagan de forma un poco diferente, pero la mayoría te ofrecerá una forma de montar fácilmente una disquetera. Haz clic en la entrada del disquete y aparecerán las opciones. Selecciono «Abrir con el Administrador de Archivos» para ver los archivos del disquete.

Abrir con el Administrador de Archivos

Copia los archivos al directorio que elijas simplemente arrastrándolos y soltándolos.

Lo que había que hacer con otros disquetes no era tan sencillo. Para que sirvieran de algo, tenían que ser útiles como disquetes. He hecho imágenes de disquetes en DOS y en Windows. Pero fue hace mucho tiempo. Y los programas que utilicé son programas de 16 bits de DOS y no funcionan en ninguna versión de Windows desde Windows XP.

Afortunadamente, el proceso para hacerlo es sencillo. Y no necesitas ningún programa de otro proveedor para hacerlo. Linux contiene todo lo que necesitas para hacer el trabajo.

La solución

Utilizaremos un programa llamado dd para crear la imagen.

Lo primero que tenemos que hacer es averiguar dónde está montada la disquetera.

Conecta tu unidad USB al sistema, espera unos segundos y ejecuta el comando:

dmesg | tail

El resultado será algo parecido a esto:

Salida del comando dmesg

La última línea indica que el disquete está designado como /dev/sdb.

Si utilizas una unidad de disquete conectada a un controlador dedicado, tu dispositivo tendrá un aspecto similar a /dev/fd0 o /dev/floppy. Introduce un disquete en él y utiliza el comando df para ver el dispositivo utilizado:

Salida del comando df

En nuestro ejemplo el dispositivo asignado es /dev/fd0. Si ésta es tu configuración, utiliza este dispositivo donde se utiliza /dev/sdb en los ejemplos siguientes.

Inserta un disquete para crear la imagen, cambia al directorio donde se va a almacenar la imagen y ejecuta el comando:

dd if=/dev/sdb of=test.img

Esperamos que veas algo parecido a esto:

comando dd

Hay un par de problemas al utilizar dd en su forma más sencilla.

Uno, no importa lo mucho o poco que se utilice el disquete, la imagen creada reflejará el tamaño del disquete, en este caso 1,44 megabytes. Podemos comprimir el archivo utilizando el comando gzip

gzip test.img

con el siguiente resultado:

Gzip test.img

El archivo test.img se comprime y se sustituye por test.img.gz, que es más pequeño casi la mitad.

En segundo lugar, el programa dd no gestiona los errores como nos gustaría. Por defecto, si encuentra un error, un sector defectuoso por ejemplo, informa del problema y se cierra.

Afortunadamente, dd tiene los medios para permitirnos tratar algunos errores.

Añadiremos los parámetros para ignorar el error y seguir adelante. Además, haremos que rellene la sección ilegible con ceros, para que no tengamos datos truncados. Voy a modificar el tamaño de bloque de la copia de 512 bytes a 1024 bytes, para que el recuento de registros sea ahora igual a la capacidad del disco (en kilobytes). Nuestra copia tiene ahora este aspecto:

dd

Como antes, podemos comprimir el archivo utilizando la utilidad gzip.

Estaría muy bien hacer esto en un solo paso. Utilizando el operador pipe («|») podemos hacerlo. Emitiremos el siguiente comando:

sudo dd if=/dev/sdb bs=1024 conv=sync,noerror | gzip > test.img.gz

Con el siguiente resultado:

dd y gzip en un solo comando

Como proporcionamos un nombre que termina con la extensión de archivo .gz, el programa gzip utiliza el resto del nombre del archivo como nombre del archivo interno, «prueba.img». Recomiendo encarecidamente esta convención de nombres. Sin ella, gzip y gunzip se confunden y los resultados pueden ser imprevisibles. Así que utiliza <nombre>+».img «+».gz». Si tu nombre contiene espacios en blanco u otros caracteres especiales, encierra todo el nombre entre comillas.

archivos img en el gestor de archivos

Si abrimos nuestro archivo en el archivador, podremos ver el nombre real del archivo:

abrir archivo img

Añadir un indicador de progreso

Nuestros comandos funcionan, pero no puedes ver realmente lo que está pasando. Estaría bien poder ver si las cosas avanzan como deberían.

Hay una pequeña utilidad llamada pv que hará el trabajo. Instálala desde los repositorios de tu distribución. Linux Mint utiliza el gestor de paquetes apt, así que lo instalamos con el comando:

sudo apt install pv

Añadir un indicador de progreso

Usando pv tenemos ahora nuestro indicador de progreso. Así que nuestro proceso de creación de imágenes tiene ahora este aspecto:

pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror | gzip > test.img.gz

Del mismo modo, nuestro proceso de restauración del disquete pasa a ser:

sudo pv -tpreb test.img.gz | gunzip -c | dd of=/dev/sdb

Para que sea más fácil de usar

Para facilitar el uso de estos comandos, he creado un par de scripts bash. Para crear la imagen de un disquete, utiliza imgcreate.sh:

#! /bin/sh
#!
#! imgcreate.sh - Shell to create diskette image file from floppy diskette
#! Author - Philip L. Gilmer, 11-Aug-2019

#!pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror,excl | gzip > "$1"

exit 0

Invoca utilizando el nombre y el nombre del archivo comprimido.

Para recrear el disquete, utiliza imgrestore.sh:

#! /bin/sh
#!
#! imgcreate.sh - Shell to create diskette image file from floppy diskette
#! Author - Philip L. Gilmer, 11-Aug-2019
#!

pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror,excl | gzip > "$1"

exit 0

Recuerda cambiar el nombre del dispositivo si la unidad de disquete no es /dev/sdb.

Cómo lidiar con los errores

Bien, estamos muy ocupados creando imágenes de nuestros disquetes y ocurre algo como esto

Debería mostrar 720 registros leídos. ¡Uy! 104? No es del todo inesperado. Algunos de estos disquetes tienen 30 años. ¿Y ahora qué? Intenté utilizar el comando fsck, pero no obtuve muy buenos resultados. Afortunadamente, el comando dosfsck puede ayudarnos. Este comando forma parte del paquete del repositorio dosfstools. Si no está ya instalado en tu sistema, instala el paquete. En un sistema basado en Debian como Linux Mint, puedes instalarlo con el comando:

sudo apt install dosfstools

Tu sabor puede variar.

Emite el comando de la siguiente manera:

sudo dosfsck -w -r -l -a -v -t /dev/sdb

Al introducirlo, dosfsck intentará reparar el disco de forma automática, listando los nombres de los archivos a medida que se procesan, marcando los clusters ilegibles como malos, y escribiendo los cambios en el disco inmediatamente. Consulta la página de manual para obtener información adicional. Para nuestro disquete actual obtenemos la siguiente salida

Este disquete no es realmente utilizable. Demasiados archivos están dañados y contienen clusters ilegibles. Los archivos afectados tendrían que ser recuperados de alguna otra fuente. Sin embargo, a menudo los clusters ilegibles se encuentran fuera de los clusters asignados de cualquier archivo. El disco reparado puede entonces ser imaginado. Volver a ejecutar dosfsck muestra que ha limpiado el disquete lo mejor que ha podido:

Así que ahora intentaremos reimaginar el disquete:

Se puede crear una imagen de todo el disco. Recuerda que los archivos que tengan clusters defectuosos no se podrán utilizar.

Utilizar los archivos de imagen

Para utilizar el archivo de imagen, primero hay que descomprimirlo.

Para inspeccionar el archivo, móntalo en el dispositivo de bucle:

sudo mount -o loop -t msdos ./test.img /mnt

Navegando por nuestro punto de montaje /mnt podemos ver los archivos:

El archivo .img también puede utilizarse como disquete virtual en una unidad virtual definida en el ordenador invitado en una VM de VirtualBox. El archivo de imagen debe residir en el disco duro del ordenador huésped.

Selecciona la entrada resaltada y navega.

Conclusión

La introducción de nuevas tecnologías puede haber hecho que los disquetes sean menos útiles a lo largo de los años. Sin embargo, pueden ser insustituibles cuando se trata de máquinas virtuales que ejecutan programas y sistemas antiguos. Las distribuciones de Linux del siglo XXI siguen incluyendo muchas herramientas para soportar la tecnología más antigua, pero nadie puede decir cuánto tiempo se seguirá soportando esta tecnología.

Así que hazte con esos disquetes tan pronto como puedas, ¿oíste? ¡Todavía me gustaría haber hecho algo con esos disquetes de 8 pulgadas!

También te podría gustar...