David Madore's WebLog: Comment sauver le contenu de vieilles disquettes

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2006 [older| permalink|newer] / ↓Entrée #2006 [précédente| permalien|suivante] ↓

(mercredi)

Comment sauver le contenu de vieilles disquettes

Mon poussinet voulait lire des textes dont je lui avais parlé, que mon papa avait écrit quand j'avais dans les 12–14 ans (soit vers 1988–1990), les Life and Times of Altcee (mon père les écrivait pour se moquer de moi, j'en reparlerai dans une prochaine entrée [ajout : voir la suivante]). Problème : la seule copie de ces textes était, apparemment, sur une disquette 5¼″ de 360ko ; je pense que le fait qu'il n'y en ait pas eu d'autres copies est lié à un crash de disque dur que nous avons eu vers 1995, à une époque où les backups étaient rares et chers : déjà, c'est un peu un miracle que cette disquette ait survécu et qu'on ait pu la retrouver (sans parler du miracle que les données dessus n'aient pas été effacées par le passage de 22 années, mais je m'avance). La disquette étant rangée avec les archives de mon père, elle avait échappé à la grande séance de conversion de toutes mes disquettes en un seul CD (lui-même réarchivé depuis sur plusieurs disques durs) à laquelle je m'étais livré en 1999 quand je pressentais la disparition prochaine du format.

Mais alors essayez de trouver, de nos jours, un lecteur de disquettes 5¼″ : ce n'est pas une mince affaire. Déjà, un lecteur de 3½″ n'est pas évident, enfin, c'est encore vaguement faisable (quoique ce sera forcément un truc mal fabriqué qui va plutôt s'occuper de bouziller les supports que les lire), mais un 5¼″, c'est un peu comme chercher un grand-bi chez un marchand de vélos.

Mon poussinet en a emprunté un auprès d'un responsable informatique de la fac de Bordeaux (où il fait sa thèse). Un autre miracle en notre faveur est que les cartes mères même raisonnablement modernes continuent à fournir la connectique pour brancher un lecteur de disquettes, et heureusement cette connectique est formellement identique entre les lecteurs 5¼″ et les 3½″. Formellement, parce qu'en fait, même si la nappe est la même, la fiche n'est pas la même, et les nappes que j'avais n'avaient pas le connecteur pour les 5¼″. Bon, nous avons quand même trouvé, parmi nos amis, quelqu'un qui avait encore une nappe appropriée et un autre lecteur avec lequel tester en cas de problèmes avec le premier. Je passe sur une nouvelle difficultée due au fait que le câble ne se branchait pas bien dans la carte mère à cause d'un détrompeur trop proéminent.

Le BIOS des ordinateurs modernes, si tant est qu'il gère encore les lecteurs de disquettes, ne prévoit apparemment plus qu'on puisse y mettre un 5¼″. En tout cas, celui de mon poussinet n'offrait que deux options pour configurer le lecteur : 3½″ de 720ko ou bien 3½″ de 1440ko ; nous avons parié sur le fait que Linux arriverait quand même à faire quelque chose du lecteur, mais c'était loin d'être évident. Sur tous nos essais, il n'arrivait à lire que les premiers 4ko de données, c'est-à-dire un peu moins qu'une piste. Pour préciser les choses, les données sur une disquette sont organisées en cylindres concentriques, au nombre de 40 sur celles qui m'intéressent, chaque cylindre étant formé d'une piste sur chaque face de la disquette lorsque celle-ci est double-face, donc 80 pistes dans mon cas, et chaque piste étant divisée en un certain nombre de secteurs, ici 9, de 512 octets chacun : les 360ko de ma disquette sont donc 40×2×9×512 octets. Connaître cette géométrie était certainement un prérequis pour arriver à lire quoi que ce soit, mais quelle que fût la façon dont nous prétendions l'expliquer à Linux, il se limitait à lire les 8 premiers secteurs (sur 9, donc) de la première piste, et échouait avec des erreurs d'entrée/sortie sur tout le reste. Nous avons gardé espoir parce que ça semblait peu vraisemblable que toutes les disquettes de la boîte fussent abîmées exactement de la même façon, ou que les deux lecteurs eussent le meme défaut : et si le problème était logiciel, on devait pouvoir le contourner.

Finalement nous sommes tombés sur le programme fdrawcmd, qui permet d'envoyer des commandes bas niveau au lecteur de disquette : cet utilitaire prend beaucoup de paramètres incompréhensibles, et nous n'avons réussi à nous en servir qu'une fois tombés sur cette page qui nous a donné une clé qui nous manquait, à savoir que pour lire une disquette de 40 cylindres sur un lecteur en supportant 80, il faut demander de positionner la tête au cylindre numéro 2×i avant de lancer la lecture du cylindre numéro i. Si d'aventure ça pouvait servir, voici le script qui a fini par marcher :

#! /bin/sh
fdrawcmd drive=/dev/fd0 rate=1 readid 0 need_seek track=0
for i in `seq 0 39`; do
    fdrawcmd drive=/dev/fd0 seek 0 $((i*2))
    fdrawcmd drive=/dev/fd0 rate=1 read 0 $i 0 1 2 9 0x1b 0xff length=9216
done

Ceci étant fait, nous avons eu la bonne surprise de voir que toutes les disquettes étaient lisibles sans une erreur, malgré leur âge. Ensuite, je savais bien que Linux pouvait lire le système de fichiers du DOS, mais là où j'ai eu une nouvelle heureuse surprise c'est que LibreOffice savait lire le format WordPerfect5 de 1990 dans lequel le texte était écrit, y compris pour les notes en bas de page et quelques autres fioritures.

Toujours est-il que le fichier altcee.wp5 est maintenant parmi mes fichiers celui à la date de modification la plus ancienne ( : en termes informatiques, ce n'est pas tout à fait de la paléontologie, mais c'est au moins de l'archéologie).

↑Entry #2006 [older| permalink|newer] / ↑Entrée #2006 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]