- O driver ftape é o único driver de kernel open source para Linux capaz de recuperar dados de fitas de backup (QIC-80) dos anos 1990
- Porém, esse driver não recebia manutenção desde depois de 2000, então só podia ser usado em ambientes Linux antigos
- Com o Claude Code, o autor refatorou o código-fonte legado para adequá-lo ao kernel Linux atual e o converteu com sucesso em um módulo de kernel independente
- No processo, o Claude converteu automaticamente funções e estruturas obsoletas para APIs modernas, enquanto o usuário analisou manualmente a saída para corrigir alguns erros de configuração
- A experiência de usar um agente de programação com IA trouxe insights sobre amplificação da capacidade do programador e sobre como fazer onboarding mais rápido em novas tecnologias e frameworks
Contexto: recuperação de fitas de backup antigas e o driver ftape
- Recuperar dados de cartuchos de fita como QIC-80 é um dos hobbies do autor
- Essas fitas normalmente exigem um drive de fita especial conectado ao controlador de disquete
- Esses drives eram usados principalmente nos anos 1990 por pequenas empresas ou usuários individuais para backup
- Usar o controlador de disquete permitia uma implementação barata sem adaptador SCSI dedicado, mas havia várias desvantagens, como limite de velocidade (500 Kbps) e um protocolo não padronizado
- Para se comunicar com esse dispositivo de fita, no Linux o driver de kernel ftape é indispensável
- Como apenas o ftape consegue ler os dados binários brutos puros, ele é essencial para a recuperação
- Porém, o driver ftape não recebia manutenção desde por volta de 2000, e por isso não podia ser usado em kernels Linux modernos
- Assim, sempre que precisava recuperar dados, o autor tinha de inicializar manualmente um Linux antigo, como o CentOS 3.5
Começando a modernização do driver de kernel com Claude Code
- O autor pediu ao Claude Code, junto com a descrição do repositório, para modernizar o driver para que ele pudesse ser compilado em kernels atuais
- O Claude identificou e substituiu funções e estruturas obsoletas de acordo com a API e a estrutura atuais do kernel
- Após várias rodadas de feedback e ajustes manuais, o código do driver passou a compilar sem erros
- O código inicial só podia ser compilado dentro da árvore completa de código-fonte do kernel, mas, após um pedido adicional, o Claude também gerou automaticamente um sistema de build para módulo externo independente
- Com isso, tornou-se possível criar separadamente o módulo de kernel em arquivo
.ko, iniciando os testes com o hardware real conectado
Processo de resolução de problemas
- O módulo de kernel era carregado corretamente, mas surgiram problemas de detecção e comunicação com o drive
- Como as tarefas exigiam privilégios sudo, o Claude não podia executar os testes repetidamente por conta própria, então o autor forneceu manualmente os logs do
dmesg para rastrear o problema
- Ao comparar os logs com casos anteriores bem-sucedidos, o Claude encontrou um bug relacionado à falta de configuração do endereço padrão da porta de I/O e à inicialização de parâmetros
- O valor padrão foi convertido de -1 para
0xffff, causando falha na detecção; redefinir o endereço corretamente resolveu o problema
- No fim, o módulo passou a ser carregado corretamente e foi bem-sucedido o dump de dados de uma fita de teste
O que a experiência mostra sobre colaboração com agentes de programação com IA
- A interação com o Claude Code pareceu "uma colaboração com um desenvolvedor júnior", dando a sensação de trabalhar com um engenheiro real
- O usuário ainda precisa liderar ativamente decisões de arquitetura, descoberta de problemas e direcionamento
- Quanto mais palavras-chave específicas do domínio e solicitações concretas forem usadas, melhores os resultados
- A produtividade do agente de IA aumenta muito quando ele recebe o tipo certo de tarefa, então é importante ter noção de suas limitações e pontos fortes
- A IA dobrou a capacidade do autor. Um trabalho que manualmente levaria semanas foi concluído em poucos dias apenas com conversas e feedback rotineiros
- Nesse processo, ele também aprendeu habilidades realmente úteis, como práticas modernas de desenvolvimento de kernel, arquitetura x86 e novas ferramentas de linha de comando
- O autor destaca que isso acelera muito o onboarding e a adaptação inicial a novos frameworks, como Rust e Flutter
Conclusão: ftape volta à vida
- Depois de 25 anos, o ftape voltou a poder ser compilado e usado em versões modernas do Linux
- O autor continua trabalhando em melhorias adicionais e testes, e também confirmou suporte a dispositivos baseados em porta paralela, além dos drives baseados em disquete
- O hardware físico continua praticamente o mesmo de antes, mas o sistema operacional mudou de CentOS 3.5 para Xubuntu 24.04
Referência
- O código-fonte do projeto ftape está disponível no GitHub
- A lista de equipamentos de coleção do autor e outros detalhes podem ser vistos em seu blog pessoal
Ainda não há comentários.