- Der ftape-Treiber ist der einzige Linux-Open-Source-Kernel-Treiber, mit dem sich Daten von Backup-Bändern aus den 1990er-Jahren (QIC-80) wiederherstellen lassen.
- Allerdings wurde der Treiber seit etwa 2000 nicht mehr gewartet und ließ sich daher nur noch in alten Linux-Umgebungen verwenden.
- Mithilfe von Claude Code wurde der alte Quellcode so refaktoriert, dass er zum aktuellen Linux-Kernel passt, und erfolgreich in ein eigenständiges Kernel-Modul umgewandelt.
- Dabei wandelte Claude automatisch veraltete Funktionen und Strukturen in moderne APIs um, während der Nutzer die Ausgaben manuell analysierte und einige Konfigurationsfehler korrigierte.
- Die Arbeit mit dem AI-Coding-Agenten lieferte Einblicke in die Verstärkung der Fähigkeiten von Programmierern und darin, wie man sich schnell in neue Technologien und Frameworks einarbeitet.
Hintergrund: Wiederherstellung alter Backup-Bänder und der ftape-Treiber
- Das Wiederherstellen von Daten aus Bandkassetten wie QIC-80 ist eines der Hobbys des Autors.
- Für diese Bänder wird meist ein spezielles Bandlaufwerk benötigt, das an einen Floppy-Controller angeschlossen ist.
- Solche Laufwerke wurden in den 1990er-Jahren vor allem von kleinen Unternehmen oder Privatpersonen für Backups verwendet.
- Die Nutzung des Floppy-Controllers war eine günstige Lösung ohne separaten SCSI-Adapter, hatte aber mehrere Nachteile wie Geschwindigkeitsbegrenzungen (500 Kbps) und ein nicht standardisiertes Protokoll.
- Um mit diesen Bandgeräten zu kommunizieren, ist unter Linux der ftape-Kernel-Treiber unverzichtbar.
- Nur mit ftape lassen sich die reinen rohen Binärdaten lesen, was für die Wiederherstellung zwingend erforderlich ist.
- Da der ftape-Treiber jedoch seit etwa 2000 nicht mehr gepflegt wurde, ließ er sich auf modernen Linux-Kernels nicht mehr verwenden.
- Daher musste zum Wiederherstellen der Daten jedes Mal ein veraltetes Linux-System (z. B. CentOS 3.5) direkt gebootet werden.
Beginn der Modernisierung des Kernel-Treibers mit Claude Code
- Claude Code wurde zusammen mit einer Beschreibung des Repositorys gebeten, den Treiber so zu modernisieren, dass er auf aktuellen Kernels gebaut werden kann.
- Claude identifizierte und ersetzte veraltete Funktionen und Strukturen passend zu den aktuellen Kernel-APIs und -Strukturen.
- Nach mehreren Feedback-Runden und manuellen Korrekturen entstand Treibercode, der fehlerfrei kompiliert.
- Der ursprüngliche Code ließ sich anfangs nur innerhalb des gesamten Kernel-Source-Trees bauen, doch auf zusätzliche Anfrage wurde automatisch ein eigenständiges Build-System für externe Module erzeugt.
- Dadurch konnte das Kernel-Modul separat als
.ko-Datei gebaut werden, woraufhin die Tests mit angeschlossener echter Hardware begannen.
Der Weg zur Problemlösung
- Das Kernel-Modul wurde zwar korrekt geladen, doch es traten Probleme bei Laufwerkserkennung und Kommunikation auf.
- Da für die Arbeiten
sudo-Rechte nötig waren, konnte Claude die wiederholte Ausführung nicht selbst übernehmen; stattdessen wurden dmesg-Logs manuell weitergegeben, um die Ursache nachzuverfolgen.
- Durch den Vergleich der Logs mit früheren erfolgreichen Fällen fand Claude Fehler bei einer nicht gesetzten Standard-I/O-Port-Adresse sowie bei der Initialisierung von Parametern.
- Ein Standardwert wurde von -1 in 0xffff umgewandelt, wodurch die Erkennung scheiterte; nach dem Zurücksetzen auf die korrekte Adresse war das Problem behoben.
- Am Ende wurde das Modul korrekt geladen, und ein Daten-Dump von einem Testband gelang erfolgreich.
Erkenntnisse aus der Zusammenarbeit mit einem AI-Coding-Agenten
- Die Interaktion mit Claude Code fühlte sich an wie die „Zusammenarbeit mit einem Junior-Entwickler“ und damit wie echte Arbeit mit einem Ingenieur.
- Der Nutzer muss Architekturentscheidungen, Problemerkennung und die Richtung weiterhin selbst aktiv vorgeben.
- Je konkreter die Anfrage und je stärker sie domänenspezifische Schlüsselwörter enthält, desto wirksamer ist der Einsatz.
- Die Produktivität eines AI-Agenten steigt stark an, wenn er Aufgaben des passenden Typs erhält; dafür braucht es ein Gefühl für Grenzen und Stärken.
- Die eigene Leistungsfähigkeit wurde durch die AI vervielfacht. Eine Aufgabe, die manuell mehrere Wochen gedauert hätte, konnte mit alltäglichen Gesprächen und Feedback in wenigen Tagen abgeschlossen werden.
- Dabei wurden auch praktisch nützliche Fähigkeiten wie moderne Praktiken der Kernel-Entwicklung, x86-Architektur und neue Command-Line-Tools gelernt.
- Besonders hervorgehoben wird, dass sich die erste Einarbeitung und Anpassung an neue Frameworks (Rust, Flutter usw.) dadurch massiv beschleunigen lässt.
Fazit: ftape lebt wieder
- Nach 25 Jahren lässt sich ftape wieder unter aktuellem Linux bauen und verwenden.
- Der Autor arbeitet weiter an zusätzlichen Verbesserungen und Tests und hat neben Floppy-basierten Laufwerken auch Unterstützung für parallelportbasierte Geräte bestätigt.
- Die physische Hardware ist nahezu dieselbe wie früher, doch das Betriebssystem hat sich von CentOS 3.5 zu Xubuntu 24.04 gewandelt.
Referenz
- Der Quellcode des ftape-Projekts ist auf GitHub veröffentlicht.
- Weitere Informationen, etwa zur Liste der gesammelten Geräte des Autors, finden sich im persönlichen Blog.
Noch keine Kommentare.