티스토리 뷰

Linux

LKM (Loadable kernel module)

덕쑤 2013. 2. 5. 11:10

LKM 

Loadable kernel module

모듈 프로그래밍


기초 정보

- 모듈은 커널에 코드를 삽입할 수 있데 해준다.

- 모듈은 원하는 프로그램을 작성하고, 컴파일만 하면된다.

- 일반적인 C프로그램과 절차는 같지만 main()함수가 없다.

- 표준 C라이브러리를 사용할 수 없다.

- 실수 연산을 할 수 없다는 제약이 있다.

- 디바이스 추가하는 방법을 사용한다.


개발 절차

1. 모듈 프로그램 작성

2. 모듈 프로그램 컴파일 

3. 모듈 로드 (insmod 명령)

4. 로드된 모듈확인 (lsmod 명령)

5. 모듈 제거 (rmmod 명령) 




모듈 프로그램의 구성

모듈이 커널에 올라가기 앞서 모듈을 로드할때 수행되는 최고하 루틴(init_module)이 있고 

모듈이 재거할때 사용되는 종료 루틴(exit_module)이 있다.


모듈 프로그램의 예제

※ 리눅스 커널 2.6이하와 이상 버전에 따라 모듈 프로그래밍 양식이다르다 본 자료는 2.6 이상 버전을 설명하고있다.

 1. #include <linux/init.h>

  커널 2.6에서만 사용되며.. module_init(), module_exit() 매크로 사용을 위해 선언

2. #include <linux/kernel.h>

  커널과 관련된 자료 구조와 printk() 함수등이 정의

3. #include <linux/module.h>

  모듈과 관련된 자료구조와 매크로 선언


5. 모듈이 커널에 적재 될때사용.

15. Printk 함수에 관하여

  커널레벨에서 printk() 함수를 사용

  # dmsag | tail -n2 // 커널 메세지 마지막 2개 보여주겠다는 명령어

20. 적재된 모듈을 해제할 때 사용.

 

25 & 26. 함수 등록

28. GPL 라이센스로 등록


Makefile





공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함