15 points par GN⁺ 2025-09-08 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Le pilote ftape est le seul pilote de noyau Linux open source permettant de récupérer des données depuis des bandes de sauvegarde (QIC-80) des années 1990
  • Mais ce pilote n’était plus maintenu depuis après 2000, et ne pouvait donc être utilisé que dans d’anciens environnements Linux
  • À l’aide de Claude Code, l’ancien code source a été refactorisé pour l’adapter au noyau Linux moderne, puis converti avec succès en module de noyau autonome
  • Au cours du processus, Claude a automatiquement remplacé des fonctions et structures obsolètes par des API modernes, tandis que l’utilisateur analysait manuellement les sorties pour corriger certaines erreurs de configuration
  • Cette expérience d’utilisation d’un agent de code IA a permis de tirer des enseignements sur l’amplification des capacités du programmeur et sur la manière de s’intégrer rapidement à de nouvelles technologies et frameworks

Contexte : récupération d’anciennes bandes de sauvegarde et pilote ftape

  • Récupérer des données depuis des cartouches de bande comme les QIC-80 fait partie des loisirs de l’auteur
  • Ces bandes nécessitent le plus souvent un lecteur de bande spécialisé connecté au contrôleur de disquette
    • Ces lecteurs étaient principalement utilisés dans les années 1990 par de petites entreprises ou des particuliers pour les sauvegardes
    • Cette approche via le contrôleur de disquette permettait une implémentation peu coûteuse sans adaptateur SCSI dédié, mais présentait plusieurs inconvénients, dont une limitation de débit (500 Kbps) et un protocole non standard
  • Pour communiquer avec ces périphériques sous Linux, le pilote de noyau ftape est indispensable
    • Comme seul ftape permet de lire les données binaires brutes pures, il est essentiel pour la récupération
  • Cependant, le pilote ftape n’était plus maintenu depuis les environs de l’an 2000, et ne pouvait donc pas être utilisé sur les noyaux Linux récents
    • Il fallait donc démarrer manuellement un ancien Linux (comme CentOS 3.5) à chaque tentative de récupération de données

Début de la modernisation du pilote de noyau avec Claude Code

  • L’auteur a demandé à Claude Code, avec une description du dépôt, de « moderniser le pilote pour qu’il puisse être compilé sur un noyau récent »
  • Claude a identifié et remplacé les fonctions et structures obsolètes pour les aligner sur les API et structures actuelles du noyau
    • Après plusieurs itérations de feedback et quelques ajustements manuels, le code du pilote a fini par compiler sans erreur
  • Le code initial ne pouvait être compilé qu’à l’intérieur de l’arborescence complète des sources du noyau, mais une demande supplémentaire a permis de générer automatiquement un système de build externe pour module autonome
    • Il est ainsi devenu possible de produire séparément un module noyau au format .ko, ouvrant la voie aux tests sur le matériel réel

Résolution des problèmes

  • Le module de noyau se chargeait correctement, mais des problèmes de détection du lecteur et de communication sont apparus
    • Comme ces opérations nécessitaient les droits sudo, Claude ne pouvait pas exécuter directement les tests en boucle ; l’auteur lui transmettait donc manuellement les journaux dmesg pour remonter à la source du problème
  • En comparant les logs avec des cas antérieurs ayant fonctionné, Claude a découvert un bug lié à l’absence d’adresse de port d’E/S par défaut et à l’initialisation des paramètres
    • La valeur par défaut avait été convertie de -1 à 0xffff, ce qui empêchait la détection ; le problème a été résolu en rétablissant la bonne adresse
  • Au final, le module s’est chargé correctement et le dump des données d’une bande de test a réussi

Ce que révèle l’expérience de collaboration avec un agent de code IA

  • L’interaction avec Claude Code ressemble à une « collaboration avec un développeur junior », avec une impression proche du travail avec un véritable ingénieur
    • L’utilisateur doit rester moteur sur les choix d’architecture, l’identification des problèmes et la direction à suivre
  • Plus les mots-clés spécifiques au domaine et les demandes sont précis, plus l’outil est efficace
  • La productivité d’un agent IA augmente fortement lorsqu’on lui confie le bon type de tâches ; il faut donc bien comprendre ses limites et ses points forts
  • L’IA a effectivement multiplié les capacités de l’auteur. Une tâche qui aurait pris plusieurs semaines à la main a été accomplie en quelques jours par de simples échanges et retours réguliers
    • Au passage, l’auteur a aussi appris des compétences réellement utiles, comme les pratiques modernes de développement noyau, l’architecture x86 ou de nouveaux outils en ligne de commande
  • L’auteur souligne aussi que cela accélère fortement la phase initiale d’onboarding et d’adaptation à de nouveaux frameworks (Rust, Flutter, etc.)

Conclusion : ftape renaît

  • Après 25 ans, ftape peut de nouveau être compilé et utilisé sur un Linux moderne
  • L’auteur poursuit les améliorations fonctionnelles et les tests, et a confirmé la prise en charge non seulement des lecteurs à base de disquette, mais aussi des périphériques à port parallèle
  • Le matériel physique est presque le même qu’autrefois, mais le système d’exploitation est passé de CentOS 3.5 à Xubuntu 24.04

Référence

  • Le code source du projet ftape est disponible sur GitHub
  • La liste du matériel de collection de l’auteur peut aussi être consultée sur son blog personnel

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.