Disquettes contre Linux du XXIe siècle
Les gros titres annoncent la fin de la prise en charge des lecteurs de disquettes par les noyaux. Voici ce qu’il faut faire avec ta collection de disquettes et comment le faire.
Philip L. Gilmer, 11 août 2019
Les récents gros titres annoncent la disparition imminente de la prise en charge du vénérable lecteur de disquettes dans le noyau Linux. Mon estomac s’est retourné et mon cœur a donné une ou deux palpitations. Je suis dans ce domaine depuis plusieurs années et ma collection de disquettes remonte à des 8 pouces. « Pas encore ! » ai-je pensé.
Heureusement, des recherches plus poussées ont montré que les gros titres ont quelque peu exagéré la situation. La prise en charge des disquettes ne va pas disparaître, seulement celle des lecteurs connectés à des contrôleurs de disquettes dédiés. Le lecteur USB que tu as acheté pour apporter la capacité de lecture/écriture de disquettes aux nouveaux ordinateurs utilise un mécanisme de prise en charge différent et continuera d’être pris en charge, pour le moment. Tout de même, il semblait que c’était le bon moment pour faire quelque chose avec toutes ces disquettes.
Histoire
Les premières disquettes mesuraient 8 pouces de diamètre et ont été introduites par IBM à la fin des années 60 comme composants d’ordinateur central. IBM les a désignées sous le nom de « Disquette de type 1 » mais le terme « disquette » s’est imposé très rapidement. Les dernières versions à double face étaient capables de contenir environ 1,2 mégaoctet de données.
Les lecteurs de 5-1/4 pouces ont rapidement suivi. Bien que moins chers, ils ne pouvaient contenir qu’une quantité modeste de données. Ne pouvant initialement contenir qu’environ 72 kilooctets de données, la concurrence a augmenté les capacités jusqu’à environ 630 kilooctets.
Le premier lecteur de disquettes 3-1/2 pouces était une merveille à son époque. La « disquette » n’était plus aussi souple. Les premiers ordinateurs Apple Macintosh utilisaient une taille de 400 kilobytes. IBM a introduit le facteur de forme en 1986 pour sa gamme IBM PC Convertible, nous permettant ainsi de stocker la « formidable » 720 kilobytes. Plus tard, la série PS/2 des PC IBM a augmenté la capacité à 1,44 et même 2,88 mégaoctets de données. Mais le temps passe. Des innovations comme lelecteur Zip de Iomega et les lecteursSuperDisk LS-120 et LS-240 de 3M ont fait passer les capacités à la barre des 750 mégaoctets.
Les progrès des technologies CD et DVD ont pratiquement sonné le glas des disquettes. Bien que les CD soient initialement des supports à lecture seule, des dispositifs inscriptibles sont rapidement apparus et ont fait passer les capacités de stockage de 650 mégaoctets à la gamme des gigaoctets, les DVD à double couche ayant une capacité de 8 gigaoctets.
Les clés USB sont les armes de choix de la plupart d’entre nous aujourd’hui. Petites, bon marché et maniables, elles offrent des capacités de stockage qui approchent maintenant le téraoctet.
Génial ! J’utilise les nouvelles technologies comme tout le monde. Mais que dois-je faire de toutes ces disquettes que j’ai ?
Le dilemme
Pour être sûr, beaucoup de ces vieilles disquettes contiennent des fichiers de données d’une sorte ou d’une autre et les fichiers pourraient être copiés dans un répertoire de mon système Linux. Comme j’utilise Linux Mint KDE, je n’ai même pas besoin de monter manuellement les disquettes. Mint me propose de le faire pour moi lorsque la disquette est insérée. Ouvre mon gestionnaire de fichiers et je peux simplement glisser et déposer les fichiers vers leurs nouveaux emplacements.
D’autres distributions Linux peuvent le faire un peu différemment, mais la plupart te donneront un moyen de monter facilement une disquette. Clique sur l’entrée de la disquette et les options s’afficheront. Je sélectionne « Ouvrir avec le gestionnaire de fichiers » pour afficher les fichiers sur la disquette.
Copie les fichiers dans le répertoire de ton choix en les faisant simplement glisser et en les déposant.
Ce qu’il fallait faire avec les autres disquettes n’était pas si simple. Pour être utiles, il fallait qu’elles soient utiles en tant que disquettes. J’ai fait des images de disquettes sous DOS et Windows. Mais c’était il y a longtemps. Et les programmes que j’ai utilisés sont des programmes DOS 16 bits et ne fonctionneront sur aucune version de Windows depuis Windows XP.
Heureusement, le processus pour faire cela est simple. Et tu n’as pas besoin d’un programme d’un fournisseur tiers pour le faire. Linux contient tout ce dont tu as besoin pour faire ce travail.
La solution
Nous allons utiliser un programme appelé dd pour créer réellement l’image.
La première chose que nous devons faire est de trouver où le lecteur de disquettes est monté.
Branche ton lecteur USB dans le système, attends quelques secondes, puis lance la commande :
dmesg | tail
La sortie ressemblera à quelque chose comme ceci :
La dernière ligne ici indique que la disquette est désignée /dev/sdb.
Si tu utilises un lecteur de disquettes relié à un contrôleur dédié, alors ton périphérique ressemblera à quelque chose comme /dev/fd0 ou /dev/floppy. Insère une disquette dans le lecteur et utilise la commande df pour voir le périphérique utilisé :
Dans notre exemple, le périphérique attribué est /dev/fd0. Si c’est ta configuration, utilise ce périphérique partout où /dev/sdb est utilisé dans les exemples ci-dessous.
Insère une disquette à imager, passe dans le répertoire où l’image doit être stockée et lance la commande :
dd if=/dev/sdb of=test.img
Tu verras, nous l’espérons, quelque chose comme ceci :
L’utilisation de dd dans sa forme la plus simple pose quelques problèmes.
Premièrement, quelle que soit la quantité de la disquette utilisée, l’image créée reflétera la taille de la disquette, dans ce cas 1,44 mégaoctets. Nous pouvons compresser le fichier à l’aide de la commande gzip :
gzip test.img
avec le résultat suivant :
Le fichier test.img est compressé et remplacé par test.img.gz, qui est plus petit de presque la moitié.
Deuxièmement, le programme dd ne gère pas les erreurs comme on pourrait le souhaiter. Par défaut, s’il rencontre une erreur, un mauvais secteur par exemple, il signale le problème et quitte.
Heureusement, dd a les moyens de nous laisser gérer certaines erreurs.
Nous ajouterons les paramètres pour ignorer l’erreur et continuer. De plus, nous lui demanderons de remplir la section illisible avec des zéros, afin que nous n’ayons pas de données tronquées. Je vais modifier la taille des blocs de la copie de 512 octets à 1024 octets, pour que le nombre d’enregistrements soit maintenant égal à la capacité du disque (en kilo-octets). Notre copie ressemble maintenant à ceci :
Comme précédemment, nous pouvons compresser le fichier à l’aide de l’utilitaire gzip.
Ce serait vraiment bien de faire cela en une seule étape. Nous pouvons le faire en utilisant l’opérateur pipe (« | »). Nous allons lancer la commande suivante :
sudo dd if=/dev/sdb bs=1024 conv=sync,noerror | gzip > test.img.gz
Avec le résultat suivant :
Comme nous fournissons un nom se terminant par l’extension de fichier .gz, le programme gzip utilise le reste du nom de fichier comme nom du fichier interne, « test.img ». Je recommande vivement cette convention d’appellation. Sans elle, gzip et gunzip se confondent et les résultats peuvent être imprévisibles. Utilise donc <nom>+ « .img « + « .gz ». Si ton nom contient des blancs ou d’autres caractères spéciaux, mets le nom entier entre guillemets.
Si nous ouvrons notre fichier dans l’archiveur, nous pouvons voir le nom réel du fichier :
Ajouter un indicateur de progression
Nos commandes fonctionnent, mais tu ne peux pas vraiment voir ce qui se passe. Ce serait bien de pouvoir voir si les choses avancent comme elles le devraient.
Il existe un petit utilitaire très pratique appelé pv qui fera l’affaire. Installe-le à partir des dépôts de ta distribution. Linux Mint utilise le gestionnaire de paquets apt, nous l’installons donc à l’aide de la commande :
sudo apt install pv
Grâce à pv, nous avons maintenant notre indicateur de progression. Notre processus de création d’image ressemble donc maintenant à ceci :
pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror | gzip > test.img.gz
De même, notre processus de restauration de disquettes devient :
sudo pv -tpreb test.img.gz | gunzip -c | dd of=/dev/sdb
Rendre ces commandes plus faciles à utiliser
Pour rendre ces commandes plus faciles à utiliser, j’ai créé quelques scripts bash. Pour créer l’image d’une disquette, utilise 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
Invoque en utilisant le nom et le nom du fichier compressé.
Pour recréer la disquette, utilise 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
N’oublie pas de changer le nom du périphérique si le lecteur de disquettes n’est pas /dev/sdb.
Gérer les erreurs
Bon, nous sommes très occupés à imager nos disquettes et quelque chose comme ça arrive :
Il devrait afficher 720 enregistrements lus. Oups ! 104 ? Ce n’est pas tout à fait inattendu. Certaines de ces disquettes ont 30 ans. Alors, que faire maintenant ? J’ai essayé d’utiliser la commande fsck, mais je n’ai pas obtenu de très bons résultats. Heureusement, la commande dosfsck peut nous aider. Cette commande fait partie du paquet de dépôt dosfstools. S’il n’est pas déjà installé sur ton système, installe le paquet. Sur un système basé sur Debian comme Linux Mint, tu peux l’installer avec la commande :
sudo apt install dosfstools
Ta saveur peut varier.
Sors la commande comme suit :
sudo dosfsck -w -r -l -a -v -t /dev/sdb
Telle qu’elle est entrée, dosfsck tentera de réparer le disque en listant automatiquement les noms des fichiers au fur et à mesure qu’ils sont traités, marquera les clusters illisibles comme mauvais et écrira immédiatement les modifications sur le disque. Consulte la page de manuel pour plus d’informations. Pour notre disquette actuelle, nous obtenons le résultat suivant :
Cette disquette n’est pas vraiment utilisable. Trop de fichiers sont endommagés et contiennent des clusters illisibles. Les fichiers concernés devront être récupérés à partir d’une autre source. Souvent, les clusters illisibles se trouvent en dehors des clusters alloués de tous les fichiers. Le disque réparé peut ensuite être imagé. Relancer dosfsck montre qu’il a nettoyé la disquette du mieux qu’il pouvait :
Nous allons maintenant essayer de réimager la disquette :
Le disque entier peut être imagé. N’oublie pas que tous les fichiers dont les clusters étaient mauvais ne seront pas utilisables.
Utilisation des fichiers image
Pour utiliser le fichier image, commence par le décompresser.
Pour inspecter le fichier, monte-le sur le périphérique de bouclage :
sudo mount -o loop -t msdos ./test.img /mnt
En parcourant notre point de montage /mnt, nous pouvons voir les fichiers :
Le fichier .img peut aussi être utilisé comme une disquette virtuelle dans un lecteur virtuel défini sur l’ordinateur invité dans une VM VirtualBox. Le fichier image doit résider sur le disque dur de l’hôte.
Sélectionne l’entrée en surbrillance et navigue.
Conclusion
L’introduction de technologies plus récentes a peut-être rendu les disquettes moins utiles au fil des ans. Néanmoins, elles peuvent être irremplaçables lorsqu’il s’agit de machines virtuelles exécutant des programmes et des systèmes plus anciens. Les distributions Linux du 21e siècle comprennent encore beaucoup d’outils pour prendre en charge l’ancienne technologie, mais personne ne peut dire combien de temps cette technologie continuera d’être prise en charge.
Alors fais imager ces disquettes dès que tu peux, tu entends ? Je regrette toujours de ne pas avoir fait quelque chose de ces disquettes de 8 pouces !