- El driver ftape es el único driver de kernel open source de Linux capaz de recuperar datos de cintas de respaldo (QIC-80) de los años 90
- Sin embargo, este driver dejó de mantenerse después del año 2000, por lo que solo podía usarse en entornos Linux antiguos
- Con Claude Code, se refactorizó el código fuente antiguo para adaptarlo al kernel de Linux moderno y se convirtió con éxito en un módulo de kernel independiente
- Durante el proceso, Claude convirtió automáticamente funciones y estructuras obsoletas a la API moderna, mientras el usuario analizaba manualmente los resultados para corregir algunos errores de configuración
- A partir de esta experiencia usando un agente de programación con IA, se obtuvieron ideas sobre cómo amplificar la capacidad del programador y hacer onboarding rápidamente en nuevas tecnologías y frameworks
Contexto: recuperación de cintas de respaldo antiguas y el driver ftape
- Recuperar datos de cartuchos de cinta como QIC-80 es uno de los pasatiempos del autor
- Estas cintas suelen requerir unidades de cinta especiales conectadas al controlador de disquete
- Estas unidades se usaban principalmente en los años 90 por pequeños negocios o usuarios particulares para respaldos
- Este enfoque, basado en el controlador de disquete, permitía una implementación barata sin un adaptador SCSI dedicado, pero tenía varias desventajas como la limitación de velocidad (500 Kbps) y un protocolo no estándar
- Para comunicarse con este hardware de cinta, en Linux es indispensable el driver de kernel ftape
- Como solo ftape puede leer los datos binarios crudos puros, es imprescindible para la recuperación
- Pero el driver ftape dejó de mantenerse desde alrededor del año 2000, así que no podía usarse en kernels modernos de Linux
- Por eso, cada vez que se quería recuperar datos, había que arrancar manualmente una distribución Linux antigua (como CentOS 3.5)
Comienza la modernización del driver de kernel con Claude Code
- Se le pidió a Claude Code, junto con una explicación del repositorio, que modernizara el driver para que pudiera compilarse en kernels actuales
- Claude identificó y reemplazó funciones y estructuras obsoletas para ajustarlas a la API y la arquitectura actuales del kernel
- Tras varias rondas de feedback y correcciones manuales, se completó un driver que compilaba sin errores
- Al principio, el código solo podía compilarse dentro del árbol completo del código fuente del kernel, pero con una solicitud adicional generó automáticamente un sistema de compilación para módulo externo e independiente
- Gracias a eso, fue posible crear por separado un módulo de kernel en formato
.ko y comenzar las pruebas con hardware real
Proceso de resolución de problemas
- El módulo de kernel se cargó correctamente, pero aparecieron problemas de detección y comunicación con la unidad
- Como eran tareas que requerían permisos de
sudo, Claude no podía ejecutarlas repetidamente por sí mismo, así que se le compartieron manualmente los logs de dmesg para rastrear el problema
- Comparando los logs con casos previos exitosos, Claude detectó un bug relacionado con la falta de configuración del puerto I/O predeterminado y con la inicialización de parámetros
- El valor por defecto pasó de
-1 a 0xffff, lo que impedía la detección; al restablecer la dirección correcta, el problema se resolvió
- Finalmente, el módulo se cargó correctamente y se logró volcar los datos de una cinta de prueba
Qué deja esta experiencia de colaboración con un agente de programación con IA
- La interacción con Claude Code se sintió como "colaborar con un desarrollador junior", parecida a trabajar con un ingeniero real
- El usuario igual tuvo que liderar activamente las decisiones de arquitectura, la detección de problemas y la dirección del trabajo
- Cuanto más específicos y orientados al dominio sean los keywords y pedidos, más efectivo resulta
- La productividad de un agente de IA aumenta drásticamente cuando recibe el tipo de tarea adecuado, por lo que hace falta criterio para entender sus límites y fortalezas
- La IA logró multiplicar la capacidad del autor. Un trabajo que a mano habría tomado semanas se completó en pocos días solo con conversaciones cotidianas y feedback
- En el proceso también se aprendieron habilidades realmente útiles, como prácticas modernas de desarrollo de kernel, arquitectura x86 y nuevas herramientas de línea de comandos
- Se enfatiza que también acelera mucho el onboarding y la adaptación inicial a nuevos frameworks (como Rust o Flutter)
Conclusión: ftape vuelve a la vida
- Después de 25 años, ftape vuelve a poder compilarse y usarse en Linux moderno
- El autor sigue haciendo mejoras adicionales y pruebas, y además de unidades basadas en disquete, confirmó soporte para dispositivos basados en puerto paralelo
- El hardware físico sigue siendo casi el mismo que antes, pero el sistema operativo cambió de CentOS 3.5 a Xubuntu 24.04
Referencia
- El código fuente del proyecto ftape está disponible en GitHub
- En el blog personal del autor también puede verse la lista de equipos de su colección
Aún no hay comentarios.