정보공간_1

[3기 강북 김승현] Linux 2.6 Device Driver 개발환경 구축 본문

IT 놀이터/Elite Member Tech & Talk

[3기 강북 김승현] Linux 2.6 Device Driver 개발환경 구축

알 수 없는 사용자 2013. 1. 28. 15:34

안녕하세요. 강북멤버십 21-1기 김승현입니다.

저는 이번에 Linux 2.6 Device Driver 개발 환경 구축에 대해 이야기 하고자 합니다.

이번 포스트에서는 gcc 설치와 같은 개발환경 같은 구축을 말하는 것이 아닌,

커널소스에 어떻게 모듈을 추가 할 수 있는지에 대해서 본격적으로 탐구 해보고자 합니다.


1. 원하는 소스 폴더에 드라이버 추가

원하는 드라이버 모듈 파일을 작성하고, 원하는 폴더에 드라이버 소스파일을 추가한다.

필자 같은 경우에는, 가상 키보드 드라이버를 개발 하는 중이었으므로,

drivers/input/keyboard 폴더에 파일을 추가하였다.


2. Kconfig 수정

Kconfig 파일은, 나중에 커널 configure 을 할 때 참고 하는 파일로써, 이 파일을 수정해야 나중에

make menuconfig에 자신이 만든 드라이버 파일이 나오게 된다.

아까 드라이버를 추가한 폴더의 Kconfig 파일을 다음 그림 처럼 임의로 수정한다.


여기서 주의 할점이 있는데, tab indent 를 잘 맞춰주지 않으면 나중에

make가 안되는 대참사가 발생하므로, 탭같은 것을 다른것과 똑같이 맞춰주어야한다.


3. Makefile 수정

KConfig를 수정하고 난 후, Makefile을 수정하여 Make 할 때, 아까 만든 드라이버 모듈이

Build과정에 포함 될 수 있게 한다.



앞에 CONFIG_가 저절로 붙으니, 다른것처럼 저렇게 작성하면 된다.


4. make menuconfig

make menuconfig에서 drivers 탭에서 아까 만든 드라이버를 최종 확인 해본다. 여기서 *로 꼭 체크를 해놓는다.



5. make

make명령을 실행해서, 커널을 빌드하고 bzimage 형태로 만들어서 

해당 커널 이미지로 부팅하여, kprintf 등을 통해 드라이버 모듈 로드를 확인 해보면 된다.