Moderniser un pilote de noyau vieux de 25 ans avec Claude Code
(dmitrybrant.com)- 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
- Il est ainsi devenu possible de produire séparément un module noyau au format
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 journauxdmesgpour remonter à la source du problème
- Comme ces opérations nécessitaient les droits
- 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
1 commentaires
Commentaires sur Hacker News
J’ai chargé le module moi-même et copié-collé manuellement à plusieurs reprises la sortie de
dmesgdans ClaudeL’une des principales raisons pour lesquelles j’utilise surtout Claude, c’est qu’il peut lancer des processus de longue durée, lire leur sortie et aider au débogage
Il y avait plusieurs façons de contourner cette étape manuelle — par exemple, envoyer
dmesgvers un port UDP local et faire démarrer un listener par ClaudeJe pense que c’est un bon exemple
À mon avis, on obtient deux effets principaux avec ce genre d’outil
D’abord, dans les frameworks que je connais déjà bien, Claude repère rapidement les motifs répétitifs, ce qui fait exploser ma productivité
Ensuite, même pour apprendre un nouveau framework, l’onboarding va beaucoup plus vite — c’est particulièrement utile dans les grandes entreprises qui utilisent des stacks variées
Pour bien comprendre les capacités de l’IA, il faut consacrer un temps important aux technologies et frameworks qui évoluent rapidement
Si vous n’avez pas utilisé Claude Code ou Claude 4.0 pendant plus de 100 heures, vous ne mesurez peut-être pas encore vraiment son potentiel
Le scénario du « non-développeur qui code au feeling et finit dans les ennuis » est sans doute courant sur X (ex-Twitter), mais pour un développeur expérimenté qui y consacre du temps régulièrement, l’expérience est totalement différente
C’est précisément le point essentiel
J’utilise Claude Code tous les jours, sans exception, comme outil principal pour modifier des bases de code existantes
À force d’essais et d’erreurs, j’ai construit mon propre processus, et cela a fortement augmenté à la fois ma productivité et mon envie de tenter de grosses expérimentations
J’apprécie particulièrement le fait que, lorsque j’ai déjà conçu en amont les structures de données, les schémas et les API internes, Claude Code arrive souvent à produire presque du premier coup une bonne UI pour des outils internes
Le fait de pouvoir me libérer du travail répétitif et de la complexité des frameworks pour me concentrer sur une réflexion plus abstraite a été un vrai tournant dans mes 16 ans de carrière
Exactement
En pratique, l’auteur a demandé à Claude de porter un pilote Linux 2.4 vers la version 6.8
Comme il existe suffisamment d’informations pertinentes en ligne, Claude a pu faire l’essentiel du travail, et l’expertise de l’auteur n’a été nécessaire que sur les parties vraiment complexes et critiques
L’idée d’« utiliser l’IA comme un outil qui amplifie massivement ses compétences » résonne vraiment ici
Si vos compétences de départ valent 0, alors même multipliées par l’IA, on reste proche de 0, voire on tombe en productivité négative
Dans notre équipe aussi, certains tentent avec audace de nouveaux domaines via les LLM, mais même quand on met Claude 4 thinking agent à la disposition de tout le monde, on obtient souvent énormément de code absurde
Si l’on a passé l’essentiel de sa carrière de développeur à faire de la reconnaissance de motifs, les agents LLM ne font en quelque sorte que rajouter une couche supplémentaire de reconnaissance de motifs ; pour les membres de l’équipe qui n’ont pas ce vécu, cela devient au contraire pénible à gérer
Les agents LLM font beaucoup plus vite le pattern matching qu’un humain peut faire, mais de manière générale ils ne me semblent pas particulièrement supérieurs aux humains
Ce n’est pas seulement utile pour explorer un nouveau framework, mais aussi un nouveau langage
Notre équipe utilise Ruby, et comme Ruby est facile à lire, je peux demander au LLM d’écrire du code sans même apprendre formellement la syntaxe, puis me contenter de prendre les décisions moi-même
Même sans connaître Ruby, cela permet d’écrire immédiatement du code à un niveau acceptable pour l’équipe et d’être productif tout de suite dans un environnement inconnu
(À noter : les autres membres de l’équipe relisent les Pull Requests)
L’expression « un outil qui amplifie massivement ses compétences » m’a vraiment frappé cette semaine, en répétant dix fois la création d’un petit projet
La vraie valeur apparaît quand je prends les productions brouillonnes générées par l’IA et que je les unifie proprement, avec des consignes, côté markup, styles, JS, etc.
Dans un environnement comme une startup, où les conventions de code sont faibles, il est difficile d’appliquer ce type de demande par pattern matching, mais j’imagine que dans une base de code puissante et mature, l’effet est tout autre
Je pense qu’il faut rédiger ses prompts avec un maximum de précision, en utilisant des mots-clés très spécifiques au domaine
Si l’on manque de compréhension technique d’un langage ou d’un framework donné, de l’ambiguïté s’installe dans le prompt, et le LLM comble alors arbitrairement les trous, ce qui produit facilement un résultat différent de l’intention
C’est précisément cette ambiguïté qui devient la source des bugs
C’est l’envers de « l’amplification massive »
En lisant ce genre d’article, je me dis qu’avant l’arrivée des LLM, il y avait bien moins de travail effectivement réalisé que ce que la demande laissait penser
Je pense toujours que le véritable goulot d’étranglement n’est pas l’exécution, mais les idées qui ont une valeur de marché
Il n’y a pas tant de choses pour lesquelles les gens veulent réellement payer
Le problème n’est pas toujours le manque de travail, mais le manque de personnes ayant les compétences et l’expérience préalables nécessaires pour le faire
Sans expérience en développement kernel, même avec de très bons prompts, il serait difficile d’obtenir un résultat comme celui de l’auteur
En théorie, on pourrait croire que la puissance des LLM permettra de « moderniser » tous les vieux pilotes vers les kernels récents, mais en pratique cela nécessite impérativement une supervision humaine par des personnes expérimentées, et ces experts sont bien trop peu nombreux par rapport au nombre de pilotes à maintenir
Alan Kay et Joe Armstrong ont une bonne discussion et interview où ils évoquent les problèmes liés au fait que la plupart des logiciels ne sont pas développés de façon à pouvoir simplement changer de cible et recompiler en l’absence de spécifications
Si une spécification formelle existait en dehors du code, porter un pilote vers une nouvelle cible kernel reviendrait plus facilement à « recompiler la spécification »
Mais aujourd’hui, on part non pas d’une spécification, mais de l’ancien code ; dans le passage d’un ancien code vers un code moderne, le LLM ne fait que du pattern matching sur du code similaire, sans réellement comprendre ni garantir le sens — c’est pourquoi la compétence humaine reste indispensable
J’avais le pressentiment que l’IA allait abaisser la barrière d’entrée du kernel hacking
Et j’ai l’impression, à chaque fois, que cela se confirme
On pourrait bientôt voir un support beaucoup plus large du matériel embedded/ARM, et peut-être même de nouveaux OS légers pour appareils intelligents
Mais la plupart des gens lui demandent de « construire toute la maison », alors qu’il est bien plus efficace de l’utiliser comme un outil qui « aide à manier le marteau »
Je trouve que c’est un bon exemple de développeur qui comprend bien le rôle et les limites de l’IA et l’utilise de manière appropriée
J’ai notamment été impressionné par le fait que, par esprit critique, il ait choisi de faire du pilote un module séparé
Je voudrais souligner un « indice majeur » que personne d’autre n’a mentionné
L’auteur dit explicitement : « j’ai un peu d’expérience avec les modules kernel et je maîtrise bien le C, donc il ne faut pas exagérer les résultats de Claude »
Autrement dit, le module kernel n’a pas vraiment été terminé en seulement trois questions ; il y a eu de nombreux allers-retours dans la conversation et plusieurs corrections manuelles du code
Il explique qu’il aurait été impossible de le moderniser sans comprendre la structure interne de base d’un module kernel — c’est un contexte qu’il faut absolument garder en tête, quel que soit l’outil de génération de code utilisé
Il écrit aussi que collaborer avec Claude Code ressemble à « travailler avec un ingénieur junior », mais que son côté prêt à tout faire, puis à s’excuser et à flatter dès qu’on lui signale une erreur, donne plus une impression de complaisance que de véritable ingénierie
Enfin, lorsque l’auteur dit que « s’il l’avait vraiment voulu, il aurait pu faire ce travail seul, mais qu’il aurait dû réapprendre la manière de développer pour le kernel d’il y a 25 ans », cela rappelle que
l’essence même du travail de modernisation consiste à « comprendre précisément la solution legacy et identifier ce qu’il faut réellement faire »
Je trouve aussi intéressant que le fait de pouvoir sauter cet apprentissage soit présenté comme un avantage
Je trouve très utile qu’un agent m’explique un projet que je ne connais pas
Récemment, j’ai cloné les sources de Firefox et utilisé qwen-code pour lui demander quelles étaient les fonctionnalités IA de Firefox et comment elles étaient implémentées, et j’ai vraiment appris des choses formidables
La manière d’apprendre est devenue bien plus intéressante
Je pense que c’est un changement qui donne plus de pouvoir aux gens
L’auteur mène des side projects avec passion depuis longtemps, et une amélioration des outils est vraiment une bonne chose
Cela dit, quand le domaine est trop étroit, le support de la communauté peut manquer ; dans ce cas, les LLM peuvent aider à résoudre des problèmes très spécifiques et sur mesure
Les barrières d’entrée s’abaissent progressivement, et on va entrer dans une époque où même des personnes avec peu de bagage technique pourront résoudre elles-mêmes des problèmes particuliers plus simples
C’est une évolution positive qui permet à davantage de gens de se lancer
Je me demande comment les performances ont changé après la mise à niveau