Dmitry Brant von der Organisation Wikimedia stellte den Port des ftape-Treibers für moderne Linux-Kernel vor. Der Treiber wurde 2000 nicht mehr aktualisiert und wurde aufgrund von Problemen bei der Nutzung auf Mehrkernsystemen im Jahr 2006 aus dem Kernel 2.6.20 entfernt. Um die Möglichkeit zur Kompilierung und zum Betrieb des Treibers in Distributionen mit modernen Linux-Kernen wiederherzustellen, war eine Überarbeitung unter Berücksichtigung der Änderungen in den internen APIs und Subsystemen des Kernels, die in den letzten 20 Jahren stattgefunden haben, erforderlich.
Das Portieren ist bemerkenswert, da es fast vollständig mit Hilfe des KI-Assistenten Claude Code durchgeführt wurde. Am Ende wurde ein vollständig funktionierender Treiber geschaffen, der sich auf Systemen mit Kernen 6.8 und neuer zusammenstellen und betreiben lässt. Das Portieren erfolgte in drei Phasen. In der ersten Phase bestand das Ziel des KI-Assistenten darin, den Treiber-Code, der nur mit Kernen 2.4 kompiliert werden konnte, so zu modifizieren, dass er mit den neuen Kernel-Versionen zusammengebaut werden konnte. Die KI ersetzte erfolgreich die Verweise im Treiber auf veraltete Kernel-Funktionen durch aktuelle Aufrufe, passte die Verwendung von Datenstrukturen an und beseitigte alle Fehler, die bei der Kompilierung auftraten.
In der zweiten Phase wurde die Aufgabe gestellt, den Treiber von seiner kompilierbaren Form im Kernel in eine Version zu transformieren, die als ladbares Kernelmodul arbeiten kann. Der KI-Assistent bereitete das ladbare Modul vor. In der dritten Phase wurde durch die Übergabe der dmesg-Ausgabe mit Informationen über Fehler und Probleme, die während des Betriebs auftraten, sowie von Referenz-dmesg-Nachrichten des funktionierenden alten Treibers, der Port in einen betriebsbereiten Zustand versetzt, der in der Lage ist, das Vorhandensein des Bandlaufwerks zu erkennen und den Inhalt der Kassetten abzurufen.
Die Arbeit, die zunächst als schwierig und als nécessitant mehrere Wochen Dokumentationsstudium erschien, konnte in nur zwei Abenden abgeschlossen werden. Für die Erstellung des Arbeitsmoduls waren drei Anfragen, mehrere Diskussionen und ein paar manuelle Codeanpassungen erforderlich. Dabei weist Dmitrij darauf hin, dass man AI-Assistenten, die lediglich Werkzeuge sind, die ein sinnvolles Interagieren erfordern, nicht überschätzen sollte. Dmitrij kennt die Programmiersprache C und hat ein Verständnis für die Kernmodule, ist jedoch der Meinung, dass es unmöglich wäre, den AI-Assistenten ohne Kenntnisse über den internen Aufbau der Kernmodule in die richtige Richtung zu lenken.
Bei der Formulierung der Aufgabe ist es wichtig, die Spezifika zu kennen und eine Fachterminologie zu verwenden, während man das Gerüst der zu realisierenden Funktion klar formuliert und die Lücken im Gerüst definiert, die der AI gefüllt werden müssen. Zudem ist es notwendig, die Stärken und Schwächen der AI-Assistenten zu studieren, um ihnen keine Aufgaben zu geben, die sie nicht gut bewältigen können. Um ein Ergebnis zu erzielen, empfiehlt Dmitrij, den AI-Assistenten als Verstärker der eigenen Fähigkeiten zu betrachten und die Kommunikation mit ihm als Zusammenarbeit mit einem untergeordneten Ingenieur, der alles genau nach Anweisung macht, bestrebt ist zu gefallen, selbstbewusst, aber bereit, Fehler zuzugeben. Die Entscheidungsfindung, das Setzen von Regeln und die Verantwortung für das Ergebnis liegen weiterhin beim Menschen.
Der ftape-Treiber ist für die Arbeit mit Bandlaufwerken gedacht, die QIC-Kassetten verwenden, in denen ein eigenes proprietäres Format zur Kodierung und Komprimierung von Informationen verwendet wird. Solche Geräte wurden häufig in den 1990er Jahren für Backups verwendet. Die vom Treiber unterstützten Bandlaufwerke benötigten keinen teuren SCSI-Controller und konnten an einen typischen Floppy-Disk-Controller (z. B. Colorado Jumbo 250 und Ditto Max) oder einen parallelen Port (Trakker, Iomega Ditto) angeschlossen werden.
Ftape war der einzige Treiber, der in der Lage war, Dumps von Kassetten im Raw-Modus zu extrahieren, was es zunächst ermöglichte, einen vollständigen Dump zu laden und sich dann mit der Dekodierung des Formats und der Extraktion von Dateien zu befassen. Dabei erinnerte die Verbindung des Speichermediums über den Floppy-Controller an einen Hack, da der Treiber den Controller, der nur für die Zusammenarbeit mit Floppy-Disketten ausgelegt war, "überlisten" musste, um Befehle zu übertragen und die Interaktion mit dem Bandlaufwerk zu organisieren.
Früher musste Dmitry einen separaten Computer mit CentOS 3.5 und Kernel 2.4.21 verwenden, um Informationen von Bandkassetten zu extrahieren. Nach dem Portieren des Treibers wurde es möglich, Archive auf PCs mit modernen Linux-Distributionen wie Ubuntu 24.04 zu extrahieren. Es werden 32- und 64-Bit-Versionen unterstützt, aber für die Arbeit mit Geräten, die an den Floppy-Controller angeschlossen sind, ist ein Motherboard mit einem ähnlichen Controller erforderlich.
Die Anwendungsbereiche des Treibers umfassen die Wiederherstellung von Informationen von alten Bandkassetten und die Verwendung in Projekten zur Rekonstruktion von Retro-Computern. Zukünftig wird auf Basis des Treibers ein Toolset für die niedrigstufige Datenauslese von fehlerhaften Bandlaufwerken vorbereitet, das Raw-Dumps zur Wiederherstellung von Informationen verwendet, unabhängig vom Zustand der Partitionstabellen oder dem Vorhandensein von Fehlerkorrekturproblemen.
Quelle: opennet.ru
