Linux-Device-Driver
현재 Linux 7.2.x를 대상으로 하는 리눅스 장치 드라이버 예제들입니다.
참고: 이 프로젝트 유지보수에 지연된 점 사과드립니다.
저장소 레이아웃
docs/: 학습 순서에 따른 튜토리얼 챕터.
examples/: 커널 모듈 예제 및 사용자 공간 테스트 프로그램.
tools/: 작업 공간 스크립트, QEMU 패치 및 도구 테스트.
튜토리얼 체크아웃은 런타임 작업 공간(LDD_ROOT)과 별개입니다.
작업 공간을 생성하고 헬퍼 스크립트를 설치하려면 작업 공간 설정부터 시작하세요.
시작 전
현재 테스트 기준선:
- 커널: Linux 7.2.x.
- 호스트 시스템: Fedora release 44 (Forty Four).
다른 커널 버전 및 호스트 배포판은 테스트되지 않았습니다.
KERNELDIR 환경 변수를 리눅스 커널 소스 디렉터리에 설정하고 로컬 셸에 내보내세요.
export KERNELDIR=/path/to/kernel/source/
이 환경 변수는 주로 Makefile에서 드라이버가 빌드되는 커널 소스 트리를 결정하는 데 사용됩니다.
예제들
드라이버 예제는 examples/에 있습니다. 번호가 매겨진 디렉터리는 학습 순서를 유지하며, rbtree는 보충 예제입니다.
KERNELDIR을 설정한 후 예제를 빌드하려면 해당 디렉터리로 이동하세요:
cd examples/01_hello_world
make
소개
이 저장소는 학습 및 공유 목적으로 리눅스 장치 드라이버(LDD)의 기본 예제들을 시연합니다.
이 저장소의 일부 예제들은 책인 LDD3(Linux Device Drivers, Third Edition)에서 발췌되었으며, 나머지 예제들은 중요한 데이터 구조나 세부 사항을 설명하는 데 필요한 부분에 대해 제가 직접 작성했습니다.
LDD3는 Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman이 저술한 훌륭한 책이며, 이 모든 작가분들의 훌륭한 작업에 진심으로 감사를 표합니다.
LDD3는 온라인에서 이용 가능하며, [https://lwn.net/Kernel/LDD3/]에서 PDF 사본을 요청할 수 있습니다. 이 책은 여전히 Linux 장치 모듈 개발에 참고하기 좋은 훌륭한 자료입니다. 하지만 출판된 지 오래되어(2005년 발행), 일부 API와 데이터 구조는 최초 출판 이후 크게 변경되었습니다.
LDD3의 기반이 되는 Kernel 2.6.10과 비교하여, 저는 모든 예제를 2020년 12월에 출시된 최신 Kernel 버전 5.10용으로 다시 작성했습니다. 커널 버전 외에도 하드웨어 역시 최근 몇 년 동안 많이 발전했습니다. LDD3에서 I/O 작업의 예시로 사용되었던 병렬 포트는 현재 어떤 컴퓨터에서도 찾아보기 어려울 정도입니다. 그래서 저는 이러한 예제들을 QEMU(범용 오픈 소스 머신 에뮬레이터 및 가상화 도구) 가상 머신으로 옮겼으며, 이곳에서는 편리한 디버깅을 위해 가상 병렬 포트 장치가 구현되어 있습니다.
이것은 제 프로젝트 전체의 시작점이며, 제가 쓴 책을 읽는 여정을 즐기시길 바랍니다.
대단히 감사합니다.
Douglas 드림.
라이선스
d0u9의 Linux-Device-Driver는 GNU General Public License, version 2에 따라 라이선스가 부여되었습니다.
¶ 끝
[https://lwn.net/Kernel/LDD3/] : https://lwn.net/Kernel/LDD3/