Claude Code로 25년 된 Linux 커널 드라이버 현대화하기
Using Claude Code to modernize a 25-year-old kernel driver
TL;DR Highlight
QIC-80 테이프 드라이브용 레거시 커널 드라이버(ftape)를 Claude Code로 최신 Linux 커널에서 컴파일되도록 포팅한 실전 사례. 도메인 전문성과 AI 코딩 도구를 결합했을 때의 생산성을 보여준다.
Who Should Read
레거시 코드 마이그레이션이나 커널/드라이버 수준의 저수준 코드를 다루는 개발자, 또는 AI 코딩 도구를 실무에 어떻게 활용할지 감을 잡고 싶은 시니어 개발자.
Core Mechanics
- ftape는 1990년대 QIC-80 테이프 드라이브를 Linux에서 읽기 위한 커널 드라이버인데, 2000년경 이후 유지보수가 중단되면서 커널에서 삭제됐다. 이 드라이버 없이는 CentOS 3.5 같은 고대 Linux에서만 테이프를 읽을 수 있었다.
- QIC-80 테이프 드라이브는 별도 SCSI 어댑터 대신 플로피 컨트롤러에 연결하는 구조라, BIOS가 인식하지 못하고 소프트웨어가 직접 하드웨어 I/O 포트와 인터럽트를 제어해야 하는 복잡한 비표준 프로토콜을 사용한다.
- 저자는 Claude Code에 '이 드라이버를 커널 2.4에서만 빌드 가능한데, 최신 커널에서도 빌드되게 현대화해달라'고 요청했고, 여러 차례 반복 끝에 실제로 동작하는 커널 모듈을 얻었다.
- 핵심 성공 요인은 저자가 이미 커널 드라이버와 테이프 드라이브 하드웨어에 대한 깊은 도메인 지식을 갖고 있어서, AI 출력물의 품질을 판단하고 올바른 방향으로 유도할 수 있었다는 점이다.
- 저자는 드라이버를 커널 트리 안에 통합하지 않고 별도 외부 모듈(out-of-tree module)로 빌드하는 방식을 선택했는데, 이는 AI가 생성한 코드의 품질에 대한 건전한 회의감 때문이다.
- 2.4 커널에서 최신 커널까지 약 20년치 API 변경(메모리 관리, 인터럽트 처리, 모듈 시스템 등)을 한꺼번에 포팅해야 하는 작업이라, 사람이 수동으로 하면 수일~수주 걸릴 수 있는 작업을 AI가 크게 단축시켰다.
- 이 사례는 AI가 '코딩을 모르는 사람이 바이브코딩하다 문제를 만드는' 시나리오가 아니라, 전문가가 자신의 기술을 증폭시키는 도구로 활용한 대표적 성공 사례로 평가받고 있다.
Evidence
- 전문가의 도구로서의 AI라는 점에 폭넓은 공감이 있었다. '프레임워크를 잘 아는 분야에서 보일러플레이트를 빠르게 처리하거나, 새 프레임워크에 빠르게 온보딩하는 두 가지 시나리오에서 확실한 생산성 향상이 있다'는 의견이 많았다. Claude Code로 100시간 이상 작업해보지 않으면 현재 AI의 실제 능력을 정확히 파악하기 어렵다는 지적도 있었다.
- 실제 적용 사례로, 한 개발자는 Langroid 프레임워크를 Pydantic V1에서 V2로 대규모 마이그레이션하는 작업을 Claude Code로 수행했고, 또 다른 개발자는 Zed 에디터의 tree-sitter 문법 버그를 Claude Code가 30분간 작업하는 동안 본인은 5분만 투입해서 PR까지 올렸다고 공유했다.
- '도메인 지식 없이 프롬프트를 작성하면 모호한 부분을 LLM이 임의로 채우게 되고, 그게 바로 버그가 숨는 지점'이라는 중요한 반론도 있었다. AI가 force multiplier인 만큼, 기반 지식이 없으면 오히려 위험할 수 있다는 양면성을 지적한 것이다.
- Linux 커널의 안정적인 ABI가 없어서 오래된 드라이버가 계속 깨진다는 구조적 문제를 지적하는 의견도 있었다. Windows처럼 15년 된 드라이버도 그대로 쓸 수 있는 호환성이 있었다면 이런 포팅 작업 자체가 불필요했을 것이라는 아쉬움이다.
- 한 오픈소스 프로젝트(GoToSocial)에서는 AI 도구를 사용해 얻은 정보로 이슈에 댓글을 달거나 PR을 보내는 것 자체를 코드 오브 컨덕트로 금지하고 있다는 사례가 공유되면서, AI 활용에 대한 오픈소스 커뮤니티의 온도차가 드러났다.
How to Apply
- 유지보수가 중단된 레거시 C 코드(커널 모듈, 오래된 라이브러리 등)를 최신 환경으로 포팅해야 할 때, Claude Code에 구체적인 맥락(타겟 API 버전, 현재 에러 메시지 등)을 제공하면서 반복적으로 빌드-수정 사이클을 돌리면, 수동 포팅 대비 작업 시간을 크게 줄일 수 있다.
- 자신이 잘 아는 도메인의 보일러플레이트 코드(벤치마크, 테스트 하네스, 설정 파일 등)를 AI에게 맡기고, 핵심 로직과 코드 리뷰에 집중하는 워크플로우를 도입하면 생산성을 높일 수 있다. 단, 생성된 코드의 정확성을 판단할 수 있는 도메인 지식이 전제다.
- 익숙하지 않은 대규모 오픈소스 코드베이스에서 특정 기능이 어디에 구현되어 있는지 탐색할 때, Claude Code를 코드 검색 도구로 활용하면 코드 구조 파악 시간을 단축할 수 있다. 실제로 tree-sitter 문법 수정이나 CoMaps 기여 사례에서 효과가 입증됐다.
- 대규모 마이그레이션(프레임워크 버전 업그레이드, 언어 전환 등) 작업 시, 먼저 설계와 마이그레이션 계획을 직접 수립한 후 반복적인 코드 변환 작업을 AI에 위임하면, Pydantic V1→V2 마이그레이션 사례처럼 혼자서는 시도하기 어려웠던 작업도 실행 가능해진다.
Terminology
ftapeLinux에서 플로피 컨트롤러에 연결된 테이프 드라이브를 제어하기 위한 커널 드라이버. 2000년경 이후 유지보수 중단.
QIC-801990년대 인기 있던 테이프 백업 규격. 플로피 컨트롤러를 통해 연결하는 저가형 백업 매체.
out-of-tree moduleLinux 커널 소스 트리에 포함되지 않고 별도로 빌드·관리되는 커널 모듈. 커널 업데이트와 독립적으로 배포 가능.
tree-sitter소스 코드를 파싱해서 구문 트리를 만들어주는 도구. 에디터의 문법 하이라이팅이나 코드 분석에 사용된다.
커널 ABI커널이 외부 모듈에 제공하는 함수·자료구조의 호출 규약. Linux는 안정적 ABI를 보장하지 않아서 커널 버전이 바뀌면 모듈 코드도 수정해야 한다.