kernel module이란


커널에 동적으로 삽입,삭제할 수 있는 코드들의 묶음을 말한다.

모듈을 사용하는 이유는, 커널에 코드를 삽입하려면 코드를 삽입한 후에 컴파일을 한후에 재부팅을 해야 한다. 하지만 모듈을 사용한다면, insmod명령어 한 줄로 간단하게 코드를 삽입 시킬 수 있다.


lsmod : 현재 사용중인 모듈을 보여주는 명령어이다.



insmod : 모듈을 삽입하는 명령어.


rmmod : 모듈을 삭제한다.


모듈을 빌드 하기 위해서는 .c 파일과 함께 makefile도 만들어 주어야 한다.


KERNELDIR 에는 커널소스의 generic 헤더가 들어가야 하기 때문에, 현재 커널버전에 맞는 정확한 심볼릭 링크를 가지고 있는 build로 링크를 걸어준다.

obj-m 은 타겟이 되는 소스파일을 가르키는 것. 하나일때는 .o로 사용해도 상관없지만, 2,3개 이상일때는

모듈이름.objs := 1.c 2.c 와 같이 해주어야 함.

default 와 clean 밑에 명령어를 작성할때는 항상 탭을 해주어야 함.

저장한 후에 Makefile이 있는 곳에서 Make명령어를 실행시킨다.



QM_MODULES: Function not implemented 


라는 메세지는 모듈 기능을 지원하지 않게 커널이 빌드되어 있기 때문에 발생한다.

Make menuconfig에서 설정을 바꿔주면 된다.

'System > Kernel' 카테고리의 다른 글

Kernel 빌드 과정  (0) 2012.06.05

 

커널 2.4버전에 해당.

2.6이상부터는

[make dep] - [make clean] - [make bzImage] - [make modules] 를 make로 통합시킴.

 

tar.bz2 압축해제 방법:

 

1. tar xvfj *.tar.bz2

 

2. bzip2 -d *.tar.bz2

   tar xvf *.tar

j명령어를 사용하면 압축을 풀 소스가 bzip2로 압축된 것을 먼저 풀라는 뜻이다.

 

Kernel 2.4.27  버전에서 2.6.14.6  버전을 빌드하려했으나 자꾸 에러먹고 2.4.32 버전을 깐 후에 까니까 언제그랬냐는 듯이 잘 돌아간다. 왜그런지는 좀 찾아봐야할듯 ㅠㅠ

 

'System > Kernel' 카테고리의 다른 글

Kernel module ?  (0) 2012.06.07

+ Recent posts