v리눅스 커널 모듈
ü명령에 의하여 리눅스커널에 적재하거나 제거할 수 있는 실행가능한 프로그램
v모듈 프로그램
ü커널의 일부 기능을 커널에서 가져와서 모듈로 구현
ü기능이 필요할 때만 메모리에 적재
v모듈 소스 형식 (Kernel Ver. 2.6)
=====================================================
#include <linux/init.h>
#include <linux/module.h>
#incldue <linux/kernel.h>
#include <linux/module.h>
#incldue <linux/kernel.h>
int xxx_init(){
...
printk("Hello World!\n");
...
printk("Hello World!\n");
...
}
void xxx_exit(){
...
printk("Good-Bye World!\n");
...
printk("Good-Bye World!\n");
...
}
module_init( xxx_init );
module_exit( xxx_exit);
module_init( xxx_init );
module_exit( xxx_exit);
MODULE_LICENSE( "GPL" );
=====================================================
여기서 xxx는 모듈프로그램 이름(사용자가 임의로 지정가능)
v모듈프로그래밍 Makefile 생성 방법
=====================================================
KERNELDIR = /lib/module/$(shell uname -r)/build
obj-m := 소스파일명.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.ko
rm -rf *.mod.*
rm -rf .*.cmd
rm -rf .*.cmd
rm -rf *.o
=====================================================
처음에는 "obj-m := 소스파일명.o" 이부분때문에 object파일을 만들어야 하는 줄 알고,
한참 해맸는데 알고보니 "소스파일명.c" 소스파일을 가지고, 그냥 make 실행시키면 자동으로
"소스파일명.o" 파일과, "소스파일명.ko" 파일을 만들어준다.
처음에는 "obj-m := 소스파일명.o" 이부분때문에 object파일을 만들어야 하는 줄 알고,
한참 해맸는데 알고보니 "소스파일명.c" 소스파일을 가지고, 그냥 make 실행시키면 자동으로
"소스파일명.o" 파일과, "소스파일명.ko" 파일을 만들어준다.
v커널용 출력함수 printk()
ü커널용 출력함수로써 printf()와 유사하다.
ü커널 프로그래밍 디버깅시 유용하게 쓰임.
ü단, printk()함수를 사용할 경우, 화면에 뿌려주는게 아니라 시스템로그에 남게 된다. (dmesg)
v모듈 유틸리티
üinsmod : 모듈을 커널에 적재한다. (insert module)
ürmmod : 커널에서 모듈을 제거한다. (remove module)
ülsmod : 커널에 적재된 모듈 목록을 보여준다 (list module)
üdepmod : 모듈간 의존성 정보를 생성한다. (depend module)
ümodprobe : depmod에 의해 갱신된 모듈을 찾아 적재한다. (module probe)
ülsmod : 커널에 적재된 모듈 목록을 보여준다 (list module)
üdepmod : 모듈간 의존성 정보를 생성한다. (depend module)
ümodprobe : depmod에 의해 갱신된 모듈을 찾아 적재한다. (module probe)
'Linux' 카테고리의 다른 글
CentOS 6.3 커널 컴파일 하기 (0) | 2014.11.29 |
---|---|
vi 편집기 설정 방법 (0) | 2014.11.29 |
Linux 환경 CentOS 6.3 root 비밀번호 분실 대처 방법 (0) | 2014.11.29 |
문자 디바이스 드라이버 (Device Driver)를 이용한 모듈프로그래밍(Module Programming) 입/출력 (0) | 2014.11.29 |
Linux USB 마운트 방법 (0) | 2014.11.29 |