
FreeBSD 디바이스 드라이버 서적
첫걸음부터 커널 마스터까지
에드손 브란디 저 · 버전 2.0 (2026년 4월)
FreeBSD Device Drivers: From First Steps to Kernel Mastery는 무료 오픈소스 책으로, "커널 코드를 한 번도 작성해 본 적 없는" 상태에서 "프로덕션 품질의 FreeBSD 드라이버를 작성, 디버깅, 제출할 수 있는" 수준까지 안내합니다. 참고서라기보다는 안내 과정에 가까우며, 38개의 장, 6개의 부록, 그리고 실제 FreeBSD 14.x 시스템에서 컴파일되어 로드되는 수십 개의 실습 랩으로 구성되어 있습니다.
이 책은 이미 자격을 갖춘 독자보다는 배우려는 의지가 있는 독자를 대상으로 합니다. 유닉스 기초와 C 언어부터 시작하여, 커널이 요구하는 모든 개념을 단계별로 설명한 후에야 드라이버 개발의 문을 엽니다. DMA, 인터럽트, PCI 작업에 도달할 즈음에는 어휘가 강요된 것이 아니라 자연스럽게 습득된 느낌이 들 것입니다.
"커널 프로그래밍은 여전히 프로그래밍일 뿐이며, 단지 더 명시적인 규칙, 더 큰 책임, 그리고 약간 더 강력함을 가질 뿐입니다. 이것을 이해하면 두려움은 흥분으로 바뀝니다." (1장에서)
이미 훌륭한 FreeBSD 커널 참고 자료가 있습니다. man 9, 아키텍처 핸드북, Newbus 논문 등이 그 예입니다. 그러나 다음을 충족하는 단일 텍스트는 없었습니다:
myfirst 드라이버는 장을 거듭하며 진화하여 동기화, 하드웨어 접근, 인터럽트, DMA를 차례로 획득합니다. 여러분이 직접 동일한 코드가 성숙해가는 모습을 보게 됩니다.이 책은 서로를 기반으로 하는 일곱 개의 파트로 구성되어 있습니다:
| 파트 | 제목 | 주요 내용 |
|---|---|---|
| 1 | 기초: FreeBSD, C, 그리고 커널 | 랩 설정, 유닉스, 커널 작업을 위한 C, 드라이버 해부학 |
| 2 | 첫 번째 드라이버 구축 | 문자 드라이버, 장치 파일, 읽기/쓰기, 입출력 |
| 3 | 동시성 및 동기화 | 스레드, 뮤텍스, 조건 변수, 타이머, 태스크 큐, 세마포어 |
| 4 | 하드웨어 및 플랫폼 수준 통합 | PCI, 인터럽트, MSI/MSI-X, DMA, 전원 관리 |
| 5 | 디버깅, 도구, 실제 사례 | 트레이싱, KGDB, 고급 디버깅, 성능 튜닝 |
| 6 | 전송별 드라이버 작성 | USB, 직렬, 스토리지/VFS, 네트워크 드라이버 |
| 7 | 마스터리 주제: 특수 시나리오 및 에지 케이스 | 이식성, 가상화, 보안, 임베디드, 리버스 엔지니어링, 업스트림 제출 |
마지막까지 마치면 직접 커널 모듈을 작성하여 로드하고, 문자 드라이버를 구축하고, 실제 인터럽트와 DMA를 처리하고, 커널 패닉을 디버깅하고, 부하에서 드라이버를 프로파일링하고, 작업을 FreeBSD 프로젝트에 기여하는 모든 단계를 경험하게 됩니다.
| 페이지 수 | 4,500+ |
| 장 | 38 |
| 부록 | 6 |
| 읽기 시간 | ~100시간 |
| 랩 시간 | ~100시간 |
| 총 학습 시간 | ~200시간 (주 5시간 기준 약 6개월) |
| 대상 FreeBSD 릴리스 | 14.3 |
| 언어 | 영어(원본) · 브라질 포르투갈어(AI 번역) · 스페인어(AI 번역) |
| 형식 | PDF · EPUB · HTML · 마크다운 소스 |
권장 속도는 주당 약 5시간 공부로 일주일에 한 장입니다. 이 일정을 따르면 한 학기 안에 책 전체를 마칠 수 있습니다. 일부 장(특히 C에 관한 4장과 파트 4의 하드웨어 장)은 자연스럽게 여러 주에 걸쳐 진행됩니다.
랩은 강력히 권장됩니다. 커널 프로그래밍은 근육 기억을 요구하는 분야가 거의 없을 정도로 중요합니다. 동일한 연결 패턴, 동일한 정리 체인, 동일한 잠금 형태가 장을 넘나들며 반복됩니다. 이러한 패턴을 직접 입력하고, 컴파일하고, 실행 중인 커널에 로드하고, 의도적으로 실패하는 모습을 지켜보는 것이 이를 내면화하는 가장 효과적인 방법입니다.
이미 C, 유닉스, 운영 체제 커널의 일반적인 구조를 알고 있다면 파트 1 전체에 걸쳐 제공되는 빠른 패스 노트가 어떤 부분을 주의 깊게 읽고 어떤 부분을 훑어봐도 되는지 알려줍니다.
버전 2.0은 이제 릴리스 페이지에서 세 가지 언어와 세 가지 형식으로 제공됩니다:
| 언어 | EPUB | HTML | |
|---|---|---|---|
| 영어(원본) | EPUB | HTML | |
| 포르투갈어(브라질), AI 번역 | EPUB | HTML | |
| 스페인어, AI 번역 | EPUB | HTML |
마크다운 소스는 content/ 디렉토리에서 직접 탐색하거나 scripts/build-book.sh 스크립트를 사용하여 책을 직접 빌드할 수도 있습니다.
영어 버전은 책의 원본이자 권위 있는 버전입니다. 브라질 포르투갈어 및 스페인어 판은 AI를 사용하여 번역되었으며 아직 완전한 인간 기술 검토를 거치지 않았습니다. 더 많은 독자들이 자료에 접근할 수 있도록 게시되었지만, 번역 과정에서 발생한 오역, 어색한 표현, 기술적 부정확성이 있을 수 있습니다.
번역판에서 명확하지 않거나 일관성이 없거나 기술적으로 의심스러운 부분이 있으면 진실의 원천으로 영어 버전을 참조하십시오. 번역 검토 및 개선에 대한 도움은 환영합니다(아래 기여 참조).
이것은 매우 큰 책의 드래프트 릴리스입니다. 몇 가지 주의할 사항이 있습니다:
content/에서 해당 파일을 열어 깔끔한 버전을 확인하십시오.## Contributing
모든 종류의 기여를 환영합니다. 여기에는 FreeBSD 개발자와 학습자 모두의 수정, 설명, 새로운 예제, 번역, 리뷰가 포함됩니다.
### 기여 방법
- **콘텐츠:** 새 장(chapter) 추가, 기존 자료 개선
- **기술 리뷰:** FreeBSD 14.x 기준 정확성 검토
- **번역 리뷰:** AI 번역된 **pt_BR** 및 **es_ES** 판본 검토 및 개선 지원; 원어민으로 FreeBSD/커널 경험이 있는 분 특히 환영
- **새 번역:** 책을 다른 언어로 번역하는 데 도움
- **코드:** 예제, 빌드 스크립트, 도구 개선
- **이슈:** 버그, 사실 오류, 불명확한 구절, 포맷 문제 신고
### 이슈 보고
이슈를 제출할 때는 다음을 포함해 주세요: